# inst.nsi - Installer for GnuPG on Windows. # Copyright (C) 2005, 2014, 2019-2021 g10 Code GmbH # 2017 Intevation GmbH # # This file is part of GnuPG. # # GnuPG is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # GnuPG is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # Macros to provide for invocation: # INST_DIR # INST6_DIR # BUILD_DIR # TOP_SRCDIR # W32_SRCDIR # BUILD_ISODATE - the build date, e.g. "2014-10-31" # BUILD_DATESTR - ditto w/o '-', e.g. "20141031" # NAME # VERSION # PROD_VERSION # # WITH_GUI - Include the GPA GUI # This one must be done before addplugindir. Unicode true !cd "${INST_DIR}" !addincludedir "${W32_SRCDIR}" !addplugindir "${BUILD_DIR}" # The package name and version. PRETTY_PACKAGE is a user visible name # only while PACKAGE is useful for filenames etc. PROD_VERSION is the # product version and needs to be in the format "MAJ.MIN.MIC.BUILDNR". !define PACKAGE "gnupg" !define PACKAGE_SHORT "gnupg" !define PRETTY_PACKAGE "GNU Privacy Guard" !define PRETTY_PACKAGE_SHORT "GnuPG" !define COMPANY "The GnuPG Project" !define COPYRIGHT "Copyright (C) 2024 g10 Code GmbH" !define DESCRIPTION "GnuPG: The GNU Privacy Guard for Windows" !define INSTALL_DIR "GnuPG" !define WELCOME_TITLE_ENGLISH \ "Welcome to the installation of GnuPG" !define WELCOME_TITLE_GERMAN \ "Willkommen bei der Installation von GnuPG" !define ABOUT_ENGLISH \ "GnuPG is the mostly used software for mail and data encryption. \ GnuPG can be used to encrypt data and to create digital signatures. \ GnuPG includes an advanced key management facility and is compliant \ with the OpenPGP Internet standard as described in RFC-4880. \ \r\n\r\n$_CLICK \ \r\n\r\n\r\n\r\n\r\nThis is GnuPG version ${VERSION} (64 bit).\r\n\ File version: ${PROD_VERSION}\r\n\ Release date: ${BUILD_ISODATE}" !define ABOUT_GERMAN \ "GnuPG is die häufigst verwendete Software zur Mail- und Datenverschlüsselung.\ \r\n\r\n$_CLICK \ \r\n\r\n\r\n\r\n\r\nDies ist GnuPG Version ${VERSION} (64 bit).\r\n\ Dateiversion: ${PROD_VERSION}\r\n\ Releasedatum: ${BUILD_ISODATE}" # The copyright license of the package. Define only one of these. !define LICENSE_GPL # Select the best compression algorithm available. The dictionary # size is the default (8 MB). !ifndef SOURCES SetCompressor lzma # SetCompressorDictSize 8 !endif # We use the modern UI. !include "MUI.nsh" # Some helper some !include "LogicLib.nsh" !include "x64.nsh" # We support user mode installation but prefer system wide !define MULTIUSER_EXECUTIONLEVEL Highest !define MULTIUSER_MUI !define MULTIUSER_INSTALLMODE_COMMANDLINE !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\${PACKAGE_SHORT}" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\${PACKAGE_SHORT}" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "Install Directory" !define MULTIUSER_INSTALLMODE_INSTDIR "${PACKAGE_SHORT}" !include "MultiUser.nsh" # Set the package name. Note that this name should not be suffixed # with the version because this would get displayed in the start menu. # Given that a slash in the name troubles Windows startmenu creation # we set the Startmenu explicit below. Name "${PRETTY_PACKAGE}" # Set the output filename. OutFile "${NAME}-${VERSION}_${BUILD_DATESTR}.exe" #Fixme: Do we need a logo? #Icon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico" #UninstallIcon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico" # Set the installation directory. !ifndef INSTALL_DIR !define INSTALL_DIR "GnuPG" !endif InstallDir "$PROGRAMFILES64\${INSTALL_DIR}" # Add version information to the file properties. VIProductVersion "${PROD_VERSION}" VIAddVersionKey "ProductName" "${PRETTY_PACKAGE_SHORT} (${VERSION})" VIAddVersionKey "Comments" \ "GnuPG is Free Software; you can redistribute it \ and/or modify it under the terms of the GNU General Public License. \ You should have received a copy of the GNU General Public License \ along with this software; if not, write to the Free Software \ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, \ MA 02110-1301, USA" VIAddVersionKey "CompanyName" "${COMPANY}" VIAddVersionKey "LegalTrademarks" "" VIAddVersionKey "LegalCopyright" "${COPYRIGHT}" VIAddVersionKey "FileDescription" "${DESCRIPTION}" VIAddVersionKey "FileVersion" "${PROD_VERSION}" # Interface Settings # !define MUI_ABORTWARNING !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_UNFINISHPAGE_NOAUTOCLOSE !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "${W32_SRCDIR}\gnupg-logo-150x57.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP "${W32_SRCDIR}\gnupg-logo-164x314.bmp" # Remember the installer language !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" !define MUI_LANGDLL_REGISTRY_KEY "Software\GnuPG" !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" # # The list of wizard pages. # !define MUI_WELCOMEPAGE_TITLE "$(T_WelcomeTitle)" !define MUI_WELCOMEPAGE_TEXT "$(T_About)" !insertmacro MUI_PAGE_WELCOME !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" !define MUI_PAGE_HEADER_SUBTEXT "$(T_GPLHeader)" !define MUI_LICENSEPAGE_TEXT_BOTTOM "$(T_GPLShort)" !insertmacro MUI_PAGE_LICENSE "${TOP_SRCDIR}/COPYING" !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning !define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion !insertmacro MUI_PAGE_COMPONENTS # We don't have MUI_PAGE_DIRECTORY !ifdef WITH_GUI Page custom CustomPageOptions Var STARTMENU_FOLDER !define MUI_PAGE_CUSTOMFUNCTION_PRE CheckIfStartMenuWanted !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GnuPG" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" # We need to set the Startmenu name explicitly because a slash in the # name is not possible. !define MUI_STARTMENUPAGE_DEFAULTFOLDER "GnuPG" !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER !endif !define MUI_PAGE_CUSTOMFUNCTION_PRE PrintCloseOtherApps !insertmacro MUI_PAGE_INSTFILES #!define MUI_PAGE_CUSTOMFUNCTION_PRE ShowFinalWarnings !define MUI_FINISHPAGE_SHOWREADME "README.txt" !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)" #!define MUI_FINISHPAGE_RUN #!define MUI_FINISHPAGE_RUN_FUNCTION RunOnFinish #!define MUI_FINISHPAGE_RUN_TEXT "$(T_RunKeyManager)" #!define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_LINK "$(T_MoreInfo)" !define MUI_FINISHPAGE_LINK_LOCATION "$(T_MoreInfoURL)" !insertmacro MUI_PAGE_FINISH # Uninstaller pages. !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES #Page license #Page components #Page directory #Page instfiles #UninstPage uninstConfirm #UninstPage instfiles # Language support. This has to be done after defining the pages, but # before defining the translation strings. Confusing. !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_RESERVEFILE_LANGDLL !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ReserveFile "${BUILD_DIR}\g4wihelp.dll" ReserveFile "${W32_SRCDIR}\gnupg-logo-150x57.bmp" ReserveFile "${W32_SRCDIR}\gnupg-logo-164x314.bmp" ReserveFile "${TOP_SRCDIR}\COPYING" ReserveFile "${W32_SRCDIR}\inst-options.ini" # Language support LangString T_LangCode ${LANG_ENGLISH} "en" LangString T_LangCode ${LANG_GERMAN} "de" # The WelcomeTitle is displayed on the first page. LangString T_WelcomeTitle ${LANG_ENGLISH} "${WELCOME_TITLE_ENGLISH}" LangString T_WelcomeTitle ${LANG_GERMAN} "${WELCOME_TITLE_GERMAN}" # The About string as displayed on the first page. LangString T_About ${LANG_ENGLISH} "${ABOUT_ENGLISH}" LangString T_About ${LANG_GERMAN} "${ABOUT_GERMAN}" # Startup page LangString T_GPLHeader ${LANG_ENGLISH} \ "This software is licensed under the terms of the GNU General Public \ License (GNU GPL)." LangString T_GPLHeader ${LANG_GERMAN} \ "Diese Software ist unter der GNU General Public License \ (GNU GPL) lizensiert." LangString T_GPLShort ${LANG_ENGLISH} \ "In short: You are allowed to run this software for any purpose. \ You may distribute it as long as you give the recipients the same \ rights you have received." LangString T_GPLShort ${LANG_GERMAN} \ "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \ einzusetzen. Sie können die Software weitergeben, sofern Sie dem \ Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben." LangString T_RunKeyManager ${LANG_ENGLISH} \ "Run the key manager" LangString T_RunKeyManager ${LANG_GERMAN} \ "Die Schlüsselverwaltung aufrufen" LangString T_MoreInfo ${LANG_ENGLISH} \ "Click here to see how to help the GnuPG Project" LangString T_MoreInfo ${LANG_GERMAN} \ "Hier klicken um dem GnuPG Projekt zu zu helfen" LangString T_MoreInfoURL ${LANG_ENGLISH} "https://gnupg.org/donate" LangString T_MoreInfoURL ${LANG_GERMAN} "https://gnupg.org/donate" LangString T_ShowReadme ${LANG_ENGLISH} \ "Show the README file" LangString T_ShowReadme ${LANG_GERMAN} \ "Die README Datei anzeigen" LangString T_NoKeyManager ${LANG_ENGLISH} \ "No key manager has been installed, thus we can't run one now." LangString T_NoKeyManager ${LANG_GERMAN} \ "Es wurde keine Schlüsselverwaltung installiert. \ Deswegen kann sie jetzt auch nicht ausgeführt werden." # Functions # Custom functions and macros for this installer. LangString T_AlreadyRunning ${LANG_ENGLISH} \ "An instance of this installer is already running." LangString T_AlreadyRunning ${LANG_GERMAN} \ "Ein Exemplar dieses Installers läuft bereits." Function G4wRunOnce Push $R0 StrCpy $R0 "gnupg" g4wihelp::runonce StrCmp $R0 0 +3 MessageBox MB_OK $(T_AlreadyRunning) Abort Pop $R0 FunctionEnd # # Control function for the Custom page to select special # install options. # Function CustomPageOptions !insertmacro MUI_HEADER_TEXT "$(T_InstallOptions)" "$(T_InstallOptLinks)" # Note, that the default selection is done in the ini file !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \ "Field 1" "Text" "$(T_InstOptLabelA)" !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \ "Field 2" "Text" "$(T_InstOptFieldA)" !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \ "Field 3" "Text" "$(T_InstOptFieldB)" !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \ "Field 4" "Text" "$(T_InstOptFieldC)" !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \ "Field 5" "Text" "$(T_InstOptLabelB)" !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${W32_SRCDIR}/inst-options.ini" FunctionEnd # Check whether GnuPG has already been installed. This is called as # a leave function from the components page. A call to abort will get # back to the components selection. Function CheckExistingVersion ClearErrors FileOpen $0 "$INSTDIR\VERSION" r IfErrors nexttest FileRead $0 $R0 FileRead $0 $R1 FileClose $0 Push $R1 Call TrimNewLines Pop $R1 MessageBox MB_YESNO "$(T_FoundExistingVersion)" IDYES leave Abort nexttest: ClearErrors ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" "DisplayVersion" IfErrors leave 0 MessageBox MB_YESNO "$(T_FoundExistingVersionB)" IDYES leave Abort leave: FunctionEnd # PrintNonAdminWarning # Check whether the current user is in the Administrator group or an # OS version without the need for an Administrator is in use. Print a # diagnostic if this is not the case and abort installation. Function PrintNonAdminWarning ClearErrors UserInfo::GetName IfErrors leave Pop $0 UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" leave +1 MessageBox MB_YESNO "$(T_AdminWanted)" IDNO exit goto leave exit: Quit leave: FunctionEnd # Check whether the start menu is actually wanted. Function CheckIfStartMenuWanted !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \ "Field 2" "State" IntCmp $R0 1 +2 Abort FunctionEnd # Check whether this is a reinstall and popup a message box to explain # that it is better to close other apps before continuing Function PrintCloseOtherApps IfFileExists $INSTDIR\bin\gpg.exe print_warning IfFileExists $INSTDIR\bin\gpa.exe print_warning Return print_warning: MessageBox MB_OK|MB_ICONEXCLAMATION "$(T_CloseOtherApps)" FunctionEnd # Called right before the final page to show more warnings. #Function ShowFinalWarnings # leave: #FunctionEnd #----------------------------------------------- # Strings pertaining to the install options page #----------------------------------------------- # Installation options title LangString T_InstallOptions ${LANG_ENGLISH} "Install Options" LangString T_InstallOptions ${LANG_GERMAN} "Installationsoptionen" # Installation options subtitle 1 LangString T_InstallOptLinks ${LANG_ENGLISH} "Start links" LangString T_InstallOptLinks ${LANG_GERMAN} "Startlinks" LangString T_InstOptLabelA ${LANG_ENGLISH} \ "Please select where GnuPG shall install links:" LangString T_InstOptLabelA ${LANG_GERMAN} \ "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:" LangString T_InstOptLabelB ${LANG_ENGLISH} \ "(Only programs will be linked into the quick launch bar.)" LangString T_InstOptLabelB ${LANG_GERMAN} \ "(In die Schnellstartleiste werden nur Verknüpfungen für \ Programme angelegt.) " LangString T_InstOptFieldA ${LANG_ENGLISH} \ "Start Menu" LangString T_InstOptFieldA ${LANG_GERMAN} \ "Startmenü" LangString T_InstOptFieldB ${LANG_ENGLISH} \ "Desktop" LangString T_InstOptFieldB ${LANG_GERMAN} \ "Arbeitsfläche" LangString T_InstOptFieldC ${LANG_ENGLISH} \ "Quick Launch Bar" LangString T_InstOptFieldC ${LANG_GERMAN} \ "Schnellstartleiste" #------------------------------------------------ # String pertaining to the existing version check #------------------------------------------------ LangString T_FoundExistingVersion ${LANG_ENGLISH} \ "Version $R1 has already been installed. $\r$\n\ Do you want to overwrite it with version ${VERSION}?" LangString T_FoundExistingVersion ${LANG_GERMAN} \ "Version $R1 ist hier bereits installiert. $\r$\n\ Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\ $\r$\n\ (Sie können in jedem Fall mit JA antworten, falls es sich um \ eine neuere oder dieselbe Version handelt.)" LangString T_FoundExistingVersionB ${LANG_ENGLISH} \ "A version of GnuPG has already been installed on the system. \ $\r$\n\ $\r$\n\ Do you want to continue installing GnuPG?" LangString T_FoundExistingVersionB ${LANG_GERMAN} \ "Eine Version von GnuPG ist hier bereits installiert. \ $\r$\n\ $\r$\n\ Möchten die die Installation von GnuPG fortführen?" # From Function PrintNonAdminWarning LangString T_AdminWanted ${LANG_ENGLISH} \ "Warning: It is recommended to install GnuPG system-wide with \ administrator rights. \ $\r$\n\ $\r$\n\ Do you want to continue installing GnuPG without administrator rights?" LangString T_AdminWanted ${LANG_GERMAN} \ "Achtung: Es wird empfohlen GnuPG systemweit mit \ Administratorrechten zu installieren. \ $\r$\n\ $\r$\n\ Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?" # From Function PrintCloseOtherApps LangString T_CloseOtherApps ${LANG_ENGLISH} \ "Please make sure that other applications are not running. \ GnuPG will try to install anyway but a reboot may be required." LangString T_CloseOtherApps ${LANG_GERMAN} \ "Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \ sind. GnuPG wird auf jeden Fall versuchen, eine Installation \ durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten." # TrimNewlines - taken from the NSIS reference # input, top of stack (e.g. whatever$\r$\n) # output, top of stack (replaces, with e.g. whatever) # modifies no other variables. Function TrimNewlines Exch $R0 Push $R1 Push $R2 StrCpy $R1 0 loop: IntOp $R1 $R1 - 1 StrCpy $R2 $R0 1 $R1 StrCmp $R2 "$\r" loop StrCmp $R2 "$\n" loop IntOp $R1 $R1 + 1 IntCmp $R1 0 no_trim_needed StrCpy $R0 $R0 $R1 no_trim_needed: Pop $R2 Pop $R1 Exch $R0 FunctionEnd # AddToPath - Adds the given dir to the search path. # Input - head of the stack Function AddToPath ClearErrors UserInfo::GetName IfErrors add_admin Pop $0 UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" add_admin add_user add_admin: Exch $0 g4wihelp::path_add "$0" "0" goto add_done add_user: Exch $0 g4wihelp::path_add "$0" "1" goto add_done add_done: StrCmp $R5 "0" add_to_path_done SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 add_to_path_done: Pop $0 FunctionEnd # RemoveFromPath - Remove a given dir from the path # Input: head of the stack Function un.RemoveFromPath ClearErrors UserInfo::GetName IfErrors remove_admin Pop $0 UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" remove_admin remove_user remove_admin: Exch $0 g4wihelp::path_remove "$0" "0" goto remove_done remove_user: Exch $0 g4wihelp::path_remove "$0" "1" goto remove_done remove_done: StrCmp $R5 "0" remove_from_path_done SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 remove_from_path_done: Pop $0 FunctionEnd # # Define the installer sections. # Section "-gnupginst" SetOutPath "$INSTDIR" File "${BUILD_DIR}/README.txt" # Write a version file. FileOpen $0 "$INSTDIR\VERSION" w FileWrite $0 "${PACKAGE}$\r$\n" FileWrite $0 "${VERSION}$\r$\n" FileClose $0 WriteRegStr SHCTX "Software\GnuPG" "Install Directory" $INSTDIR # If we are reinstalling, try to kill a possible running gpa using # an already installed gpa. ifFileExists "$INSTDIR\bin\launch-gpa.exe" 0 no_uiserver nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"' no_uiserver: # If we are reinstalling, try to kill a possible running agent using # an already installed gpgconf. ifFileExists "$INSTDIR\bin\gpgconf.exe" 0 no_gpgconf nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"' nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"' nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "keyboxd"' no_gpgconf: # Add the bin directory to the PATH Push "$INSTDIR\bin" Call AddToPath DetailPrint "Added $INSTDIR\bin to PATH" SectionEnd LangString DESC_Menu_gnupg_readme ${LANG_ENGLISH} \ "General information on GnuPG" LangString DESC_Menu_gnupg_readme ${LANG_GERMAN} \ "Allgemeine Informationen zu GnuPG" Section "GnuPG" SEC_gnupg SectionIn RO SetOutPath "$INSTDIR\bin" File "bin/gpg.exe" File "bin/gpgv.exe" File "bin/gpgsm.exe" File "bin/gpgconf.exe" File "bin/gpg-connect-agent.exe" File "bin/gpg-card.exe" File "bin/gpgtar.exe" File "bin/gpg-wks-client.exe" File "libexec/dirmngr_ldap.exe" File "libexec/gpg-preset-passphrase.exe" File "libexec/gpg-check-pattern.exe" ClearErrors SetOverwrite try File "bin/gpg-agent.exe" SetOverwrite lastused ifErrors 0 +3 File /oname=gpg-agent.exe.tmp "bin/gpg-agent.exe" Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe ClearErrors SetOverwrite try File "bin/dirmngr.exe" SetOverwrite lastused ifErrors 0 +3 File /oname=dirmngr.exe.tmp "bin/dirmngr.exe" Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe ClearErrors SetOverwrite try File "libexec/scdaemon.exe" SetOverwrite lastused ifErrors 0 +3 File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe" Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe ClearErrors SetOverwrite try File "libexec/keyboxd.exe" SetOverwrite lastused ifErrors 0 +3 File /oname=keyboxd.exe.tmp "libexec/keyboxd.exe" Rename /REBOOTOK keyboxd.exe.tmp keyboxd.exe SetOutPath "$INSTDIR\share\gnupg" File "share/gnupg/distsigkey.gpg" File "share/gnupg/sks-keyservers.netCA.pem" SetOutPath "$INSTDIR\share\doc\gnupg\examples" File "share/doc/gnupg/examples/pwpattern.list" SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES" File share/locale/ca/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES" File share/locale/cs/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES" File share/locale/da/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES" File share/locale/de/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES" File share/locale/el/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES" File share/locale/en@boldquot/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\en@quot\LC_MESSAGES" File share/locale/en@quot/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES" File share/locale/eo/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES" File share/locale/es/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES" File share/locale/et/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES" File share/locale/fi/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES" File share/locale/fr/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES" File share/locale/gl/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES" File share/locale/hu/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES" File share/locale/id/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES" File share/locale/it/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES" File share/locale/ja/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES" File share/locale/nb/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES" File share/locale/pl/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES" File share/locale/pt/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES" File share/locale/ro/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES" File share/locale/ru/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES" File share/locale/sk/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES" File share/locale/sv/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES" File share/locale/tr/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES" File share/locale/uk/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" File share/locale/zh_CN/LC_MESSAGES/gnupg2.mo SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" File share/locale/zh_TW/LC_MESSAGES/gnupg2.mo SectionEnd LangString DESC_SEC_gnupg ${LANG_ENGLISH} \ "The GnuPG Core is the actual encrypt core and a set of command \ line utilities." LangString DESC_SEC_gnupg ${LANG_GERMAN} \ "Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \ dieser Software. Der GnuPG Core stellt die eigentliche \ Verschlüsselung sowie die Verwaltung der Schlüssel bereit." LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \ "Show the manual for the GnuPG Core" LangString DESC_Menu_gnupg_manual ${LANG_GERMAN} \ "Das Handbuch zum GnuPG Kern anzeigen" Section "-libgpg-error" SEC_libgpg_error SetOutPath "$INSTDIR\bin" File bin/libgpg-error-0.dll SetOutPath "$INSTDIR\lib" File /oname=libgpg-error.imp lib/libgpg-error.dll.a SetOutPath "$INSTDIR\include" File include/gpg-error.h SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES" File share/locale/cs/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES" File share/locale/da/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES" File share/locale/de/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES" File share/locale/eo/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES" File share/locale/es/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES" File share/locale/fr/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES" File share/locale/hu/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES" File share/locale/it/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES" File share/locale/ja/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES" File share/locale/nl/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES" File share/locale/pl/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES" File share/locale/pt/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES" File share/locale/ro/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES" File share/locale/ru/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES" File share/locale/sr/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES" File share/locale/sv/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES" File share/locale/uk/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES" File share/locale/vi/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" File share/locale/zh_CN/LC_MESSAGES/libgpg-error.mo SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" File share/locale/zh_TW/LC_MESSAGES/libgpg-error.mo SectionEnd Section "-zlib" SEC_zlib SetOutPath "$INSTDIR\bin" File bin/zlib1.dll SectionEnd Section "-npth" SEC_npth SetOutPath "$INSTDIR\bin" File bin/libnpth-0.dll SetOutPath "$INSTDIR\lib" File /oname=libnpth.imp lib/libnpth.dll.a SetOutPath "$INSTDIR\include" File include/npth.h SectionEnd Section "-gcrypt" SEC_gcrypt SetOutPath "$INSTDIR\bin" File bin/libgcrypt-20.dll SetOutPath "$INSTDIR\lib" File /oname=libgcrypt.imp lib/libgcrypt.dll.a SetOutPath "$INSTDIR\include" File include/gcrypt.h SectionEnd Section "-assuan" SEC_assuan SetOutPath "$INSTDIR\bin" File bin/libassuan-9.dll SetOutPath "$INSTDIR\lib" File /oname=libassuan.imp lib/libassuan.dll.a SetOutPath "$INSTDIR\include" File include/assuan.h SectionEnd Section "-ksba" SEC_ksba SetOutPath "$INSTDIR\bin" File bin/libksba-8.dll SetOutPath "$INSTDIR\lib" File /oname=libksba.imp lib/libksba.dll.a SetOutPath "$INSTDIR\include" File include/ksba.h SectionEnd Section "-gpgme" SEC_gpgme SetOutPath "$INSTDIR\bin" File bin/libgpgme-11.dll File /nonfatal bin/libgpgme-glib-11.dll File libexec/gpgme-w32spawn.exe SetOutPath "$INSTDIR\lib" File /oname=libgpgme.imp lib/libgpgme.dll.a File /nonfatal /oname=libgpgme-glib.imp lib/libgpgme-glib.dll.a SetOutPath "$INSTDIR\include" File include/gpgme.h SectionEnd Section "-sqlite" SEC_sqlite SetOutPath "$INSTDIR\bin" File bin/libsqlite3-0.dll SectionEnd !ifdef WITH_GUI Section "-libiconv" SEC_libiconv SetOutPath "$INSTDIR\bin" File bin/libiconv-2.dll SectionEnd Section "-gettext" SEC_gettext SetOutPath "$INSTDIR\bin" File bin/libintl-8.dll SectionEnd Section "-glib" SEC_glib SetOutPath "$INSTDIR\bin" File bin/libgio-2.0-0.dll File bin/libglib-2.0-0.dll File bin/libgmodule-2.0-0.dll File bin/libgobject-2.0-0.dll File bin/libgthread-2.0-0.dll File bin/gspawn-win32-helper.exe File bin/gspawn-win32-helper-console.exe File bin/libffi-6.dll SectionEnd Section "-libpng" SEC_libpng SetOutPath "$INSTDIR\bin" File bin/libpng14-14.dll SectionEnd #Section "-jpeg" SEC_jpeg # SetOutPath "$INSTDIR" # File bin/jpeg62.dll #SectionEnd Section "-cairo" SEC_cairo SetOutPath "$INSTDIR\bin" File bin/libcairo-gobject-2.dll File bin/libpangocairo-1.0-0.dll File bin/libcairo-2.dll File bin/libcairo-script-interpreter-2.dll SectionEnd Section "-pixman" SEC_pixman SetOutPath "$INSTDIR\bin" File bin/libpixman-1-0.dll SectionEnd Section "-pango" SEC_pango SetOutPath "$INSTDIR\bin" File bin/pango-querymodules.exe File bin/libpango-1.0-0.dll File bin/libpangowin32-1.0-0.dll SetOutPath "$INSTDIR\lib\pango\1.6.0\modules" File lib/pango/1.6.0/modules/pango-basic-win32.dll File lib/pango/1.6.0/modules/pango-arabic-lang.dll File lib/pango/1.6.0/modules/pango-indic-lang.dll SetOutPath "$INSTDIR\etc\pango" File ${W32_SRCDIR}/pango.modules SectionEnd Section "-atk" SEC_atk SetOutPath "$INSTDIR\bin" File bin/libatk-1.0-0.dll SectionEnd Section "-gtk+" SEC_gtk_ SetOutPath "$INSTDIR\bin" File bin/libgdk_pixbuf-2.0-0.dll File bin/libgdk-win32-2.0-0.dll File bin/libgtk-win32-2.0-0.dll SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0" File /oname=loaders.cache ${W32_SRCDIR}/gdk-pixbuf-loaders.cache SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders" File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-bmp.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-emf.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-gif.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-ico.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-jpeg.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-tiff.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-wmf.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.dll File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.dll SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\engines" File lib/gtk-2.0/2.10.0/engines/libwimp.dll File lib/gtk-2.0/2.10.0/engines/libpixmap.dll SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\immodules" File lib/gtk-2.0/2.10.0/immodules/im-thai.dll File lib/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.dll File lib/gtk-2.0/2.10.0/immodules/im-multipress.dll File lib/gtk-2.0/2.10.0/immodules/im-ti-er.dll File lib/gtk-2.0/2.10.0/immodules/im-am-et.dll File lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll File lib/gtk-2.0/2.10.0/immodules/im-inuktitut.dll File lib/gtk-2.0/2.10.0/immodules/im-viqr.dll File lib/gtk-2.0/2.10.0/immodules/im-ti-et.dll File lib/gtk-2.0/2.10.0/immodules/im-ipa.dll File lib/gtk-2.0/2.10.0/immodules/im-ime.dll SetOutPath "$INSTDIR\share\themes\Default\gtk-2.0-key" File share/themes/Default/gtk-2.0-key/gtkrc SetOutPath "$INSTDIR\share\themes\MS-Windows\gtk-2.0" File share/themes/MS-Windows/gtk-2.0/gtkrc SetOutPath "$INSTDIR\etc\gtk-2.0" File etc/gtk-2.0/im-multipress.conf SectionEnd !endif Section "-pinentry" SEC_pinentry SetOutPath "$INSTDIR\bin" File /oname=pinentry-basic.exe "bin/pinentry-w32.exe" SectionEnd !ifdef WITH_GUI Section "gpa" SEC_gpa SectionIn RO SetOutPath "$INSTDIR\bin" File bin/gpa.exe File bin/launch-gpa.exe SectionEnd LangString DESC_SEC_gpa ${LANG_ENGLISH} \ "The GnuPG Assistant is the graphical interface of GnuPG" LangString DESC_SEC_gpa ${LANG_GERMAN} \ "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG." LangString DESC_Menu_gpa ${LANG_ENGLISH} \ "Run the GnuGP Assistant." LangString DESC_Menu_gpa ${LANG_GERMAN} \ "Den GnuPG Assistenten starten." Section "gpgex" SEC_gpgex SetOutPath "$INSTDIR\bin" ClearErrors SetOverwrite try File bin/gpgex.dll SetOverwrite lastused ifErrors 0 do_reg File /oname=gpgex.dll.tmp bin/gpgex.dll Rename /REBOOTOK gpgex.dll.tmp gpgex.dll do_reg: ClearErrors RegDLL "$INSTDIR\bin\gpgex.dll" ifErrors 0 +2 MessageBox MB_OK "$(T_GPGEX_RegFailed)" ${If} ${RunningX64} # Install the 64 bit version of the plugin. # Note that we install this in addition to the 32 bit version so that # the 32 bit version can be used by file dialogs of 32 bit programs. ClearErrors SetOverwrite try File /oname=gpgex6.dll "${INST6_DIR}/bin/gpgex.dll" SetOverwrite lastused ifErrors 0 do_reg64 File /oname=gpgex6.dll.tmp "${INST6_DIR}/bin/gpgex.dll" Rename /REBOOTOK gpgex6.dll.tmp gpgex6.dll do_reg64: # Register the DLL. We need to register both versions. However # RegDLL can't be used for 64 bit and InstallLib seems to be a # registry hack. ClearErrors nsExec::ExecToLog '"$SYSDIR\regsvr32" "/s" "$INSTDIR\bin\gpgex6.dll"' ifErrors 0 +2 MessageBox MB_OK "$(T_GPGEX_RegFailed) (64 bit)" # Note: There is no need to install the help an mo files because # they are identical to those installed by the 32 bit version. ${EndIf} SectionEnd LangString T_GPGEX_RegFailed ${LANG_ENGLISH} \ "Warning: Registration of the Explorer plugin failed." LangString DESC_SEC_gpgex ${LANG_ENGLISH} \ "GnuPG Explorer Extension" !endif Section "-gnupglast" SEC_gnupglast SetOutPath "$INSTDIR" SectionEnd # # Define the uninstaller sections. # # (reverse order of the installer sections!) # Section "-un.gnupglast" ifFileExists "$INSTDIR\bin\launch-gpa.exe" 0 no_uiserver nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"' no_uiserver: ifFileExists "$INSTDIR\bin\gpgconf.exe" 0 no_gpgconf nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "all"' no_gpgconf: SectionEnd Section "-un.gpgex" UnRegDLL "$INSTDIR\bin\gpgex.dll" Delete /REBOOTOK "$INSTDIR\bin\gpgex.dll" ${If} ${RunningX64} nsExec::ExecToLog '"$SYSDIR\regsvr32" "/u" "/s" "$INSTDIR\bin\gpgex6.dll"' Delete /REBOOTOK "$INSTDIR\bin\gpgex6.dll" ${EndIf} SectionEnd !ifdef WITH_GUI Section "-un.gpa" Delete "$INSTDIR\bin\gpa.exe" Delete "$INSTDIR\bin\launch-gpa.exe" RMDir "$INSTDIR\share\gpa" SectionEnd !endif Section "-un.pinentry" Delete "$INSTDIR\bin\pinentry-basic.exe" SectionEnd !ifdef WITH_GUI Section "-un.gtk+" Delete "$INSTDIR\bin\libgdk_pixbuf-2.0-0.dll" Delete "$INSTDIR\bin\libgdk-win32-2.0-0.dll" Delete "$INSTDIR\bin\libgtk-win32-2.0-0.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ani.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-bmp.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-emf.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-gif.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-ico.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-jpeg.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-tiff.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-wmf.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-icns.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pcx.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-png.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pnm.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-qtif.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ras.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-tga.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-wbmp.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xbm.dll" Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xpm.dll" RMDir "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders" RMDir "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0" RMDir "$INSTDIR\lib\gdk-pixbuf-2.0" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libwimp.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libpixmap.dll" RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\engines" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-thai.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cyrillic-translit.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-multipress.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-er.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-am-et.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cedilla.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-inuktitut.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-viqr.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-et.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ipa.dll" Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ime.dll" RMDir "$INSTDIR\lib\gtk-2.0\2.10.0\immodules" RMDir "$INSTDIR\lib\gtk-2.0\2.10.0" RMDir "$INSTDIR\lib\gtk-2.0" Delete "$INSTDIR\share\themes\Default\gtk-2.0-key\gtkrc" RMDir "$INSTDIR\share\themes\Default\gtk-2.0-key" RMDir "$INSTDIR\share\themes\Default" Delete "$INSTDIR\share\themes\MS-Windows\gtk-2.0\gtkrc" RMDir "$INSTDIR\share\themes\MS-Windows\gtk-2.0" RMDir "$INSTDIR\share\themes\MS-Windows" RMDir "$INSTDIR\share\themes" Delete "$INSTDIR\etc\gtk-2.0\im-multipress.conf" RMDir "$INSTDIR\etc\gtk-2.0" SectionEnd Section "-un.atk" Delete "$INSTDIR\bin\libatk-1.0-0.dll" SectionEnd Section "-un.pango" Delete "$INSTDIR\bin\pango-querymodules.exe" Delete "$INSTDIR\bin\libpango-1.0-0.dll" Delete "$INSTDIR\bin\libpangowin32-1.0-0.dll" Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-basic-win32.dll" Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-arabic-lang.dll" Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-indic-lang.dll" RMDir "$INSTDIR\lib\pango\1.6.0\modules" RMDir "$INSTDIR\lib\pango\1.6.0" RMDir "$INSTDIR\lib\pango" Delete "$INSTDIR\etc\pango\pango.modules" RMDir "$INSTDIR\etc\pango" SectionEnd Section "-un.pixman" Delete "$INSTDIR\bin\libpixman-1-0.dll" SectionEnd Section "-un.cairo" Delete "$INSTDIR\bin\libcairo-gobject-2.dll" Delete "$INSTDIR\bin\libpangocairo-1.0-0.dll" Delete "$INSTDIR\bin\libcairo-2.dll" Delete "$INSTDIR\bin\libcairo-script-interpreter-2.dll" SectionEnd Section "-un.libpng" Delete "$INSTDIR\bin\libpng14-14.dll" SectionEnd Section "-un.glib" Delete "$INSTDIR\bin\libgio-2.0-0.dll" Delete "$INSTDIR\bin\libglib-2.0-0.dll" Delete "$INSTDIR\bin\libgmodule-2.0-0.dll" Delete "$INSTDIR\bin\libgobject-2.0-0.dll" Delete "$INSTDIR\bin\libgthread-2.0-0.dll" Delete "$INSTDIR\bin\gspawn-win32-helper.exe" Delete "$INSTDIR\bin\gspawn-win32-helper-console.exe" Delete "$INSTDIR\bin\libffi-6.dll" SectionEnd !endif Section "-un.gettext" Delete "$INSTDIR\bin\libintl-8.dll" SectionEnd Section "-un.libiconv" Delete "$INSTDIR\bin\libiconv-2.dll" SectionEnd Section "-un.gpgme" Delete "$INSTDIR\bin\libgpgme-11.dll" Delete "$INSTDIR\bin\libgpgme-glib-11.dll" Delete "$INSTDIR\bin\gpgme-w32spawn.exe" Delete "$INSTDIR\lib\libgpgme.imp" Delete "$INSTDIR\lib\libgpgme-glib.imp" Delete "$INSTDIR\include\gpgme.h" SectionEnd Section "-un.ksba" Delete "$INSTDIR\bin\libksba-8.dll" Delete "$INSTDIR\lib\libksba.imp" Delete "$INSTDIR\include\ksba.h" SectionEnd Section "-un.assuan" Delete "$INSTDIR\bin\libassuan-9.dll" Delete "$INSTDIR\lib\libassuan.imp" Delete "$INSTDIR\include\assuan.h" SectionEnd Section "-un.gcrypt" Delete "$INSTDIR\bin\libgcrypt-20.dll" Delete "$INSTDIR\lib\libgcrypt.imp" Delete "$INSTDIR\include\gcrypt.h" SectionEnd Section "-un.npth" Delete "$INSTDIR\bin\libnpth-0.dll" Delete "$INSTDIR\lib\libnpth.imp" Delete "$INSTDIR\include\npth.h" SectionEnd Section "-un.zlib" Delete "$INSTDIR\bin\zlib1.dll" SectionEnd Section "-un.libgpg-error" Delete "$INSTDIR\bin\libgpg-error-0.dll" Delete "$INSTDIR\lib\libgpg-error.imp" Delete "$INSTDIR\include\gpg-error.h" Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES" RMDir "$INSTDIR\share\locale\cs" Delete "$INSTDIR\share\locale\da\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\da\LC_MESSAGES" RMDir "$INSTDIR\share\locale\da" Delete "$INSTDIR\share\locale\de\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\de\LC_MESSAGES" RMDir "$INSTDIR\share\locale\de" Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES" RMDir "$INSTDIR\share\locale\eo" Delete "$INSTDIR\share\locale\es\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\es\LC_MESSAGES" RMDir "$INSTDIR\share\locale\es" Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES" RMDir "$INSTDIR\share\locale\fr" Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES" RMDir "$INSTDIR\share\locale\hu" Delete "$INSTDIR\share\locale\it\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\it\LC_MESSAGES" RMDir "$INSTDIR\share\locale\it" Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ja" Delete "$INSTDIR\share\locale\nl\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\nl\LC_MESSAGES" RMDir "$INSTDIR\share\locale\nl" Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES" RMDir "$INSTDIR\share\locale\pl" Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES" RMDir "$INSTDIR\share\locale\pt" Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ro" Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ru" Delete "$INSTDIR\share\locale\sr\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\sr\LC_MESSAGES" RMDir "$INSTDIR\share\locale\sr" Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES" RMDir "$INSTDIR\share\locale\sv" Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES" RMDir "$INSTDIR\share\locale\uk" Delete "$INSTDIR\share\locale\vi\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\vi\LC_MESSAGES" RMDir "$INSTDIR\share\locale\vi" Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" RMDir "$INSTDIR\share\locale\zh_CN" Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo" RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" RMDir "$INSTDIR\share\locale\zh_TW" RMDir "$INSTDIR\share\locale" SectionEnd Section "-un.gnupg" Delete "$INSTDIR\bin\gpg.exe" Delete "$INSTDIR\bin\gpgv.exe" Delete "$INSTDIR\bin\gpgsm.exe" Delete "$INSTDIR\bin\gpg-agent.exe" Delete "$INSTDIR\bin\scdaemon.exe" Delete "$INSTDIR\bin\keyboxd.exe" Delete "$INSTDIR\bin\dirmngr.exe" Delete "$INSTDIR\bin\gpgconf.exe" Delete "$INSTDIR\bin\gpg-connect-agent.exe" Delete "$INSTDIR\bin\gpgtar.exe" Delete "$INSTDIR\bin\gpg-card.exe" Delete "$INSTDIR\bin\dirmngr_ldap.exe" Delete "$INSTDIR\bin\gpg-preset-passphrase.exe" Delete "$INSTDIR\bin\gpg-check-pattern.exe" Delete "$INSTDIR\bin\gpg-wks-client.exe" Delete "$INSTDIR\share\doc\gnupg\examples\pwpattern.list" RMDir "$INSTDIR\share\doc\gnupg\examples" RMDir "$INSTDIR\share\doc\gnupg" Delete "$INSTDIR\share\gnupg\sks-keyservers.netCA.pem" Delete "$INSTDIR\share\gnupg\dirmngr-conf.skel" Delete "$INSTDIR\share\gnupg\distsigkey.gpg" Delete "$INSTDIR\share\gnupg\gpg-conf.skel" RMDir "$INSTDIR\share\gnupg" Delete "$INSTDIR\share\locale\ca\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\ca\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ca" Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES" RMDir "$INSTDIR\share\locale\cs" Delete "$INSTDIR\share\locale\da\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\da\LC_MESSAGES" RMDir "$INSTDIR\share\locale\da" Delete "$INSTDIR\share\locale\de\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\de\LC_MESSAGES" RMDir "$INSTDIR\share\locale\de" Delete "$INSTDIR\share\locale\el\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\el\LC_MESSAGES" RMDir "$INSTDIR\share\locale\el" Delete "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES" RMDir "$INSTDIR\share\locale\en@boldquot" Delete "$INSTDIR\share\locale\en@quot\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\en@quot\LC_MESSAGES" RMDir "$INSTDIR\share\locale\en@quot" Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES" RMDir "$INSTDIR\share\locale\eo" Delete "$INSTDIR\share\locale\es\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\es\LC_MESSAGES" RMDir "$INSTDIR\share\locale\es" Delete "$INSTDIR\share\locale\et\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\et\LC_MESSAGES" RMDir "$INSTDIR\share\locale\et" Delete "$INSTDIR\share\locale\fi\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\fi\LC_MESSAGES" RMDir "$INSTDIR\share\locale\fi" Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES" RMDir "$INSTDIR\share\locale\fr" Delete "$INSTDIR\share\locale\gl\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\gl\LC_MESSAGES" RMDir "$INSTDIR\share\locale\gl" Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES" RMDir "$INSTDIR\share\locale\hu" Delete "$INSTDIR\share\locale\id\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\id\LC_MESSAGES" RMDir "$INSTDIR\share\locale\id" Delete "$INSTDIR\share\locale\it\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\it\LC_MESSAGES" RMDir "$INSTDIR\share\locale\it" Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ja" Delete "$INSTDIR\share\locale\nb\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\nb\LC_MESSAGES" RMDir "$INSTDIR\share\locale\nb" Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES" RMDir "$INSTDIR\share\locale\pl" Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES" RMDir "$INSTDIR\share\locale\pt" Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ro" Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES" RMDir "$INSTDIR\share\locale\ru" Delete "$INSTDIR\share\locale\sk\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\sk\LC_MESSAGES" RMDir "$INSTDIR\share\locale\sk" Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES" RMDir "$INSTDIR\share\locale\sv" Delete "$INSTDIR\share\locale\tr\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\tr\LC_MESSAGES" RMDir "$INSTDIR\share\locale\tr" Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES" RMDir "$INSTDIR\share\locale\uk" Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES" RMDir "$INSTDIR\share\locale\zh_CN" Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\gnupg2.mo" RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES" RMDir "$INSTDIR\share\locale\zh_TW" RMDir "$INSTDIR\share\locale" SectionEnd Section "-un.sqlite" Delete "$INSTDIR\bin\libsqlite3-0.dll" SectionEnd Section "-un.gnupginst" # Delete standard stuff. Delete "$INSTDIR\README.txt" Delete "$INSTDIR\VERSION" # Remove the bin directory from the PATH Push "$INSTDIR\bin" Call un.RemoveFromPath # Try to remove the top level directories. RMDir "$INSTDIR\bin" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\include" RMDir "$INSTDIR\share" RMDir "$INSTDIR\etc" RMDir "$INSTDIR" # Clean the registry. DeleteRegValue SHCTX "Software\GNU\GnuPG" "Install Directory" SectionEnd Function .onInit ;;!define MUI_LANGDLL_ALWAYSSHOW !insertmacro MUI_LANGDLL_DISPLAY Call G4wRunOnce ${IfNot} ${RunningX64} MessageBox MB_OK "Sorry this version runs only on x64 machines" Abort ${EndIf} SetOutPath $TEMP #!ifdef SOURCES # File /oname=gpgspltmp.bmp "${TOP_SRCDIR}/doc/logo/gnupg-logo-400px.bmp" # # We play the tune only for the soruce installer # File /oname=gpgspltmp.wav "${TOP_SRCDIR}/src/gnupg-splash.wav" # g4wihelp::playsound $TEMP\gpgspltmp.wav # g4wihelp::showsplash 2500 $TEMP\gpgspltmp.bmp # Delete $TEMP\gpgspltmp.bmp # # Note that we delete gpgspltmp.wav in .onInst{Failed,Success} #!endif # We can't use TOP_SRCDIR dir as the name of the file needs to be # the same while building and running the installer. Thus we # generate the file from a template. !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${W32_SRCDIR}/inst-options.ini" #Call CalcDepends Var /GLOBAL changed_dir # Check if the install directory was modified on the command line StrCmp "$INSTDIR" "$PROGRAMFILES64\${INSTALL_DIR}" unmodified 0 # It is modified. Save that value. StrCpy $changed_dir "$INSTDIR" # MULITUSER_INIT overwrites directory setting from command line !insertmacro MULTIUSER_INIT StrCpy $INSTDIR "$changed_dir" goto initDone unmodified: !insertmacro MULTIUSER_INIT initDone: FunctionEnd Function "un.onInit" !insertmacro MULTIUSER_UNINIT FunctionEnd #Function .onInstFailed # Delete $TEMP\gpgspltmp.wav #FunctionEnd #Function .onInstSuccess # Delete $TEMP\gpgspltmp.wav #FunctionEnd #Function .onSelChange # Call CalcDepends #FunctionEnd # This must be in a central place. Urgs. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gnupg} $(DESC_SEC_gnupg) !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpa} $(DESC_SEC_gpa) !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpgex} $(DESC_SEC_gpgex) !insertmacro MUI_FUNCTION_DESCRIPTION_END # This also must be in a central place. Also Urgs. !ifdef WITH_GUI Section "-startmenu" # Check if the start menu entries where requested. !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \ "Field 2" "State" IntCmp $R0 0 no_start_menu !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" SectionGetFlags ${SEC_gpa} $R0 IntOp $R0 $R0 & ${SF_SELECTED} IntCmp $R0 ${SF_SELECTED} 0 no_gpa_menu CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GPA.lnk" \ "$INSTDIR\bin\launch-gpa.exe" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa) no_gpa_menu: CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG Manual.lnk" \ "$INSTDIR\share\gnupg\gnupg.html" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_manual) CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \ "$INSTDIR\README.txt" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_readme) !insertmacro MUI_STARTMENU_WRITE_END no_start_menu: # Check if the desktop entries where requested. !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \ "Field 3" "State" IntCmp $R0 0 no_desktop SectionGetFlags ${SEC_gpa} $R0 IntOp $R0 $R0 & ${SF_SELECTED} IntCmp $R0 ${SF_SELECTED} 0 no_gpa_desktop CreateShortCut "$DESKTOP\GPA.lnk" \ "$INSTDIR\bin\launch-gpa.exe" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa) no_gpa_desktop: CreateShortCut "$DESKTOP\GPA Manual.lnk" \ "$INSTDIR\share\gpa\gpa.html" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa_manual) no_desktop: # Check if the quick launch bar entries where requested. !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \ "Field 4" "State" IntCmp $R0 0 no_quick_launch StrCmp $QUICKLAUNCH $TEMP no_quick_launch SectionGetFlags ${SEC_gpa} $R0 IntOp $R0 $R0 & ${SF_SELECTED} IntCmp $R0 ${SF_SELECTED} 0 no_gpa_quicklaunch CreateShortCut "$QUICKLAUNCH\GPA.lnk" \ "$INSTDIR\bin\launch-gpa.exe" \ "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa) no_gpa_quicklaunch: no_quick_launch: SectionEnd !endif # # Now for the generic parts to end the installation. # Var MYTMP # Last section is a hidden one. Section WriteUninstaller "$INSTDIR\gnupg-uninstall.exe" # Windows Add/Remove Programs support StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" WriteRegExpandStr SHCTX $MYTMP "UninstallString" '"$INSTDIR\gnupg-uninstall.exe"' WriteRegExpandStr SHCTX $MYTMP "InstallLocation" "$INSTDIR" WriteRegStr SHCTX $MYTMP "DisplayName" "${PRETTY_PACKAGE}" !ifdef WITH_GUI WriteRegStr SHCTX $MYTMP "DisplayIcon" "$INSTDIR\bin\gpa.exe,0" !else WriteRegStr SHCTX $MYTMP "DisplayIcon" "$INSTDIR\bin\gpg.exe,0" !endif WriteRegStr SHCTX $MYTMP "DisplayVersion" "${VERSION}" WriteRegStr SHCTX $MYTMP "Publisher" "The GnuPG Project" WriteRegStr SHCTX $MYTMP "URLInfoAbout" "https://gnupg.org" WriteRegDWORD SHCTX $MYTMP "NoModify" "1" WriteRegDWORD SHCTX $MYTMP "NoRepair" "1" SectionEnd Section Uninstall !ifdef WITH_GUI #--------------------------------------------------- # Delete the menu entries and any empty parent menus #--------------------------------------------------- !insertmacro MUI_STARTMENU_GETFOLDER Application $MYTMP Delete "$SMPROGRAMS\$MYTMP\GPA.lnk" Delete "$SMPROGRAMS\$MYTMP\GnuPG Manual.lnk" Delete "$SMPROGRAMS\$MYTMP\GnuPG README.lnk" Delete "$SMPROGRAMS\$MYTMP\*.lnk" StrCpy $MYTMP "$SMPROGRAMS\$MYTMP" startMenuDeleteLoop: ClearErrors RMDir $MYTMP GetFullPathName $MYTMP "$MYTMP\.." IfErrors startMenuDeleteLoopDone StrCmp $MYTMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop startMenuDeleteLoopDone: DeleteRegValue SHCTX "Software\GNU\GnuPG" "Start Menu Folder" # Delete Desktop links. Delete "$DESKTOP\GPA.lnk" Delete "$DESKTOP\GnuPG Manual.lnk" Delete "$DESKTOP\GnuPG README.lnk" # Delete Quick Launch Bar links. StrCmp $QUICKLAUNCH $TEMP no_quick_launch_uninstall Delete "$QUICKLAUNCH\GPA.lnk" no_quick_launch_uninstall: !endif Delete "$INSTDIR\gnupg-uninstall.exe" RMDir "$INSTDIR" # Clean the registry. DeleteRegValue SHCTX "Software\GnuPG" "Install Directory" DeleteRegKey /ifempty SHCTX "Software\GnuPG" # Remove Windows Add/Remove Programs support. DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" SectionEnd