6

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

4

5 回答 5

15

当然可以,NSIS 不会施加任何限制,NSIS 的真正妙处在于,如果您同时拥有 32 位和 64 位版本的应用程序,您可以执行组合安装程序,并在每个架构的基础上安装所需的文件。例如

!include "x64.nsh"

${If} ${RunningX64}
    File ..\x64\blah.exe
${Else}
    File ..\x86\blah.exe
${EndIf}
于 2009-11-10T00:39:47.527 回答
11

NSIS 使用两个 Win32 API 来执行进程ShellExecute(thru ExecShell) 和CreateProcess(thru Execand ExecWait),它们都可以从 NSIS 32 位进程运行 64 位进程 (x64)(只要您在 64 位操作系统上运行)。

于 2009-11-09T11:50:18.523 回答
5

对于执行需要 64 位操作的进程,我发现默认的 NSIS 执行不会自动以 64 位模式运行。我在尝试运行 DISM 安装 .NET Framework 3.5 时遇到了这个问题。DISM 会出错,说明:

“您无法使用 32 位版本的 DISM 为正在运行的 64 位操作系统提供服务。”

DisableX64FSRedirection为了解决我在需要 64 位操作的调用之前添加了需要添加的内容。请参见下面的示例:

${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}
于 2017-01-17T19:31:49.307 回答
1

只是为了添加更多描述性

看看, http://www.autoitscript.com/forum/index.php?showtopic=44048

于 2010-02-08T02:49:28.873 回答
0

嗯..这里有一些限制..例如,尝试运行 odbcconf.exe 来安装驱动程序。我还没有找到一种方法来让它作为 64 位条目出现。我认为就像您(在 64 位系统中)以管理员身份启动“powershell x86”,然后从那里运行 cmd 和 odbcconf 一样 - 我找不到简单的方法来解决它,让 odbcconf 执行 x64

于 2015-02-25T16:43:35.713 回答