32位NSIS是否可以启动64位程序?

时间:2009-11-09 11:47:40

标签: windows installer nsis

我正在移植一个来自32的Windows程序 - > 64位。它有一个32位安装程序,使用NSIS编写。我可以使用32位NSIS安装程序启动一个新的64位exes吗?我不认为有64位版本的NSIS ...

5 个答案:

答案 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(通过ExecExecWait),它们都可以运行来自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