我正在尝试从从minggw启动的shell脚本文件创建EXE文件(从git bash使用)
我的问题是当我运行这些命令时:
C:/Windows/system32/iexpress.exe //N C:\\git\\install_64bitWindows.SED
C:/Windows/SysWOW64/iexpress.exe //N C:\\git\\Install_32bitWindows.SED他们总是在SysWOW64中调用makecab (它创建了一个32位的.exe),有没有什么办法让我从system32启动一个新的cmd,让我能够制作我的64位.exe?
发布于 2013-09-24 21:39:47
由于您从32位可执行文件运行该命令,因此出于与旧的(64位之前的)可执行文件的兼容性原因,操作系统会自动将System32重定向到SysWOW64 (这样,它们将从正确的路径加载它们的依赖项)。
要绕过重定向,您可以从%windir%\sysnative\运行可执行文件,这将自动重定向到“真正的”System32:
%windir%\sysnative\iexpress.exe //N C:\\git\\install_64bitWindows.SED
有关完整说明,请参阅:http://www.tipandtrick.net/how-to-suppress-and-bypass-system32-file-system-redirect-to-syswow64-folder-with-sysnative/
如果还想运行32位可执行文件,请使用
%windir%\system32\iexpress.exe //N C:\\git\\install_32bitWindows.SED
因为这将与32位和64位操作系统环境兼容。
要检测您使用的是32位还是64=bit操作系统,请检查环境变量PROCESSOR_ARCHITECTURE (命名有误)。对于32位操作系统,它将是"x86“;对于64位操作系统,它将是"AMD64”。
把所有这些放在一起:
对于Windows CMD脚本:
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
%windir%\system32\iexpress.exe //N C:\git\install_32bitWindows.SED
) else (
%windir%\sysnative\iexpress.exe //N C:\git\install_64bitWindows.SED
)对于bash脚本:
if [ "$PROCESSOR_ARCHITECTURE" = "x86" ]; then
$WINDIR/system32/iexpress.exe //N C:\\git\\install_32bitWindows.SED
else
$WINDIR/sysnative/iexpress.exe //N C:\\git\\install_64bitWindows.SED
fi(请注意,在bash中,变量名区分大小写,即使在Windows上也是如此)。
发布于 2013-09-24 21:28:54
如果您将其调用为:
C:/Windows/sysnative/iexpress.exe //N C:\\git\\install_64bitWindows.SED它应该使用64位版本的iexpress构建。
https://stackoverflow.com/questions/18982740
复制相似问题