使用NSIS将32位和64位安装程序合并到一个安装程序中

时间:2014-02-17 06:16:37

标签: installer 32bit-64bit nsis

我使用NSIS创建了一个简单的安装程序。我希望安装程序应该检测客户端正在使用的操作系统。如果客户端使用的是32位操作系统,则应将所有文件复制到Program Files(32位)文件夹,否则如果他/她使用64 -bit操作系统,所有文件都应该复制到64位。任何人都可以帮我解决这个问题..

由于

2 个答案:

答案 0 :(得分:2)

与上述相同(不要忘记包含LogicLib.nsh x64.nsh)

Function .onInit

    ${If} ${RunningX64}
        StrCpy $INSTDIR "$PROGRAMFILES64\myProduct"
    ${Else}
        StrCpy $INSTDIR "$PROGRAMFILES\myProduct" ; $PROGRAMFILES32 also works
    ${EndIf}

FunctionEnd

或者,您也可以设置注册表视图(请参阅SetRegView

答案 1 :(得分:1)

以下代码将完成任务。

!include "x64.nsh"
.
.
.
.
var copyDir

section ""

${If} ${RunningX64}
strcpy $copyDir "C:\\Program Files(x64)\\Foo"

${else}
strcpy $copyDir "C:\\Program Files\\Foo"
sectionend

虽然它只是检测Program Files目录,但我认为$ProgramFiles会根据操作系统位自动检测默认的Program Files目录。