我正在编写一个简单的代码来在
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.
我的问题是从哪里或如何更改模板摘要属性?
提前致谢
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>
在 Candle.exe 命令行或 .wixproj MSBuild 项目中的 InstallerPlatform 属性中指定 -arch 开关。当您指定 x64 或 intel64 时,Candle 会自动将正在编译的文件中的包和组件设置为 64 位。
对于 Wix 4.0.2:
将此添加到您的
.wixproj
文件中:
<PropertyGroup>
<InstallerPlatform>x64</InstallerPlatform>
</PropertyGroup>
确保您已为所有组件设置
<StandardDirectory Id="ProgramFiles64Folder">
和 Component.Bitness=always64