如何在 Wix Toolkit 的 MSI 项目中的 Template Summary 中插入 Intel64 或 x64?

问题描述 投票:0回答:3

我正在编写一个简单的代码来在

Program Files
文件夹中安装文件,而不是
Program Files (x86)

<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFiles64Folder">
            <Directory Id="INSTALLFOLDER" Name="Del">
                <Directory Id="MyFolder" Name="MyFolder"/>
            </Directory>
        </Directory>
    </Directory>
</Fragment>

<Fragment>
    <Component Id="Component1" Directory="MyFolder" Win64="yes">
       <File Id="FirstFile.txt"/>
    </Component>
</Fragment>

基本上,它应该在

del
中创建一个文件夹
Program Files
,并在其中创建文件夹
MyFolder
,其中包含
FirstFile.txt

如果我为

Id = ProgramFilesFolder
执行此操作,则可以通过安装在
Program Files (x86)

中来工作

将其更改为

ProgramFiles64Folder
会出现以下错误

ICE80: This package contains 64 bit component 'Component1' but the Template Summary Property does not contain Intel64 or x64.   

我的问题是从哪里或如何更改模板摘要属性?

提前致谢

visual-studio wix windows-installer x86-64 program-files
3个回答
1
投票

Arnson 的方法:请查看Bob Arnson 的答案。以下是他博客的摘录:“通常希望从同一 WiX 源生成 32 位和 64 位包,因此常见的方法是将 @Win64 属性值设置为 预处理器变量。” 因此,他使用编译器开关从同一源编译 x32 或 x64 位版本的 MSI 文件。

不可以:您无法通过一个 MSI 来支持这两种架构。请参阅 Heath Stewart 的博客:不同的处理器架构需要不同的软件包


“硬编码”方式:这是一个您可以尝试的旧示例: https://github.com/glytzhkof/WiXBitnessX64

部分摘录:

封装元素

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64" />

组成元素:

<Component Feature="ProductFeature" Win64="yes">
  <File Source="$(env.SystemRoot)\notepad.exe" />
</Component>

1
投票

来自 https://www.joyofsetup.com/2010/05/14/working-hard-or-hardly-working/#manually-marking-package-and-component-bitness

在 Candle.exe 命令行或 .wixproj MSBuild 项目中的 InstallerPlatform 属性中指定 -arch 开关。当您指定 x64 或 intel64 时,Candle 会自动将正在编译的文件中的包和组件设置为 64 位。


0
投票

对于 Wix 4.0.2:

将此添加到您的

.wixproj
文件中:

<PropertyGroup>
   <InstallerPlatform>x64</InstallerPlatform>
 </PropertyGroup>

确保您已为所有组件设置

<StandardDirectory Id="ProgramFiles64Folder">
Component.Bitness=always64

© www.soinside.com 2019 - 2024. All rights reserved.