Determine 32 bits/64 bits desde el script de PowerShell dentro de Inno Setup

Determine 32 bits/64 bits desde el script de PowerShell dentro de Inno Setup

Considere el siguiente script de PowerShell:

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

Si ejecuto esto directamente dentro de PowerShell en una máquina de 64 bits, obtengo correctamente

8
True

Pero cuando incluyo esto dentro de un instalador autoextraíble usando Inno Setup (que está integrado en una máquina de 32 bits), siempre obtengo:

4
False

¿Cómo me aseguro de que PowerShell se esté ejecutando en modo de 64 bits en una computadora de 64 bits (y de 32 bits en una computadora de 32 bits)?

También intenté ejecutar un archivo por lotes que llama al script de PowerShell, asumiendo que el sistema iniciaría PowerShell en su modo predeterminado, pero esto tampoco funciona.

También probé iexpress para ajustar el programa, el mismo problema.

Respuesta1

Si su instalador es una aplicación de 32 bits, siempre iniciará un PowerShell de 32 bits. Incluso usando la ruta completa:

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

porque el redirector del sistema de archivos de Windows lo cambiará aC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

para iniciar un PowerShell de 64 bits desde un proceso de 32 bits, use:

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

en una máquina de 32 bits, el mismo comando aún debería ejecutar PowerShell de 32 bits, pero ya no puedo probarlo.

información relacionada