2015-04-21 4 views
0

J'ai écrit ce petit programme d'installation pour un .jar et je veux installer ce programme sans surveillance avec l'application de distribution de logiciels appelée «baramundi». Si j'essaye l'installation locale tout va bien mais si je l'essaye avec l'application avec la même commande de console il n'y a rien installé. Qu'est-ce que je fais mal?L'installateur NSIS ne va pas installer sans surveillance

La commande de la console est: SetupCSVExporter.exe/S

!define PRODUCT_NAME "CSVExporter" 
!define PRODUCT_VERSION "1.3" 
!define PRODUCT_PUBLISHER "Company" 
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 
!define PRODUCT_UNINST_ROOT_KEY "HKLM" 

; MUI 1.67 compatible ------ 
!include "MUI.nsh" 

; MUI Settings 
!define MUI_ABORTWARNING 
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" 
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" 

; Welcome page 
!insertmacro MUI_PAGE_WELCOME 
; Directory page 
!insertmacro MUI_PAGE_DIRECTORY 
; Instfiles page 
!insertmacro MUI_PAGE_INSTFILES 
; Finish page 
!insertmacro MUI_PAGE_FINISH 

; Uninstaller pages 
!insertmacro MUI_UNPAGE_INSTFILES 

; Language files 
!insertmacro MUI_LANGUAGE "German" 

var ISSILENT 

; MUI end ------ 

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 
OutFile "SetupCSVExporter.exe" 
InstallDir "$DESKTOP\CSVExporter" 
ShowInstDetails show 
ShowUnInstDetails show 
; Problemlösung: Delete Startmenu Shortcut 
RequestExecutionLevel user 

Section "Hauptgruppe" SEC01 
    SetOutPath "$INSTDIR" 
    SetOverwrite ifnewer 
    File "CSVExporter.jar" 
    CreateDirectory "$SMPROGRAMS\CSVExporter" 
    CreateShortCut "$SMPROGRAMS\CSVExporter\CSVExporter.lnk" "$INSTDIR\CSVExporter.jar" 
SectionEnd 

Section -AdditionalIcons 
    CreateShortCut "$SMPROGRAMS\CSVExporter\Uninstall.lnk" "$INSTDIR\uninst.exe" 
SectionEnd 

Section -Post 
    WriteUninstaller "$INSTDIR\uninst.exe" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" 
    WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" 
SectionEnd 
; Problemlösung: SILENT Installation 
Function .onInit 

STRCpy $ISSILENT "/S" 
IfSilent 0 +2 

FunctionEnd 

Function un.onUninstSuccess 
    HideWindow 
    MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) wurde erfolgreich deinstalliert." 
FunctionEnd 

Function un.onInit 
    MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie $(^Name) und alle seinen Komponenten deinstallieren?" IDYES +2 
    Abort 
FunctionEnd 

Section Uninstall 
    Delete "$INSTDIR\uninst.exe" 
    Delete "$INSTDIR\CSVExporter.jar" 

    Delete "$SMPROGRAMS\CSVExporter\Uninstall.lnk" 
    Delete "$SMPROGRAMS\CSVExporter\CSVExporter.lnk" 

    RMDir "$SMPROGRAMS\CSVExporter" 
    RMDir "$INSTDIR" 

    DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" 
    SetAutoClose true 
SectionEnd 
+1

Vous avez un 'IfSilent 0 + 2' discutable à la fin du' .onInit' ... et la variable '$ ISSILENT' semble inutilisée. Est-ce que cela fonctionne sans le commutateur '/ S'? – Seki

+0

... votre installateur a aussi d'autres problèmes, vous ne pouvez pas mélanger "RequestExecutionLevel user" avec l'écriture à HKLM! – Anders

Répondre

1

IfSilent 0 +2 est un saut non défini, il probablement saute par-dessus la première instruction dans la première section et dans votre cas qui est SetOutPath! N'utilisez pas de sauts relatifs lorsque vous n'êtes pas obligé d'utiliser des étiquettes ou la LogicLib!