2009-10-26 25 views
1

几年前,我有一个用Wix 2编写的安装脚本。现在我需要添加两个64位组件。将一个64位DLL复制到system32文件夹,将另一个b4位EXE复制到ProgramFiles。修改existsinig WIX 2脚本以添加64位组件

安装程序需要创建注册表项。目前它使用一个元素来编写密钥,并使用自定义操作(在32位MSI dll中)编写序列号。

的关键必须是64位的EXE访问。

是否有可能在一个MSI办?另外如何创建一个条件,只有在系统为64位时复制64位文件?

回答

1

MSI不允许在相同的MSI安装32位和64位的部件。您必须为两种体系结构创建单独的msi。

+0

要稍微精确些,它不允许在32位MSI中安装64位组件。它愿意在64位MSI中安装这两种组件,但这些组件不会在32位系统上运行。 – 2009-10-27 14:12:08

1

为了安装64位组件,所述MSI需要被标记为64位 - 否则,文件系统和注册表的路径将被重定向。除了添加64位属性外,32位和64位软件包应显示为不同的产品;即您应该创建新的产品和升级代码。

我觉得有可能是使用维克斯2创建64位MSI的问题,所以你可能需要升级到维克斯3.x的

因为你需要为32位与64位Windows中两个MSI文件,你可以很容易地防止被安装在64位PC上的32位文件将不包括他们在64位安装程序。如果您需要x86和x64的一个安装程序可执行文件,则需要使用引导程序来选择要运行的MSI。我不知道是否从WiX发行版的burn.exe可以做到这一点。

处理源布局的一种方法是使用一个具有条件的主控WiX文件,该文件根据目标架构选择要构建的特性,然后获取链接到的特定于架构的模块。您可以找到在https://svn.bluestop.org/viewvc/repos/sctpDrv/wix/的解决方案的例子。请注意,它仅支持x86和x64,而不支持Itanium(又名Intel64)。

+0

我不认为你还有这个示例代码,布鲁斯?上述链接现在已被打破。 – 2012-01-16 17:33:55

+1

James:代码已移至BitBucket,现在可以在http://code.bluestop.org/sctpdrv/src/a4337be7f28b/wix找到。 – BCran 2012-01-25 23:02:33