diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:14:06 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:14:06 +0000 |
commit | eee068778cb28ecf3c14e1bf843a95547d72c42d (patch) | |
tree | 0e07b30ddc5ea579d682d5dbe57998200d1c9ab7 /build-aux/speedo/w32/inst.nsi | |
parent | Initial commit. (diff) | |
download | gnupg2-eee068778cb28ecf3c14e1bf843a95547d72c42d.tar.xz gnupg2-eee068778cb28ecf3c14e1bf843a95547d72c42d.zip |
Adding upstream version 2.2.40.upstream/2.2.40
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'build-aux/speedo/w32/inst.nsi')
-rw-r--r-- | build-aux/speedo/w32/inst.nsi | 1666 |
1 files changed, 1666 insertions, 0 deletions
diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi new file mode 100644 index 0000000..bc41fac --- /dev/null +++ b/build-aux/speedo/w32/inst.nsi @@ -0,0 +1,1666 @@ +# inst.nsi - Installer for GnuPG on Windows. -*- coding: latin-1; -*- +# Copyright (C) 2005, 2014 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 <http://www.gnu.org/licenses/>. + +# 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 + +!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) 2017 The GnuPG Project" +!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}.\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}.\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 "$PROGRAMFILES\${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"' + + 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/gpgtar.exe" + File "libexec/dirmngr_ldap.exe" + File "libexec/gpg-preset-passphrase.exe" + File "libexec/gpg-check-pattern.exe" + File "libexec/gpg-wks-client.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 + + 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/VS-NfD.prf" + File "share/doc/gnupg/examples/Automatic.prf" + 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-0.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" "gpg-agent"' + nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"' + 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-0.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\dirmngr.exe" + Delete "$INSTDIR\bin\gpgconf.exe" + Delete "$INSTDIR\bin\gpg-connect-agent.exe" + Delete "$INSTDIR\bin\gpgtar.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\VS-NfD.prf" + Delete "$INSTDIR\share\doc\gnupg\examples\Automatic.prf" + 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 + + 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" "$PROGRAMFILES\${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 |