Determine 32 bits/64 bits do script do PowerShell dentro do Inno Setup

Determine 32 bits/64 bits do script do PowerShell dentro do Inno Setup

Considere o seguinte script do PowerShell:

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

Se eu executar isso diretamente dentro do PowerShell em uma máquina de 64 bits, obtenho corretamente

8
True

Mas quando envolvo isso em um instalador autoextraível usando o Inno Setup (que é construído em uma máquina de 32 bits), sempre recebo:

4
False

Como posso ter certeza de que o PowerShell está sendo executado no modo de 64 bits quando em um computador de 64 bits (e 32 bits para computadores de 32 bits)?

Também tentei executar um arquivo em lote que chama o script do PowerShell, assumindo que o sistema iniciaria o PowerShell em seu modo padrão, mas isso também não funciona.

Também tentei o iexpress para encerrar o programa, mesmo problema.

Responder1

Se o seu instalador for um aplicativo de 32 bits, ele sempre iniciará um PowerShell de 32 bits. Mesmo usando o caminho completo:

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

porque o redirecionador do sistema de arquivos do Windows irá alterá-lo paraC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

para iniciar um PowerShell de 64 bits a partir de um processo de 32 bits, use:

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

em uma máquina de 32 bits, o mesmo comando ainda deve executar o PowerShell de 32 bits, mas não posso mais testar isso.

informação relacionada