2010-07-15 15 views
1

J'ai un script NSIS simple avec une page de répertoire, où l'utilisateur peut sélectionner un répertoire dans lequel installer l'application. Voir l'exemple ci-dessous, si l'application est déjà installée, elle prend la valeur du registre ou bien la racine www ou bien "programme files \ publisher \ product name". Le problème est que lorsque je clique sur parcourir sur la page de répertoire et sélectionne un répertoire spécifique (par exemple: c: \ test), quand je ferme la boîte de dialogue de navigation, la définition de PRODUCT_NAME est automatiquement ajoutée au chemin: c: \ test \ Workflow de gestion des factures. Comment puis-je éviter le nom du produit ajouté automatiquement "

!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 

Répondre

6

Ceci est lié à l'instruction InstallDir, pour citer le manuel:

Notez que la partie de cette chaîne après la dernière \ sera utilisé si l'utilisateur sélectionne 'parcourir', et peut être ajouté de nouveau à la chaîne à temps d'installation (pour désactiver ceci, mettez fin au répertoire avec un \ (qui exigera le paramètre entier à inclure avec des guillemets).

Donc, vous voulez probablement Installdir "$programfiles\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}\"

+0

Wow, je cherchais la documentation tout à fait à fond, et sur le web, mais je ne pouvais pas trouver cette très obscure « caractéristique ». Merci! – Rogier

+0

Merci! Cela a résolu mon problème – osamu