diff options
Diffstat (limited to '')
-rw-r--r-- | scripts/w32installer.nsi | 173 |
1 files changed, 160 insertions, 13 deletions
diff --git a/scripts/w32installer.nsi b/scripts/w32installer.nsi index e0f082a78..2606697db 100644 --- a/scripts/w32installer.nsi +++ b/scripts/w32installer.nsi @@ -15,12 +15,6 @@ ; using NSIS. It is usually used by the mk-w32-dist script. ;---------------------------------------------------------------------- -; TODO: -; - Display credit for the installer -; - Provide the location of the corresponding source -; - Translate all strings - - ; We use the modern UI. !include "MUI.nsh" @@ -29,7 +23,11 @@ ; ------------- Name "GNU Privacy Guard" +!ifdef WITH_WINPT +OutFile "gnupg-w32-${VERSION}.exe" +!else OutFile "gnupg-w32cli-${VERSION}.exe" +!endif InstallDir "$PROGRAMFILES\GNU\GnuPG" @@ -54,6 +52,15 @@ VIAddVersionKey "FileDescription" \ "GnuPG: Encryption and digital signature tool" VIAddVersionKey "FileVersion" "${PROD_VERSION}" +; ---------------------- +; Variable declarations +; ---------------------- + +Var MYTMP +Var STARTMENU_FOLDER + +Var DOC_INSTALLED +Var WINPT_INSTALLED ; ------------------ ; Interface Settings @@ -97,6 +104,13 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY + +!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GNU\GnuPG" +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + +!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER + !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_SHOWREADME "README.txt" @@ -156,8 +170,6 @@ Section "Base" SecBase WriteRegStr HKLM "Software\GNU\GnuPG" "Install Directory" $INSTDIR - WriteUninstaller "$INSTDIR\Uninstall.exe" - SectionEnd ; Section Base ;---------------------- @@ -180,6 +192,29 @@ Section "Tools" SecTools SectionEnd ; Section Tools +;------------------ +!ifdef WITH_WINPT +Section "WinPT" SecWinPT +; SectionIn 1 + + SetOutPath "$INSTDIR" + + File "WinPT.exe" + File "PTD.dll" + File "keyserver.conf" + + SetOutPath "$INSTDIR\Doc" + + File "README.winpt.txt" + + WriteRegStr HKCU "Software\GNU\GnuPG" "gpgProgram" "$INSTDIR\gpg.exe" + + StrCpy $WINPT_INSTALLED 1 + +SectionEnd ; Section WinPT +!endif + + ;---------------------- Section "Documentation" SecDoc ; SectionIn 1 @@ -192,6 +227,12 @@ Section "Documentation" SecDoc File "NEWS.txt" File "FAQ.txt" +!ifdef WITH_WINPT + File "NEWS.winpt.txt" +!endif ; WITH_WINPT + + StrCpy $DOC_INSTALLED 1 + SectionEnd ; Section Documentation @@ -204,15 +245,73 @@ Section "Source" SecSource ; Note that we include the uncompressed tarball because this allows ; far better compression results for the distribution. We might ; want to compress it again after installation. - File "gnupg-1.4.0.tar" + File "gnupg-${VERSION}.tar" SectionEnd ; Section Source !endif -;------------------ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; The last section is a hidden one; used to finish up things. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Section "-Finish" + + ;;-------------------------- + ;; Create the uninstaller + ;;-------------------------- + WriteUninstaller "$INSTDIR\uninst-gnupg.exe" + + ;;--------------------- + ;; Create Menu entries + ;;--------------------- + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" + + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \ + "$INSTDIR\Doc\README.txt" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG NEWS.lnk" \ + "$INSTDIR\Doc\NEWS.txt" + + IntCmp $DOC_INSTALLED 1 0 +2 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG Manual Page.lnk" \ + "$INSTDIR\Doc\gpg.man" + + + IntCmp $WINPT_INSTALLED 1 0 no_winpt_menu no_winpt_menu + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\winpt.lnk" \ + "$INSTDIR\winpt.exe" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\WinPT README.lnk" \ + "$INSTDIR\Doc\README.winpt.txt" + IntCmp $DOC_INSTALLED 1 0 +2 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\WinPT NEWS.lnk" \ + "$INSTDIR\Doc\NEWS.winpt.txt" + + no_winpt_menu: + + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\uninst-gnupg.lnk" \ + "$INSTDIR\uninst-gnupg.exe" + + + !insertmacro MUI_STARTMENU_WRITE_END + + +SectionEnd ; "-Finish" + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Create the section for the uninstaller +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Section "Uninstall" + ;;------------------------ + ;; Delete files + ;;------------------------ Delete "$INSTDIR\gpg.exe" Delete "$INSTDIR\gpgkeys_finger.exe" Delete "$INSTDIR\gpgkeys_hkp.exe" @@ -222,6 +321,8 @@ Section "Uninstall" Delete "$INSTDIR\Doc\README.txt" Delete "$INSTDIR\Doc\README.W32" Delete "$INSTDIR\Doc\COPYING.txt" + Delete "$INSTDIR\Doc\COPYING.LIB.txt" + Delete "$INSTDIR\Doc\README.iconv.txt" Delete "$INSTDIR\iconv.dll" @@ -229,6 +330,11 @@ Section "Uninstall" Delete "$INSTDIR\gpgsplit.exe" Delete "$INSTDIR\gpgv.exe" + Delete "$INSTDIR\WinPT.exe" + Delete "$INSTDIR\PTD.dll" + Delete "$INSTDIR\Doc\README.winpt.txt" + Delete "$INSTDIR\Doc\NEWS.winpt.txt" + Delete "$INSTDIR\Doc\keyserver.conf" Delete "$INSTDIR\Doc\gnupg.man" Delete "$INSTDIR\Doc\gpg.man" @@ -236,13 +342,36 @@ Section "Uninstall" Delete "$INSTDIR\Doc\NEWS.txt" Delete "$INSTDIR\Doc\FAQ.txt" - Delete "$INSTDIR\Uninstall.exe" + Delete "$INSTDIR\uninst-gnupg.exe" + ;;------------------------ + ;; Delete directories + ;;------------------------ RMDir "$INSTDIR\Doc" RMDir "$INSTDIR\Src" RMDir "$INSTDIR\gnupg.nls" RMDir "$INSTDIR" + + ;;--------------------------------------------------- + ;; Delete the menu entries and any empty parent menus + ;;--------------------------------------------------- + !insertmacro MUI_STARTMENU_GETFOLDER Application $MYTMP + Delete "$SMPROGRAMS\$MYTMP\*.lnk" + StrCpy $MYTMP "$SMPROGRAMS\$MYTMP" + startMenuDeleteLoop: + ClearErrors + RMDir $MYTMP + GetFullPathName $MYTMP "$MYTMP\.." + IfErrors startMenuDeleteLoopDone + StrCmp $MYTMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop + startMenuDeleteLoopDone: + + + ;;----------------------- + ;; Cleanup the registry + ;;----------------------- + DeleteRegValue HKCU "Software\GNU\GnuPG" "Start Menu Folder" DeleteRegValue HKLM "Software\GNU\GnuPG" "Install Directory" DeleteRegKey /ifempty HKLM "Software\GNU\GnuPG" @@ -314,6 +443,10 @@ Function InstallIconv SetOutPath "$INSTDIR" File "iconv.dll" + SetOutPath "$INSTDIR\doc" + File "COPYING.LIB.txt" + File "README.iconv.txt" + FunctionEnd @@ -327,11 +460,15 @@ LangString T_About ${LANG_ENGLISH} \ It can be used to encrypt data and to create digital signatures. \ It includes an advanced key management facility and is compliant \ with the proposed OpenPGP Internet standard as described in RFC2440. \ - \r\n\r\nThis is GnuPG version ${VERSION}" + \r\n\r\n$_CLICK \ + \r\n\r\n\r\n\r\n\r\nThis is GnuPG version ${VERSION}\r\n\ + built on $%BUILDINFO%" LangString T_About ${LANG_GERMAN} \ "GnuPG is das Werzeug aus dem GNU Projekt zur sicheren Kommunikation \ sowie zum sicheren Speichern von Daten. \ - \r\n\r\nThis is GnuPG version ${VERSION}" + \r\n\r\n$_CLICK \ + \r\n\r\n\r\n\r\n\r\nDies ist GnuPG version ${VERSION}\r\n\ + erstellt am $%BUILDINFO%" LangString T_ShowReadme ${LANG_ENGLISH} "Show the README file" LangString T_ShowReadme ${LANG_GERMAN} "Die README Datei anzeigen" @@ -351,6 +488,13 @@ LangString DESC_SecTools ${LANG_ENGLISH} \ LangString DESC_SecTools ${LANG_GERMAN} \ "Weitere Tools wie gpgv und gpgsplit" +!ifdef WITH_WINPT +LangString DESC_SecWinPT ${LANG_ENGLISH} \ + "The Windows Privacy Tray (WinPT)" +LangString DESC_SecWinPT ${LANG_GERMAN} \ + "Der Windows Privacy Tray (WinPT)" +!endif + LangString DESC_SecDoc ${LANG_ENGLISH} \ "Manual pages and a FAQ" LangString DESC_SecDoc ${LANG_GERMAN} \ @@ -360,6 +504,9 @@ LangString DESC_SecDoc ${LANG_GERMAN} \ !insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase) !insertmacro MUI_DESCRIPTION_TEXT ${SecNLS} $(DESC_SecNLS) !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools) +!ifdef WITH_WINPT + !insertmacro MUI_DESCRIPTION_TEXT ${SecWinPT} $(DESC_SecWinPT) +!endif !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc) !insertmacro MUI_FUNCTION_DESCRIPTION_END |