【问题标题】:Modify existinig WIX 2 script to add 64-bit components修改现有 WIX 2 脚本以添加 64 位组件
【发布时间】:2009-11-13 02:06:11
【问题描述】:

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

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

密钥必须可供 64 位 EXE 访问。

是否可以在一个 MSI 中完成?还有在系统是64位时如何创建只复制64位文件的条件?

【问题讨论】:

    标签: winapi installation wix windows-installer


    【解决方案1】:

    msi 不允许在同一个 msi 中安装 32 位和 64 位组件。您必须为两种架构创建单独的 msi。

    【讨论】:

    • 更准确地说,它不允许在 32 位 MSI 中安装 64 位组件。它愿意在 64 位 MSI 中安装这两种组件,但它们不会在 32 位系统上运行。
    【解决方案2】:

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

    我认为使用 WiX 2 创建 64 位 MSI 可能存在问题,因此您可能需要升级到 WiX 3.x。

    由于您需要两个用于 32 位和 64 位 Windows 的 MSI 文件,因此您可以通过不将 32 位文件包含在 64 位安装程序中来轻松防止在 64 位 PC 上安装这些文件。如果您需要一个适用于 x86 和 x64 的安装程序可执行文件,则需要使用引导程序来选择要运行的 MSI。我不知道 WiX 发行版中的 burn.exe 是否可以做到这一点。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 2015-08-03
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2022-11-02
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多