Windows Installer中的32位填充程序和64位填充程序

时间:2016-05-15 22:42:27

标签: visual-studio-2010 windows-installer outlook-addin shim

我有一个VS2010项目,分别创建一个32位Shim和一个64位Shim。它是一个在.NET中开发的Outlook加载项(因此是shimming)。

随着不久前在Outlook中出现x64(从2010年开始),我们不断制作x86 Windows Installer文件和x64 Windows Installer文件。

我面临的真正问题是,当用户下载MSI文件时,他们中的许多人不知道他们的Outlook是什么位数。很多时候,他们安装了不正确的MSI版本,并且它没有加载到他们的Outlook中。

在Com Addins对话框中报告标准COM错误(未加载...运行时错误等)。

我想避免创建和部署2个单独的MSI文件......我是否有可能以某种方式拥有一个通用安装程序?用户只需下载单个MSI,软件即可安装/注册到相应的Program Files(x86)/Program Files

这可能吗?

我已经研究过WiX和InstallShield,但还不太热衷于与这些人合作。是否可以使用VS2010中内置的Windows Installer来实现我想要实现的目标?

2 个答案:

答案 0 :(得分:0)

您可以创建一个MSI安装程序 - 它可以是WiX,Windows Installer或其他任何东西。您只需添加一个自定义操作,您可以在其中检测Outlook位数并在计算机上注册正确的加载程序。有关详细信息,请参阅Windows Installer Setup With Custom Actions

答案 1 :(得分:0)

您仍然需要两个单独的MSI文件。参见:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367451(v=vs.85).aspx

特别是说32位软件包需要包含32位组件。

问题是您的下载程序/安装程序需要在下载之前检测系统上Outlook的位数。

您可以为Outlook加载项创建32位和64位合并模块,并在32位软件包中包含32位合并模块,并在32位和64位合并模块中包含您的64位设置,以便它注册两个位。如果用户从32位Outlook迁移到64位,则无需重新安装产品。

64位MSI无法安装在32位系统上,因此发生的错误必须是在64位Outlook系统上安装32位MSI。如果64位Outlook的检测机制可以作为启动条件包含在32位MSI中,则可以防止该错误。