我正在移植一个来自32的Windows程序 - > 64位。它有一个32位安装程序,使用NSIS编写。我可以使用32位NSIS安装程序启动一个新的64位exes吗?我不认为有64位版本的NSIS ...
答案 0 :(得分:15)
当然可以,NSIS没有施加任何限制,NSIS的真正优点是如果你的应用程序有32位和64位版本,你可以组合安装程序,并安装所需的文件。建筑基础。 e.g。
!include "x64.nsh"
${If} ${RunningX64}
File ..\x64\blah.exe
${Else}
File ..\x86\blah.exe
${EndIf}
答案 1 :(得分:12)
NSIS使用两个Win32 API来执行流程ShellExecute
(通过ExecShell
)和CreateProcess
(通过Exec
和ExecWait
),它们都可以运行来自NSIS 32位进程的64位进程(x64)(只要您在64位操作系统上运行)。
答案 2 :(得分:3)
对于执行需要64位操作的进程,我发现默认的NSIS执行不会自动以64位模式运行。我在尝试运行DISM以安装.NET Framework 3.5时遇到过这种情况。 DISM会出错:
“您无法使用32位服务正在运行的64位操作系统 DISM的版本。“
要解决,我需要在需要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}
答案 3 :(得分:1)
只是为了添加更具描述性的
看看, http://www.autoitscript.com/forum/index.php?showtopic=44048答案 4 :(得分:0)
嗯..这里有一些限制..例如,尝试运行 odbcconf.exe来安装驱动程序。我无法找到一种方法来让它作为64位条目进入。 同样的方式我认为好像你(在64位系统中)以管理员身份启动“powershell x86”,然后从那里运行cmd和odbcconf - 没有简单的方法可以找到我能找到的东西,使odbcconf做x64