问题描述
我的目标是为本地 PC 上的所有用户而不是当前用户安装 VSTO Outlook Addin。我使用了 Visual Studio 中的 Publish
方法,结果是 exe 文件,这意味着 ClickOnce
方法。 (不适用于所有人安装)
好吧,我开始研究我发现 Wix
。
我的第一个问题是,当我从 VSTO 插件从 Visual Studio 创建 Build 时,我有 2 个目录和 20 个文件,是否可以在 WIX 目录引用的 product.wxs
文件中分配目录?
第二个问题,当文件和目录“安装”到目标目录时,(例如程序文件)如何将 VSTO 分配给 Outlook?它是因为将 VSTO 添加到注册表 HKLM
?
我问我是否离我的目标更近了
解决方法
不确定我是否理解您的第一个问题,但无论如何我都会尝试回答。除了那些具有 bin/Release
扩展名的文件外,您必须带到用户 PC 的唯一文件是位于 *.pdb
文件夹下的文件。有两种方法可以将它们添加到安装中:
- 第一种方法是手动添加要包含在安装中的每个文件作为文件组件
Product.wxs
。您可以在他们的官方 tutorial 中找到一个很好的例子。 - 第二种方法是利用 Wix 工具集中的 harvest tool (Heat)。此工具可以在构建期间自动生成组件列表。
关于你的第二个问题。要使 Word 或 Outlook 看到您的加载项,您必须在安装过程中在 Windows 注册表中创建一个条目。例如,对于 Microsoft Word,您必须使用以下条目创建一个新键 HKLM\Software\Microsoft\Office\Word\Addins\MySuperAddOn
:
条目 | 类型 | 价值 |
---|---|---|
说明 | REG_SZ | 必填。 VSTO 插件的简要说明。当用户在 Microsoft Office 应用程序的“选项”对话框的“加载项”窗格中选择 VSTO 加载项时,将显示此说明。 |
友好名称 | REG_SZ | 必填。显示在 Microsoft Office 应用程序的 COM 加载项对话框中的 VSTO 加载项的描述性名称。默认值为 VSTO 插件 ID。 |
加载行为 | REG_DWORD | 必填。一个值,用于指定应用程序何时尝试加载 VSTO 插件以及 VSTO 插件的当前状态(已加载或已卸载)。默认情况下,此项设置为 3,它指定 VSTO 加载项在启动时加载。有关更多信息,请参阅 LoadBehavior 值。注意:如果用户禁用 VSTO 外接程序,该操作会修改 HKEY_CURRENT_USER 注册表配置单元中的 LoadBehavior 值。对于每个用户,HKEY_CURRENT_USER 配置单元中的 LoadBehavior 值会覆盖 HKEY_LOCAL_MACHINE 配置单元中定义的默认 LoadBehavior。 |
清单 | REG_SZ | 必填。 VSTO 外接程序的部署清单的完整路径。路径可以是本地计算机上的位置、网络共享 (UNC) 或 Web 服务器 (HTTP)。如果使用 Windows Installer 部署解决方案,则必须将前缀 file:/// 添加到清单路径。您还必须将字符串 |vstolocal (即管道字符 | 后跟 vstolocal )附加到此路径的末尾。这可确保您的解决方案是从安装文件夹加载的,而不是从 ClickOnce 缓存加载的。有关详细信息,请参阅使用 Windows Installer 部署 Office 解决方案。注意:在开发计算机上构建 VSTO 外接程序时,Visual Studio 会自动附加 |
您可能需要阅读 official documentation 以了解更多详情。
Wix 工具集也允许这样做。您必须在 RegistryKey
中声明 Product.wxs
组件。