从 Inno Setup 中的 powershell 脚本确定 32 位/64 位

从 Inno Setup 中的 powershell 脚本确定 32 位/64 位

考虑以下 powershell 脚本:

[System.IntPtr]::Size
[Environment]::Is64BitProcess

如果我直接在 64 位机器上的 powershell 中运行这个,那么我就可以正确获得

8
True

但是,当我使用 Inno Setup(在 32 位机器上构建)将其包装在自解压安装程序中时,我总是得到:

4
False

如何确保在 64 位计算机上 powershell 以 64 位模式运行(在 32 位计算机上以 32 位模式运行)?

我也尝试执行一个调用 powershell 脚本的批处理文件,假设系统将以其默认模式启动 powershell,但这也不起作用。

我也尝试过 iexpress 来包装程序,同样的问题。

答案1

如果您的安装程序是 32 位应用程序,它将始终启动 32 位 PowerShell。即使使用完整路径:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

因为 Windows 文件系统重定向器会将其更改为C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

要从 32 位进程启动 64 位 PowerShell,请使用:

C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe

在 32 位机器上,相同的命令仍应执行 32 位 PowerShell,但我无法再测试它。

相关内容