Rog*_*ier 1 directory install nsis
我有一个带有目录页面的简单NSIS脚本,用户可以在其中选择要安装应用程序的目录.请参阅下面的示例,如果已安装该应用程序,则会从注册表中获取值,或者使用www root或"program files\publisher\product name".
问题是,当我单击目录页面上的浏览并选择特定目录(例如:c:\ test)时,当我关闭浏览对话框时,定义PRODUCT_NAME会自动添加到路径中:c:\ test\Invoice Management Workflow .如何避免自动添加产品名称?
!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
Run Code Online (Sandbox Code Playgroud)
这与InstallDir指令有关,引用手册:
请注意,如果用户选择"浏览",则将使用此字符串后面的部分,并且可以在安装时将其附加到字符串上(要禁用此功能,请使用\结束目录(这将需要整个参数用引号括起来).
所以你可能想要 Installdir "$programfiles\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}\"