首页 > 解决方案 > VSTO 插件是否需要向 Wow6432Node 添加注册表项?

问题描述

我有一个不会安装在 32 位机器上的 VSTO 插件。(安装时的错误弹出窗口是:“此处理器类型不支持此安装包。请联系您的产品供应商。”)插件使用 Installshield 进行安装。该应用程序使用“AnyCPU”构建。如果 installshield 中的任何内容引用 64 位,它似乎强制使用 64 位。(例如,我的插件有其描述、友好名称、负载行为和清单的注册表项。这些位于 HKLM/Software (64bit)/Wow6432Node/Microsoft/Office/Outlook/Addins/myAddin)我真的不知道是否这需要吗?

所以我的解决办法是有两个版本......其中一个没有任何 64 位注册表引用。

我将如何解决这个问题?我一直在玩弄放弃 Installshield LE 并与其他一些安装程序一起迁移到 vs2017 的想法......

标签: 64-bitvstoinstallshield

解决方案


我有一个不会安装在 32 位机器上的 VSTO 插件。

你的意思是插件不是由Office加载的吗?还是安装包本身无法安装?

我会假设插件没有加载。我不知道 installshield 如何控制包组件位数,但我会尝试提供可以应用于任何工具的答案,只要工具中可以配置以下选项即可。

使用安装 VSTO 插件的 MSI 软件包,您需要确保您的注册表项最终位于正确的注册表配置单元中,这取决于您安装的 Office 版本的位数,而不是操作系统之一。

因此,对于具有 Office x86 的计算机,您拥有以下注册表:

  • 在 x86 操作系统上:HKLM/Software/Microsoft/Office/Outlook/Addins/myAddin
  • 在 x64 操作系统和 32 位 Office 上:HKLM/Software/Wow6432Node/Microsoft/Office/Outlook/Addins/myAddin

上面的两条路径代表 MSI 中的单一配置。即,如果您创建一个标准 MSI,在 32 位机器上安装标准 x86 注册表项,则相同的 MSI 将自动重定向到 x64 机器的 Wow6432Node,如果该机器安装了 32 位办公室,一切都应该工作。

如果您有一台带有64 位办公室的 x64 机器,那么您需要在 Wow6432Node 之外强制安装该注册表,即直接在:HKLM/Software/Microsoft/Office/Outlook/Addins/myAddin

这也可以从 32 位 MSI 完成,如果您将注册表 MSI 组件标记为 64 位(不知道此选项在 IS 中的位置,但我相信您可以找到它)。这将强制操作系统为这些注册表项停止重定向到 Wow6432Node。并且 MSI 也应该在 32 位机器上工作,该标志将被忽略。

但是,您应该知道,在 32 位 MSI 包中将组件标记为 64 位会触发一些ICE 错误/警告

这些位于 HKLM/Software (64bit)/Wow6432Node/Microsoft/Office/Outlook/Addins/myAddin)

仅供参考,这是 64 位机器上的 32 位注册表区域,而不是64 位机器。只有 32 位应用程序可以从该位置读取注册表。


推荐阅读