
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.