NSIS静默安装程序路径覆盖

时间:2013-05-30 08:19:56

标签: path nsis silent

我正在使用NSIS运行我的程序安装程序,但/ D选项似乎无法正常工作(或更好地覆盖内部)。 通过命令行我触发:

installer.exe /S /D=C:\Users\Public\installDir

NSIS代码是:

InstallDir "C:\Users\Public\${VERSIONSTR}"


Function xxxx
 ${If} $MultiUser.InstallMode == "AllUsers"      
 StrCpy $INSTDIR "C:\Users\Public\Dir1"
 ${EndIf}
 IfSilent 0 +20
   StrCpy $INSTDIR "C:\Userdata\Dir2"
FunctionEnd

使用过的安装文件夹是“C:\ Users \ Public \ Dir2”。即使我对IfSilent块进行注释,installtion文件夹也将是“C:\ Users \ Public \ Dir1”,但绝不会通过命令行传递。 我的剧本有什么问题?

1 个答案:

答案 0 :(得分:2)

!include LogicLib.nsh
;InstallDir ; Do not use InstallDir at all so we can detect empty $InstDir
!define DEFDIR_MACHINE "$programfiles\foo"
!define DEFDIR_PERUSER "$localappdata\bar"
Function .onInit
${If} $InstDir == "" ; /D not used
    ${If} $MultiUser.InstallMode == "AllUsers"
        StrCpy $InstDir "${DEFDIR_MACHINE}"
    ${Else}
        StrCpy $InstDir "${DEFDIR_PERUSER}"
    ${EndIf}
    ${If} ${Silent}
        StrCpy $InstDir "c:\CrazySilentOverride"
    ${EndIf}
${EndIf}
FunctionEnd