为64位和32位设置安装程序

时间:2014-06-26 07:32:31

标签: c# wix installer 32bit-64bit wix3.5

我使用WIX为DLL创建MSI安装程序。

我想制作一个允许在64位平台上安装程序的安装程序,就像在32位上一样。

我必须定义的注册表项对于32位和64位是不同的。

这是我必须创建密钥的条目,以防它是64位平台:

H_KEY_LOCALMACHINE\Software\Wow6432Node\Sparx Systems\EAAddins\AdminAddins

这是我必须创建密钥的条目,以防它是32位平台:

H_KEY_LOCALMACHINE\Software\Sparx Systems\EAAddins\AdminAddins   

这是在代码中定义注册表项的方式:

<Component Id="AdminAddinsRegEntries" Guid="8777A7AB-B147-4850-9F25-65011306E9C6" >
  <RegistryKey Root="HKLM" Key="Software\Wow6432Node\Sparx Systems\EAAddins\AdminAddins" Action="createAndRemoveOnUninstall">
     <RegistryValue Type="string" Value="AdminAddins.MyClass" />
  </RegistryKey>
</Component>

如何添加条件以避免两个不同的安装程序?

1 个答案:

答案 0 :(得分:2)

您只需要制作32位安装包。就这样。系统通过registry redirector将为您处理单独的32/64位注册表视图的所有详细信息。

32位软件包在安装在64位系统上时由32位进程处理,并受注册表重定向的影响。重定向器将安排将密钥写入注册表的32位视图。

您不应该对Wow6432Node字符串进行硬编码。万一你错过了那一点,让我再说一遍。您不应该对Wow6432Node字符串进行硬编码。

所以,总结一下:

  1. 制作32位软件包。
  2. 使用Software\Sparx Systems\EAAddins\AdminAddins作为注册表项。
  3. 让重定向器处理32/64位注册表视图详细信息。