我正在從32-> 64位移植一個Windows程序。它有一個使用NSIS編寫的32位安裝程序。我可以使用32位NSIS安裝程序啓動我的新的64位exes中的一個嗎?我不認爲這是NSIS的64位版本的...32位NSIS可以啓動64位程序嗎?
回答
NSIS使用兩個Win32 API的執行過程ShellExecute
(直通ExecShell
)和CreateProcess
(直通Exec
和ExecWait
),他們都可以運行64個進程(x64)從NSIS 32位進程(只要您在64位操作系統上運行)。
當然你可以,NSIS不會強加任何限制,如果你有32位和64位版本的應用程序,你可以做一個組合安裝程序,然後安裝所需的文件架構的基礎。例如
!include "x64.nsh"
${If} ${RunningX64}
File ..\x64\blah.exe
${Else}
File ..\x86\blah.exe
${EndIf}
嗨,我知道這是舊的,但我已經試過這個,它似乎仍然安裝32bit.exe,如果我嘗試這種方法。爲什麼哦爲什麼? – 2011-12-18 23:09:17
@DanielCasserly不應該有什麼神奇的 - 這是我仍在使用的代碼。當我第一次構建我的安裝程序時,它從NSIS網站上的示例中抓取 – saschabeaumont 2012-01-09 08:47:27
只是爲了增加更多的描述
看看, http://www.autoitscript.com/forum/index.php?showtopic=44048
嗯..這裏有一些限制..例如,嘗試運行 odbcconf.exe安裝驅動程序。我一直無法找到一種讓64位入門的方法。 同樣的方式,我認爲,如果你(在64位系統)啓動「PowerShell的86」以管理員身份,然後運行CMD和odbcconf從那裏 - 沒有簡單的方法來解決它,我可以找到,使得odbcconf做64
爲了執行需要64位操作的進程,我發現默認的NSIS執行不會自動運行在64位模式下。我在嘗試運行DISM以安裝.NET Framework 3.5時遇到此問題。 DISM將錯誤地指出:
「您無法使用DISM的32位版本的 服務正在運行的64位操作系統。」
解決我添加需要在需要64位操作的調用之前添加DisableX64FSRedirection
。看下面的例子:
${If} ${RunningX64}
${DisableX64FSRedirection}
DetailPrint "Disabling Windows 64-bit file system redirection"
${EndIf}
nsExec::ExecToStack 'Dism.exe /Online /Enable-Feature /FeatureName:NetFx3'
${If} ${RunningX64}
${EnableX64FSRedirection}
DetailPrint "Re-enabling Windows 64-bit file system redirection"
${EndIf}
- 1. 調用32位或64位程序從啓動加載程序
- 2. 從32位應用程序啓動64位應用程序?
- 3. 啓動64位進程修改32位和64位.NET machine.config中
- 4. 是否可以從32位應用程序啓動64位命令行?
- 5. 從32位應用程序啓動64位進程?
- 6. 將Windows驅動程序轉換爲64位 - 我可以使用32位DLL嗎?
- 7. 在64位Windows上以32位進程啓動MSIL exe
- 8. 32位nasm程序集不在64位系統上啓動
- 9. IIS 7.5 32位應用程序池啓動爲64位
- 10. 如何以編程方式在32位或64位環境中啓動程序?
- 11. 如何從32位或64位進程啓動64位PowerShell進程?
- 12. 是否可以從32位應用程序訪問64位dll?
- 13. Qt 64位可以生成32位可執行文件嗎?
- 14. win32com.client.Dispatch()32-64位程序
- 15. 我還可以使用64位機器開發32位應用程序嗎?
- 16. 32位應用程序可以在64位iPhone 5S上運行嗎?
- 17. 32位SPARC V8應用程序可以在64位SPARC V9上運行嗎?
- 18. 如何從32位進程啓動64位進程
- 19. 64位OS/32位進程
- 20. 64位程序集的32位指令
- 21. 32位/ 64位Windows/Linux應用程序
- 22. 爲32位和64位應用程序啓動正確的安裝程序
- 23. 從32位應用程序啓動「不相關」的64位應用程序
- 24. 如何從32位C++應用程序啓動64位Java應用程序?
- 25. 在32位程序中使用64位驅動程序。 Windows
- 26. 從32位Windows應用啓動64位可執行文件
- 27. Nexus/Maven可以同時存儲32位和64位工件嗎?
- 28. 我可以部署到Lion 64位和Snow Leopard 32位嗎?
- 29. 我可以將64位SQL Server作爲32位運行嗎?
- 30. 可以在64位Mac OS X上使用32位eclipse RCP嗎?
噢好吧,我不認爲有可能創建一個32位的64位進程。有什麼特別的我需要做的? – Benj 2009-11-09 12:08:55
@Benj AFAIK,no。 – 2009-11-09 12:28:48