【问题标题】:How does WIX know if it's installing 32 or 64 Bit software?WIX 如何知道它安装的是 32 位还是 64 位软件?
【发布时间】:2018-04-12 09:42:16
【问题描述】:

我有一个 WIX 安装程序,它可以创建一些注册表项并安装一些软件。我不使用package-elements 属性“平台”,也不使用candle.exe-arch 开关。

我知道为什么它会将软件复制到C:\Program Files (x86)\Vendor\Product而不是C:\Program Files\Vendor\Product:显然,使用ProgramFilesFolder会自动重定向到32位软件路径:

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder"> <!-- 64 Bit Folder would be "ProgramFiles64Folder" -->
        <Directory Id="Vendor" Name="Vendor">
            <Directory Id="INSTALLDIR" Name="Product">

但我找不到类似的注册表项。 为什么 WIX 将注册表项从 Software\Vendor\Product 重定向到 Software\WOW6432Node\Vendor\Product? 为什么 WIX 认为我没有安装 32 位软件?

示例:此代码在Software\WOW6432Node\Apache Software Foundation\Procrun 2.0\... 中创建注册表项

<RegistryKey Root="HKLM"
    Key="Software\Apache Software Foundation\Procrun 2.0\$(var.serviceName)\Parameters"
    ForceDeleteOnUninstall="yes">
    <RegistryValue Key="Java" Name="Classpath" Type="string" Value="[JettyHomeDirectory]start.jar"/>

【问题讨论】:

    标签: windows windows-installer 32bit-64bit wix3.7


    【解决方案1】:

    如果 Platform 属性和 -arch 开关被省略,则默认为 x86(32 位)。编译 MSI 后,无论您的文件编译为什么,它都将使用 32 位位置。它不知道您的文件中有什么。

    我不从命令行做蜡烛/灯光,我使用 Visual Studio 集成 (Votive)/MSBuild。在这种情况下,解决方案配置管理器及其 x86(默认)和 x64 的解决方案/项目平台会自动驱动 -arch 开关。

    因为 .NET 应用程序会 JIT 任何 CPU,无论它安装在哪里,我很少创建特定于 x64 的安装程序,所以在大多数情况下我忽略了这一点。有时,我需要在 SystemFolder 中安装和/或注册一个非托管组件,然后我才关心。

    您需要 1) 像我在 Visual Studio 中那样做 2) 在构建期间传递 -arch 属性或 3) 将 Package 属性设置为 x64 并忽略“不鼓励这样做”注释。

    【讨论】:

    • 我不知道 x86 是默认的,当我将 x64 作为 platform 属性赋予 package 元素时,我没有看到任何差异,不知道为什么。但是在命令行上将-arch x64 提供给candle.exe 是可行的。谢谢!
    • 我只使用 Votive,所以也许 msbuild 目标正在使用 Platform 属性并使用它将 -arch 传递给蜡烛。我知道蜡烛和光,还有很多人喜欢这样做。给他们视觉工作室代码和命令提示符,他们很高兴。就我个人而言,我更喜欢 VS / Votive / MSBuild 路线,并创建了一个开源项目,该项目具有更完整的项目模板和图形设计器。我的 WiX XML 中只有大约 1% 是手动编辑的,而且我只在需要使用热量来获取一些 COM 元数据时才花时间在命令行上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2014-05-06
    • 2011-07-03
    相关资源
    最近更新 更多