我使用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>
如何添加条件以避免两个不同的安装程序?
答案 0 :(得分:2)
您只需要制作32位安装包。就这样。系统通过registry redirector将为您处理单独的32/64位注册表视图的所有详细信息。
32位软件包在安装在64位系统上时由32位进程处理,并受注册表重定向的影响。重定向器将安排将密钥写入注册表的32位视图。
您不应该对Wow6432Node
字符串进行硬编码。万一你错过了那一点,让我再说一遍。您不应该对Wow6432Node
字符串进行硬编码。
所以,总结一下:
Software\Sparx Systems\EAAddins\AdminAddins
作为注册表项。