Fra*_*ank 3 windows win64 batch-file msiexec
我有一个批处理文件(出于兼容性原因)在32位cmd.exe
进程中运行.但是,在这种情况下,我现在需要启动64位版本的Windows命令行工具msiexec
.我怎样才能做到这一点?
其他细节:
我正在使用批处理文件来安装各种软件产品.为了最大限度地兼容旧产品,批处理文件作为32位进程运行.但是,我现在需要安装Intel Haxm,它需要64位版本msiexec
.
我已经尝试过调用c:\windows\system32\msiexec.exe
,但是在执行此操作时,Windows安装程序日志文件仍然说:
=== Verbose logging started: 14.04.2015 14:27:53 Build type: SHIP UNICODE 5.00.9600.00 Calling process: c:\windows\SysWOW64\msiexec.exe ===
您可以使用sysnative
别名执行此操作,如MSDN文章文件系统重定向器中所述:
32位应用程序可以通过%windir%\ Sysnative替换%windir%\ System32来访问本机系统目录.WOW64将Sysnative识别为一个特殊别名,用于指示文件系统不应重定向访问.这种机制灵活且易于使用,因此,它是推荐的绕过文件系统重定向的机制.请注意,64位应用程序无法使用Sysnative别名,因为它是虚拟目录而不是真实目录.
Windows Server 2003和Windows XP: 从Windows Vista开始添加Sysnative别名.
所以,在批处理文件中,你会说类似的东西
%windir%\sysnative\msiexec /install product.msi /passive /norestart
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要运行另一个批处理文件
%windir%\sysnative\cmd.exe /c silent_install.bat
Run Code Online (Sandbox Code Playgroud)
请注意,sysnative
除非安装了修补程序942589,否则64位版本的Windows XP或Windows 2003不支持. 请参阅此答案以获取一种解决方法.