我正在从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