部署使用 Visual Studio 创建的 VSTO 外接程序时,必须创建一组特定的注册表项。 这些注册表项提供的信息使 Microsoft Office 应用程序能够发现和加载 VSTO 外接程序。
适用于: 本主题中的信息适用于 VSTO 外接程序项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
注释
有兴趣开发跨多个平台扩展 Office 体验的解决方案? 查看新的 Office 加载项模型。 与 VSTO 外接程序和解决方案相比,Office 外接程序占用空间较小,可以使用几乎任何 Web 编程技术(如 HTML5、JavaScript、CSS3 和 XML)生成它们。
生成项目时,Visual Studio 会在开发计算机上创建这些注册表项。 这有助于轻松运行和调试 VSTO 外接程序。 使用 ClickOnce 部署 VSTO 外接程序,会在最终用户计算机上自动创建注册表项。
有关如何使用 Windows Installer 部署 VSTO 解决方案的详细信息,请参阅 使用 Windows Installer 部署 VSTO 解决方案。
有关 VSTO 外接程序加载过程中注册表项的使用方式的详细信息,请参阅 VSTO 外接程序的体系结构。
注释
在本主题中,文本 外接程序 ID 表示 VSTO 外接程序的唯一 ID。 默认情况下,ID 是 VSTO 外接程序程序集的名称。
为当前用户还是所有用户注册 VSTO 外接程序
安装 VSTO 外接程序后,可以通过两种方式注册它:
仅适用于当前用户(VSTO 外接程序仅适用于安装加载项时登录到计算机的用户)。 在这种情况下,注册表项是在 HKEY_CURRENT_USER下创建的。
对于所有用户(也就是说,登录到计算机的任何用户都可以使用 VSTO 外接程序)。 在这种情况下,注册表项在 HKEY_LOCAL_MACHINE下创建。
使用 Visual Studio 创建的所有 VSTO 外接程序可以注册为当前用户。 但是,VSTO 外接程序只能在某些情况下为所有用户注册。 这些方案取决于计算机上的 Microsoft Office 版本以及 VSTO 外接程序的部署方式。
部署类型
如果使用 ClickOnce 部署 VSTO 外接程序,则只能为当前用户注册 VSTO 外接程序。 这是因为 ClickOnce 仅支持 在HKEY_CURRENT_USER下创建密钥。 如果要将 VSTO 外接程序注册到计算机上的所有用户,则必须使用 Windows Installer 部署 VSTO 外接程序。 有关这些部署类型的详细信息,请参阅 使用 ClickOnce 部署 Office 解决方案 , 并使用 Windows Installer 部署 Office 解决方案。
注册表项
所需的 VSTO 外接程序注册表项位于以下注册表项下,具体的根键为HKEY_CURRENT_USER或HKEY_LOCAL_MACHINE,这取决于安装是针对当前用户还是所有用户。
| Office 应用程序 | 配置路径 |
|---|---|
| Visio | Root\Software\Microsoft\Visio\Addins\add-in ID |
| 所有其他 | Root\Software\Microsoft\Office\Office 应用程序名称\Addins\add-in ID |
注释
如果安装程序面向 64 位 Windows 上的所有用户,则建议它包括两个注册表项,一个位于 HKEY_LOCAL_MACHINE\Software\Microsoft 下,另一个位于 HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft hive 下。 这是因为用户可以在计算机上使用 32 位或 64 位版本的 Office。
如果安装程序面向当前用户,则无需安装到 WOW6432Node,因为共享 HKEY_CURRENT_USER\Software 路径。
有关详细信息,请参阅 注册表中的 32 位和 64 位应用程序数据。
下表列出了此注册表项下的条目。
| 项 | 类型 | 价值 |
|---|---|---|
| 说明 | REG_SZ | 必填。 VSTO 外接程序的简要说明。 当用户在Microsoft Office 应用程序的“选项”对话框的“加载项”窗格中选择 VSTO 外接程序时,将显示此说明。 |
| FriendlyName | REG_SZ | 必填。 MICROSOFT Office 应用程序中 COM 加载项对话框中显示的 VSTO 外接程序的描述性名称。 默认值为 VSTO 外接程序 ID。 |
| LoadBehavior | REG_DWORD | 必填。 一个值,指定应用程序何时尝试加载 VSTO 外接程序和 VSTO 外接程序的当前状态(已加载或卸载)。 默认情况下,此条目设置为 3,指定在启动时加载 VSTO 外接程序。 有关详细信息,请参阅 LoadBehavior 值。 注意:如果用户禁用 VSTO 外接程序,该作会修改HKEY_CURRENT_USER注册表配置单元中的 LoadBehavior 值。 对于每个用户,HKEY_CURRENT_USER hive 中 LoadBehavior 值的值将替代在 HKEY_LOCAL_MACHINE hive 中定义的默认 LoadBehavior。 |
| 清单 | REG_SZ | 必填。 VSTO 外接程序的部署清单的完整路径。 路径可以是本地计算机、网络共享(UNC)或 Web 服务器(HTTP)上的位置。 如果使用 Windows Installer 部署解决方案,则必须将前缀 file:/// 添加到 清单 路径。 还必须将字符串 |vstolocal(即 | 的管道字符)追加到此路径的末尾。 这可确保解决方案从安装文件夹而不是 ClickOnce 缓存加载。 有关详细信息,请参阅 使用 Windows Installer 部署 Office 解决方案。 注意: 在开发计算机上生成 VSTO 外接程序时,Visual Studio 会自动将 |vstolocal 字符串追加到此注册表项。 |
Microsoft Outlook 窗体区域的注册表项
如果在适用于 Outlook 的 VSTO 外接程序中创建自定义窗体区域,则其他注册表项用于向 Outlook 注册窗体区域。 这些条目是在窗体区域支持的每个消息类的不同注册表项下创建的。 这些注册表项位于以下位置,其中根是HKEY_CURRENT_USER或HKEY_LOCAL_MACHINE。
Root\Software\Microsoft\Office\Outlook\FormRegions\message 类
与所有 VSTO 外接程序共享的其他注册表项一样,Visual Studio 会在生成项目时在开发计算机上创建窗体区域注册表项。 使用 ClickOnce 部署 VSTO 外接程序,会在最终用户计算机上自动创建注册表项。 使用 Windows Installer 部署 VSTO 外接程序时,必须将 InstallShield Limited Edition 项目配置为在最终用户计算机上创建注册表项。
有关窗体区域注册表项的详细信息,请参阅 指定窗体区域在自定义窗体中的位置。 有关 Outlook 窗体区域的详细信息,请参阅 “创建 Outlook 窗体区域”。
LoadBehavior 值
在 Root\Software\Microsoft\Office\application name\Addins\add-in ID 键下的 LoadBehavior 条目包含一个按位组合的值,这些值用于指定 VSTO 外接程序的运行时行为。 最低顺序位(值 0 和 1)指示 VSTO 外接程序当前是卸载还是已加载。 其他位指示应用程序何时尝试加载 VSTO 外接程序。
通常,在最终用户计算机上安装 VSTO 外接程序时, LoadBehavior 条目应设置为 0、3 或 16(以十进制为单位)。 默认情况下,Visual Studio 会在生成或发布 VSTO 外接程序时将 VSTO 外接程序的 LoadBehavior 条目设置为 3。
下表列出了 LoadBehavior 条目的所有可能值。 此表中的一些说明是指手动或以编程方式加载 VSTO 外接程序。 若要手动加载 VSTO 外接程序,请在应用程序中的 COM 外接程序对话框中选中 VSTO 外接程序旁边的复选框。 若要以编程方式加载 VSTO 外接程序,请将 Connect 表示 VSTO 外接程序的对象属性 COMAddIn 设置为 true。
| 值(以十进制为单位) | VSTO 外接程序状态 | VSTO 外接程序加载行为 | Description |
|---|---|---|---|
| 0 | 卸下 | 不自动加载 | 应用程序永远不会尝试自动加载 VSTO 外接程序。 用户可以尝试手动加载 VSTO 外接程序,也可以以编程方式加载 VSTO 外接程序。 如果 VSTO 外接程序已成功加载, LoadBehavior 值将保持 0,但 COM 外接程序对话框中 VSTO 外接程序的状态将更新,以指示 VSTO 外接程序已加载。 |
| 1 | 加载 | 请勿自动加载 | 应用程序永远不会尝试自动加载 VSTO 外接程序。 用户可以尝试手动加载 VSTO 外接程序,也可以以编程方式加载 VSTO 外接程序。 尽管 COM 加载项 对话框指示 VSTO 外接程序在应用程序启动后加载,但在手动或以编程方式加载 VSTO 外接程序之前,不会加载 VSTO 外接程序。 如果应用程序成功加载 VSTO 外接程序, LoadBehavior 值将更改为 0,并在应用程序关闭后保持为 0。 |
| 2 | 卸下 | 启动时加载 | 应用程序不会尝试自动加载 VSTO 外接程序。 用户可以尝试手动加载 VSTO 外接程序,也可以以编程方式加载 VSTO 外接程序。 如果应用程序成功加载 VSTO 外接程序, LoadBehavior 值将更改为 3,并在应用程序关闭后保持为 3。 |
| 3 | 加载 | 启动时加载 | 应用程序在应用程序启动时尝试加载 VSTO 外接程序。 这是在 Visual Studio 中生成或发布 VSTO 外接程序时的默认值。 如果应用程序成功加载 VSTO 外接程序, LoadBehavior 值将保持 3。 如果在加载 VSTO 外接程序时出错, LoadBehavior 值将更改为 2,并在应用程序关闭后保持为 2。 |
| 8 | 卸下 | 按需加载 | 应用程序不会尝试自动加载 VSTO 外接程序。 用户可以尝试手动加载 VSTO 外接程序,也可以以编程方式加载 VSTO 外接程序。 如果应用程序成功加载 VSTO 外接程序, LoadBehavior 值将更改为 9。 |
| 9 | 加载 | 按需加载 | 仅当应用程序需要 VSTO 外接程序时,才会加载它。 例如,当用户选择使用 VSTO 外接程序中的功能的 UI 元素(例如功能区中的自定义按钮)时。 如果应用程序成功加载 VSTO 外接程序, LoadBehavior 值将保持 9,但 COM 外接程序对话框中 VSTO 外接程序的状态会更新,以指示 VSTO 外接程序当前已加载。 如果在加载 VSTO 外接程序时出错, LoadBehavior 值将更改为 8。 |
| 16 | 加载 | 首次加载,然后按需加载 | 如果希望按需加载 VSTO 外接程序,请设置此值。 当用户首次运行应用程序时,应用程序将加载 VSTO 外接程序。 下次用户运行应用程序时,应用程序将加载由 VSTO 外接程序定义的任何 UI 元素。 但是,在用户选择与 VSTO 外接程序关联的 UI 元素之前,不会加载 VSTO 外接程序。 当应用程序首次成功加载 VSTO 外接程序时, LoadBehavior 值在加载 VSTO 外接程序时保持 16。 应用程序关闭后, LoadBehavior 值将更改为 9。 |