Страница каталога NSIS после выбора каталога установки "$ {PRODUCT_NAME}" добавляется после выбора - PullRequest
1 голос
/ 15 июля 2010

У меня есть простой сценарий NSIS со страницей каталога, где пользователь может выбрать каталог для установки приложения. См. Приведенный ниже пример: если приложение уже установлено, оно получает значение из реестра, либо из корня www, либо «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 Ответ

6 голосов
/ 15 июля 2010

Это относится к инструкции InstallDir, приведенной в руководстве:

Обратите внимание, что часть этой строки следующий за последним \ будет использоваться, если пользователь выбирает «просматривать», и может быть добавлен обратно на строку в установить время (чтобы отключить это, завершите каталог с \ (который потребует весь параметр должен быть заключен с цитатами).

Так что вы, вероятно, хотите Installdir "$programfiles\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}\"

...