几年前我在Wix 2中编写了一个安装程序脚本。现在我需要添加两个64位组件。一个64位DLL要复制到system32文件夹,另一个b4位EXE要复制到ProgramFiles。
安装程序需要创建注册表项。目前它使用一个元素来写一个键,并使用一个自定义动作(在32位MSI dll中)来编写序列号。
64位EXE必须可以访问密钥。
是否可以在一个MSI中进行?另外,如何在系统为64位时创建仅复制64位文件的条件?
答案 0 :(得分:1)
msi不允许在同一个msi中安装32位和64位组件。您必须为两种体系结构创建单独的msi。
答案 1 :(得分:1)
为了安装64位组件,MSI需要标记为64位 - 否则,将重定向文件系统和注册表路径。除了添加64位属性外,32位和64位软件包应该显示为不同的产品;即你应该创建新的产品和升级代码。
我认为使用WiX 2创建64位MSI可能存在问题,因此您可能需要升级到WiX 3.x.
由于32位与64位Windows需要两个MSI文件,因此可以通过不将它们包含在64位安装程序中来轻松防止在64位PC上安装32位文件。如果您需要x86和x64的单个安装程序可执行文件,则需要使用引导程序来选择运行哪个MSI。我不知道来自WiX发行版的burn.exe是否可以做到这一点。
接近源布局的一种方法是使用具有条件的单个主WiX文件,该条件根据目标体系结构选择要构建的特征,然后具有链接的体系结构特定模块。您可以找到一个示例在https://svn.bluestop.org/viewvc/repos/sctpDrv/wix/处的这种解决方案。请注意,它仅支持x86和x64,而不支持Itanium(又称Intel64)。