在64位操作系统上将文件复制到System32

时间:2016-11-16 12:22:05

标签: wix

我正在创建一个msi。我需要将一个文件复制到System32文件夹,而不管操作系统架构如何。使用SystemFolder属性时,它会显示在x64中的SysWOW64文件夹中。我可以在同一个msi中使用System64FolderSystemFolder,还是有其他方法可以执行此操作。

2 个答案:

答案 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位文件夹。

不同架构需要不同的设置:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

因此,一个解决方案是WiX Burn捆绑包,其中包含64位安装程序以安装该文件。