พิจารณา 32 บิต / 64 บิตจากสคริปต์ PowerShell ในการตั้งค่า Inno


0

พิจารณาสคริปต์ powershell ต่อไปนี้:

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

ถ้าฉันเรียกใช้สิ่งนี้ภายใน powershell โดยตรงบนเครื่อง 64 บิตแสดงว่าฉันถูกต้องแล้ว

8
True

แต่เมื่อฉันห่อสิ่งนี้ไว้ในตัวติดตั้งแบบขยายตัวเองโดยใช้ Inno Setup (ที่สร้างขึ้นบนเครื่อง 32 บิต) ฉันมักจะได้รับ:

4
False

ฉันจะแน่ใจได้อย่างไรว่า PowerShell ทำงานในโหมด 64 บิตเมื่ออยู่บนคอมพิวเตอร์ 64 บิต (และ 32 บิตสำหรับคอมพิวเตอร์ 32 บิต)

ฉันได้ลองเรียกใช้งานไฟล์แบตช์ซึ่งเรียกสคริปต์ PowerShell ด้วยว่าระบบจะเริ่มทำงาน PowerShell ในโหมดเริ่มต้น แต่ก็ใช้งานไม่ได้

ฉันได้ลอง iexpress เพื่อตัดโปรแกรมปัญหาเดียวกัน


คุณกำลังจะไปเกี่ยวกับปัญหานี้ในทางที่ผิด สร้างการตั้งค่าสองแบบหนึ่งแบบ 32 บิตแบบ 64 บิตแล้วไม่ต้องกังวลกับแพลตฟอร์มใดเนื่องจากคุณจะได้รู้จักแพลตฟอร์มแล้ว
Ramhound

คุณลองตรวจสอบรีจิสทรีแล้วหรือยัง ตามคำตอบนี้ ( superuser.com/questions/290906/... ) คุณสามารถตรวจสอบค่าของ "HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx ที่"
เคอร์ติ

อาจมีประโยชน์มากกว่าในการตรวจสอบหากคุณยังต้องการตรวจสอบสิ่งนี้ในรีจิสทรีตามที่ @Curtis พูดถึง
รูต

คำตอบ:


0

หากโปรแกรมติดตั้งของคุณเป็นแอพพลิเคชั่น 32 บิตมันจะเริ่มต้นด้วย PowerShell 32 บิต แม้แต่การใช้เส้นทางแบบเต็ม:

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

เนื่องจากตัวเปลี่ยนเส้นทางระบบไฟล์ Windows จะเปลี่ยนเป็น C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

เพื่อเริ่ม PowerShell 64 บิตจากกระบวนการ 32 บิตให้ใช้:

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

บนเครื่อง 32 บิตคำสั่งเดียวกันควรยังคงใช้งาน 32 บิต PowerShell แต่ฉันไม่สามารถทดสอบได้อีกต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.