Bestimmen Sie 32bit/64bit aus dem Powershell-Skript im Inno Setup

Bestimmen Sie 32bit/64bit aus dem Powershell-Skript im Inno Setup

Betrachten Sie das folgende Powershell-Skript:

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

Wenn ich dies direkt in Powershell auf einem 64-Bit-Rechner ausführe, erhalte ich korrekt

8
True

Aber wenn ich dies in ein selbstextrahierendes Installationsprogramm mit Inno Setup einbinde (das auf einem 32-Bit-Computer erstellt wird), erhalte ich immer:

4
False

Wie stelle ich sicher, dass Powershell auf einem 64-Bit-Computer im 64-Bit-Modus ausgeführt wird (und auf einem 32-Bit-Computer im 32-Bit-Modus)?

Ich habe auch versucht, eine Batchdatei auszuführen, die das Powershell-Skript aufruft, in der Annahme, dass das System Powershell im Standardmodus starten würde, aber auch das funktioniert nicht.

Ich habe auch versucht, das Programm mit iExpress zu umschließen, gleiches Problem.

Antwort1

Wenn Ihr Installationsprogramm eine 32-Bit-Anwendung ist, wird immer eine 32-Bit-PowerShell gestartet. Auch bei Verwendung des vollständigen Pfads:

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

weil der Windows-Dateisystem-Redirector es ändert inC:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

um eine 64-Bit-PowerShell aus einem 32-Bit-Prozess zu starten, verwenden Sie:

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

Auf einem 32-Bit-Computer sollte derselbe Befehl immer noch die 32-Bit-PowerShell ausführen, aber ich kann das nicht mehr testen.

verwandte Informationen