浏览安装后的NSIS目录页面选择后添加“$ {PRODUCT_NAME}”

时间:2010-07-15 09:05:06

标签: directory install nsis

我有一个带有目录页面的简单NSIS脚本,用户可以在其中选择要安装应用程序的目录。请参阅下面的示例,如果已安装该应用程序,则会从注册表中获取值,或者使用www root或“program files \ publisher \ product name”。

问题在于,当我单击目录页面上的浏览并选择特定目录(例如:c:\ test)时,当我关闭浏览对话框时,定义PRODUCT_NAME会自动添加到路径中:c:\ test \发票管理工作流程。如何避免自动添加产品名称“?

!define PRODUCT_NAME "Invoice Management Workflow"

!insertmacro MUI_DEFINES
!insertmacro MUI_PAGE_WELCOME
Page directory DirPre
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES

Function DirPre
    ; set the INSTDIR to 
    ReadRegStr $0 HKLM "Software\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}" "InstallDirectory"
    ${If} $0 != ""
        StrCpy $INSTDIR $0
        Abort
    ${Else}
        ; get the install dir from reg
        ReadRegStr $0 HKLM "SOFTWARE\Microsoft\InetStp" "PathWWWRoot"
        ${If} $0 != ""
            StrCpy $INSTDIR $0
        ${EndIf}
    ${EndIf}
FunctionEnd

1 个答案:

答案 0 :(得分:6)

这与InstallDir指令有关,引用手册:

  

注意这个字符串的一部分   如果是,将使用最后一个\   用户选择“浏览”,可能是   附加到字符串处   安装时间(禁用此功能,结束   带\的目录(需要   要包含的整个参数   引号)。

所以你可能想要Installdir "$programfiles\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}\"