我正在创建一个msi。我需要将一个文件复制到System32文件夹,而不管操作系统架构如何。使用SystemFolder
属性时,它会显示在x64中的SysWOW64
文件夹中。我可以在同一个msi中使用System64Folder和SystemFolder,还是有其他方法可以执行此操作。
答案 0 :(得分:2)
将需要进入64位计算机上“System32”文件夹的组件标记为64位,然后围绕该事实进行调整。
<Component Id="IAmA64BitBinary" Win64="yes" Directory="SystemFolder">
<Condition>VersionNT64</Condition>
<File Id="IAmTheBinary" KeyPath="yes" Source="file.dll">
</Component>
“Win64 =”yes“”表示这是指64位SystemFolder,条件确保此组件仅安装在实际存在此系统文件夹的64位计算机上。
我不是100%确定是否需要这个条件,但我认为这不会有害。如果您需要一些64位组件,我建议您在安装时添加启动条件
<Comdition message="Must install on a 64-bit OS">VersionNT64</Condition>
(另请注意;我们不需要在此启动条件中添加“OR Installed”,因为VersionNT64属性在安装和卸载/升级之间无法更改。)
答案 1 :(得分:2)
32位MSI无法将文件安装到本机64位系统文件夹。它将重定向到32位WoW64文件夹,在详细日志中,您将看到WIN64DUALFOLDERS重定向。正如文档所说:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa367451(v=vs.85).aspx
32位MSI只能包含32位组件。因此,您无法在32位安装中使用64位组件将文件安装到本机64位文件夹。
不同架构需要不同的设置:
因此,一个解决方案是WiX Burn捆绑包,其中包含64位安装程序以安装该文件。