繁体   English   中英

使安装程序同时支持64位和32位

[英]Make Installer for Both 64 and 32 bit

我使用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>

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

您只需要制作一个32位安装程序包。 就这样。 系统通过注册表重定向器将为您处理单独的32/64位注册表视图的所有详细信息。

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

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

因此,总结一下:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM