diff --git a/!_package-sources.txt b/!_package-sources.txt
new file mode 100644
index 0000000000000000000000000000000000000000..acb823f12de1d1d592991f8e548aba262086556f
--- /dev/null
+++ b/!_package-sources.txt
@@ -0,0 +1,12 @@
+
+GnuPG packages came from:
+
+gnupg-2.2.45.tar.bz2
+gnupg-snapshot-2.2.45.tar.gz
+gnupg-w32-2.2.45_20241022.exe
+
+in "packages" folder under ...
+GnuPG-VS-Desktop-3.2.4.tar.xz\GnuPG-VS-Desktop-3.2.4.tar\gpg4win-3.2.4\
+
+in Download:
+https://download.gnupg.com/files/src/GnuPG-VS-Desktop-3.2.4.tar.xz
diff --git a/gnupg-w32-2.2.45_20241022.exe b/gnupg-w32-2.2.45_20241022.exe
new file mode 100644
index 0000000000000000000000000000000000000000..4f520068648616bf864867ee3b8f45631ad0c4e4
Binary files /dev/null and b/gnupg-w32-2.2.45_20241022.exe differ
diff --git a/inst-options.ini b/inst-options.ini
new file mode 100644
index 0000000000000000000000000000000000000000..8697e89ad9b6d9b01d9d3988baf58999699a7cc7
--- /dev/null
+++ b/inst-options.ini
@@ -0,0 +1,46 @@
+[Settings]
+NumFields=5
+
+; The number of the fields here is known in w32inst.nsi.
+; The tags must be "[Field N]" with N=1..NumFields
+
+[Field 1]
+Type=Label
+Left=0
+Right=-1
+Top=0
+Bottom=20
+
+[Field 2]
+Type=Checkbox
+Left=0
+Right=-1
+Top=30
+Bottom=40
+;Text=Start Menu
+State=1
+
+[Field 3]
+Type=Checkbox
+Left=0
+Right=-1
+Top=50
+Bottom=60
+;Text=Desktop
+State=0
+
+[Field 4]
+Type=Checkbox
+Left=0
+Right=-1
+Top=70
+Bottom=80
+;Text=Quick Launch Bar
+State=0
+
+[Field 5]
+Type=Label
+Left=0
+Right=-1
+Top=90
+Bottom=130
diff --git a/inst.nsi b/inst.nsi
new file mode 100644
index 0000000000000000000000000000000000000000..2e9fc2fb05663fb3ec94e3bcb40a9a2d730cb8a9
--- /dev/null
+++ b/inst.nsi
@@ -0,0 +1,1899 @@
+# 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 <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
+
+# This one must be done before addplugindir.
+Unicode true
+
+# MODIFIED FOR VS-NFD CONFIGURATION BY vitusb in 20250106 --- BEGIN ---
+# Got vars below from "gnupg-w32-x.x.xx.src\build-aux\speedo.mk" ...
+# ------------------------------------------------------------------
+# Line 287: (build-release: gnupg-2.2.45)
+# ------------------------------------------------------------------
+# # Directory names.
+# They must be absolute, as we switch directories pretty often.
+# root := $(shell pwd)/PLAY
+# sdir := $(root)/src
+# bdir := $(root)/build
+# bdir6:= $(root)/build-w64
+# ifeq ($(INSTALL_PREFIX),none)
+# idir := $(root)/inst
+# else
+# idir := $(abspath $(INSTALL_PREFIX))
+# endif
+# idir6:= $(root)/inst-w64
+# stampdir := $(root)/stamps
+# topsrc := $(shell cd $(dir $(SPEEDO_MK)).. && pwd)
+# auxsrc := $(topsrc)/build-aux/speedo
+# patdir := $(topsrc)/build-aux/speedo/patches
+# w32src := $(topsrc)/build-aux/speedo/w32
+# ------------------------------------------------------------------
+# Line 1371: (build-release: gnupg-2.2.45)
+# ------------------------------------------------------------------
+# 	$(MAKENSIS) -V2 \
+#       -DINST_DIR=$(idir) \
+#       -DINST6_DIR=$(idir6) \
+#       -DBUILD_DIR=$(bdir) \
+#       -DTOP_SRCDIR=$(topsrc) \
+#       -DW32_SRCDIR=$(w32src) \
+#       -DBUILD_ISODATE=$(BUILD_ISODATE) \
+#       -DBUILD_DATESTR=$(BUILD_DATESTR) \
+#       -DNAME=$(INST_NAME) \
+#       -DVERSION=$(INST_VERSION) \
+#       -DPROD_VERSION=$(INST_PROD_VERSION) \
+#       $(extra_installer_options) $(w32src)/inst.nsi
+#.
+#       @echo "Ready: $(idir)/$(INST_NAME)-$(INST_VERSION)_$(BUILD_DATESTR).exe"
+# ...
+# ------------------------------------------------------------------
+# ${VERSION} was taken from:
+# gnupg-w32-x.x.xx.src\configure
+# ------------------------------------------------------------------
+# Line 583:  PACKAGE_VERSION='2.2.45'
+# Line 2921: VERSION=$PACKAGE_VERSION
+# ------------------------------------------------------------------
+# 1.) ${PROD_VERSION} was taken from ...
+# "gnupg-w32-x.x.xx.src\build-aux\speedo.mk"
+# ------------------------------------------------------------------
+# Line 638:  sed -n  's/.*PACKAGE_VERSION "\(.*\)"/\1/p' config.h >$(idir)/INST_VERSION; \
+# Line 639:  sed -n  's/.*W32INFO_VI_PRODUCTVERSION \(.*\)/\1/p' common/w32info-rc.h \
+# Line 640:     |sed 's/,/./g' >$(idir)/INST_PROD_VERSION )
+# ...
+# Line 847:  INST_PROD_VERSION=$(shell head -1 $(idir)/INST_PROD_VERSION)
+# ...
+# Line 1381: -DPROD_VERSION=$(INST_PROD_VERSION) \
+# ------------------------------------------------------------------
+# 2.) ... by W32INFO_VI_PRODUCTVERSION in ...
+# "gnupg-w32-x.x.xx.src\common\w32info-rc.h"
+# ------------------------------------------------------------------
+# Line 23: #define W32INFO_VI_PRODUCTVERSION @BUILD_FILEVERSION@
+# ------------------------------------------------------------------
+# 3.) ... over BUILD_FILEVERSION in ...
+# "gnupg-w32-x.x.xx.src\configure"
+# ------------------------------------------------------------------
+# Line 15983: BUILD_VERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
+# Line 15984: BUILD_VERSION="${BUILD_VERSION}36415"
+# Line 15985: BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
+# ------------------------------------------------------------------
+# 4.) ... that produces the string by a "tr"-filter:
+# echo "2.2.45.36415" | tr . ,
+# 2,2,45,36415
+# 5.) ... with a "sed" filter by:
+# echo "2,2,45,36415" | sed 's/,/./g'
+# 2.2.45.36415
+
+#
+# MAKE CHANGES HERE --- BEGIN ---
+#
+
+# Example for Project-dir:
+#
+#       "gnupg-w32-x.x.xx.src\PLAY\build"
+#       "gnupg-w32-x.x.xx.src\PLAY\inst"
+#       "gnupg-w32-x.x.xx.src\build-aux\speedo\w32"
+
+#
+# 1.) Extract original installer of "${NAME}-${VERSION}_${BUILD_DATESTR}.exe"
+#     (i. e.: "gnupg-w32-2.2.45_20241022.exe"           into ".\PLAY\inst" dir.
+#     - Move   ".\PLAY\inst\$PLUGINSDIR\g4wihelp.dll"      to ".\PLAY\build".
+#     - Move   ".\PLAY\inst\README.txt"                    to ".\PLAY\build".
+#     - Create directory ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\dirmngr_ldap.exe"          to ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\gpg-check-pattern.exe"     to ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\gpgme-w32spawn.exe"        to ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\gpg-preset-passphrase.exe" to ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\gpg-wks-client.exe"        to ".\PLAY\inst\libexec".
+#     - Move   ".\PLAY\inst\bin\scdaemon.exe"              to ".\PLAY\inst\libexec".
+#     - Rename ".\PLAY\inst\lib\libassuan.imp"             to "libassuan.dll.a"
+#     - Rename ".\PLAY\inst\lib\libgcrypt.imp"             to "libgcrypt.dll.a"
+#     - Rename ".\PLAY\inst\lib\libgpg-error.imp"          to "libgpg-error.dll.a"
+#     - Rename ".\PLAY\inst\lib\libgpgme.imp"              to "libgpgme.dll.a"
+#     - Rename ".\PLAY\inst\lib\libksba.imp"               to "libksba.dll.a"
+#     - Rename ".\PLAY\inst\lib\libnpth.imp"               to "libnpth.dll.a"
+#     - Rename ".\PLAY\inst\bin\pinentry-basic.exe"        to "pinentry-w32.exe"
+
+!define My_VERSION "2.2.45"
+!define My_PROD_VERSION "2.2.45.36415"
+
+!define My_TOP_SRCDIR "_"                                     # gnupg-w32-x.x.xx.src\PLAY\build
+!define My_BUILD_DIR "${My_TOP_SRCDIR}\PLAY\build"            # gnupg-w32-x.x.xx.src\PLAY\build
+!define My_INST_DIR "${My_TOP_SRCDIR}\PLAY\inst"              # gnupg-w32-x.x.xx.src\PLAY\inst
+!define My_INST6_DIR "${My_TOP_SRCDIR}\PLAY\inst-w64"         # gnupg-w32-x.x.xx.src\PLAY\inst-w64
+!define My_W32_SRCDIR "${My_TOP_SRCDIR}\build-aux\speedo\w32" # gnupg-w32-x.x.xx.src\build-aux\speedo\w32
+
+# VS-NFD centralized configuration
+!define VSNFD_CFG_SOURCE "${My_TOP_SRCDIR}\PLAY\vs-nfd-config"
+!define VSNFD_CFG_TARGET "$COMMONPROGRAMDATA\GNU"
+
+# "BUILD_ISODATE" and "BUILD_DATESTR" were taken from:
+# "gnupg-w32-x.x.xx.src\build-aux\speedo.mk"
+# Line 841: BUILD_ISODATE=$(shell date -u +%Y-%m-%d)
+# Line 842: BUILD_DATESTR=$(subst -,,$(BUILD_ISODATE))
+# BUILD_ISODATE is like: 2024-10-22
+# BUILD_DATESTR is like: 20241022
+
+!define My_BUILD_ISODATE "2024-10-22"           # BUILD_ISODATE=$(shell date -u +%Y-%m-%d)
+!define My_BUILD_DATESTR "20241022"             # BUILD_DATESTR=$(subst -,,$(BUILD_ISODATE))
+
+# "NAME" was taken from "INST_NAME" in:
+# "gnupg-w32-x.x.xx.src\build-aux\speedo.mk"
+# Line 236: INST_NAME=gnupg-w32
+
+!define My_NAME "gnupg-w32"
+
+#
+# MAKE CHANGES HERE ---  END  ---
+#
+
+!define VERSION "${My_VERSION}"
+!define PROD_VERSION "${My_PROD_VERSION}"
+!define TOP_SRCDIR "${My_TOP_SRCDIR}"
+!define INST_DIR "${My_INST_DIR}"
+!define INST6_DIR "${My_INST6_DIR}"
+!define W32_SRCDIR "${My_W32_SRCDIR}"
+!define BUILD_DIR "${My_BUILD_DIR}"
+!define BUILD_ISODATE "${My_BUILD_ISODATE}"
+!define BUILD_DATESTR "${My_BUILD_DATESTR}"
+!define NAME "${My_NAME}"
+
+# TODO: !!! CHECK FILES FOR AVAILABILITY UNDER "${BUILD_DIR}"
+#       !!! IN REFERENCE TO SOURCE-FILES IN THIS SCRIPT.
+
+# The output of "!echo"-function works here only in debug-mode
+# verbosity when "makensis" is launching with /V4 (all output),
+# so we have to use the "!system"-function here !
+# NSIS is awfull !!
+!system '@echo ### Debug ### NAME is............: ${NAME}'
+!system '@echo ### Debug ### TOP_SRCDIR is......: ${TOP_SRCDIR}'
+!system '@echo ### Debug ### VERSION is.........: ${VERSION}'
+!system '@echo ### Debug ### PROD_VERSION is....: ${PROD_VERSION}'
+!system '@echo ### Debug ### INST_DIR is........: ${INST_DIR}'
+!system '@echo ### Debug ### INST6_DIR is.......: ${INST6_DIR}'
+!system '@echo ### Debug ### W32_SRCDIR is......: ${W32_SRCDIR}'
+!system '@echo ### Debug ### BUILD_DIR is.......: ${BUILD_DIR}'
+!system '@echo ### Debug ### BUILD_ISODATE is...: ${BUILD_ISODATE}'
+!system '@echo ### Debug ### BUILD_DATESTR is...: ${BUILD_DATESTR}'
+
+!system '@echo ### Debug ### VSNFD_CFG_SOURCE is....: ${VSNFD_CFG_SOURCE}'
+!system '@echo ### Debug ### VSNFD_CFG_TARGET is....: ${VSNFD_CFG_TARGET}'
+
+# MODIFIED FOR VS-NFD CONFIGURATION BY vitusb in 20250106 ---  END  ---
+
+#!cd "${INST_DIR}"              # We cannot cd into the ${INST_DIR},
+                                # because we will get a
+                                # "cannot-create"-error below, when
+                                # writing "inst-options.ini" during
+                                # install.
+!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 (VS-NfD)"
+
+!define INSTALL_DIR "GnuPG"
+
+!define WELCOME_TITLE_ENGLISH \
+ "Welcome to the installation of GnuPG (VS-NfD)"
+
+!define WELCOME_TITLE_GERMAN \
+ "Willkommen bei der Installation von GnuPG (VS-NfD)"
+
+!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\nThis is GnuPG version ${VERSION} with a VS-NfD \
+  conformant configuration. The German Federal Office for Information \
+  Security (BSI) approved GnuPG VS-Desktop® for transmitting confidential \
+  documents classified as VS-NfD (a German classification level). This is \
+  GnuPG with the activated configuration behind this security-concept.\r\n\r\n\
+  File version: ${PROD_VERSION}\r\n\
+  Release date: ${BUILD_ISODATE}"
+!define ABOUT_GERMAN \
+ "GnuPG is die am häufigsten verwendete Software zur Mail- \
+ und Datenverschlüsselung.\
+   \r\n\r\n$_CLICK \
+   \r\n\r\nDies ist GnuPG Version ${VERSION} mit einer \
+   VS-NfD konformen Konfiguration. Das Bundesamt für Sicherheit in der \
+   Informationstechnik (BSI) hat GnuPG VS-Desktop® für die Übermittlung \
+   vertraulicher Dokumente der Geheimhaltungsstufe VS-NfD freigegeben. \
+   Hier sehen Sie GnuPG mit der aktivierten Konfiguration hinter diesem \
+   Sicherheitskonzept.\r\n\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"
+
+# Icon of the installer-exe (based on MUI.nsh / NOT MUI2)
+# Must be done AFTER include-statement of "MUI.nsh"
+!define MUI_ICON "${BUILD_DIR}\gnupg-logo-icon.ico"
+!define MUI_UNICON "${BUILD_DIR}\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 "inst-options.ini"      # Must be used here without PATH,
+                                    # otherwise we will get a
+                                    # "cannot-create"-error in the
+                                    # installer under Windows.
+
+# 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 "inst-options.ini" \
+	"Field 1" "Text"  "$(T_InstOptLabelA)"
+  !insertmacro MUI_INSTALLOPTIONS_WRITE "inst-options.ini" \
+	"Field 2" "Text"  "$(T_InstOptFieldA)"
+  !insertmacro MUI_INSTALLOPTIONS_WRITE "inst-options.ini" \
+	"Field 3" "Text"  "$(T_InstOptFieldB)"
+  !insertmacro MUI_INSTALLOPTIONS_WRITE "inst-options.ini" \
+	"Field 4" "Text"  "$(T_InstOptFieldC)"
+  !insertmacro MUI_INSTALLOPTIONS_WRITE "inst-options.ini" \
+	"Field 5" "Text"  "$(T_InstOptLabelB)"
+
+  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "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 "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"
+
+  # Install global central config
+  # ${VSNFD_CFG_TARGET} is: "$COMMONPROGRAMDATA\GNU"
+  # ${VSNFD_CFG_SOURCE} is: "${My_TOP_SRCDIR}\PLAY\vs-nfd-config"
+  SetOutPath "${VSNFD_CFG_TARGET}"
+  SetOverwrite on
+  File "${VSNFD_CFG_SOURCE}\GnuPG-VS-NfD-Config.txt"
+  File "${VSNFD_CFG_SOURCE}\Icon.ico"
+  SetOverwrite lastused
+
+  ifFileExists "${VSNFD_CFG_TARGET}\etc\*.*"  0 no_etc
+    RMDir /r "${VSNFD_CFG_TARGET}\etc"
+
+  no_etc:
+
+  SetOutPath "${VSNFD_CFG_TARGET}"
+  SetOverwrite on
+  File /r "${VSNFD_CFG_SOURCE}\etc"
+  SetOverwrite lastused
+
+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 "${INST_DIR}\bin\gpg.exe"
+  File "${INST_DIR}\bin\gpgv.exe"
+  File "${INST_DIR}\bin\gpgsm.exe"
+  File "${INST_DIR}\bin\gpgconf.exe"
+  File "${INST_DIR}\bin\gpg-connect-agent.exe"
+  File "${INST_DIR}\bin\gpgtar.exe"
+  File "${INST_DIR}\libexec\dirmngr_ldap.exe"
+  File "${INST_DIR}\libexec\gpg-preset-passphrase.exe"
+  File "${INST_DIR}\libexec\gpg-check-pattern.exe"
+  File "${INST_DIR}\libexec\gpg-wks-client.exe"
+
+  ClearErrors
+  SetOverwrite try
+  File "${INST_DIR}\bin\gpg-agent.exe"
+  SetOverwrite lastused
+  ifErrors 0 +3
+      File /oname=gpg-agent.exe.tmp "${INST_DIR}\bin\gpg-agent.exe"
+      Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe
+
+  ClearErrors
+  SetOverwrite try
+  File "${INST_DIR}\bin\dirmngr.exe"
+  SetOverwrite lastused
+  ifErrors 0 +3
+      File /oname=dirmngr.exe.tmp "${INST_DIR}\bin\dirmngr.exe"
+      Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
+
+  ClearErrors
+  SetOverwrite try
+  File "${INST_DIR}\libexec\scdaemon.exe"
+  SetOverwrite lastused
+  ifErrors 0 +3
+      File /oname=scdaemon.exe.tmp "${INST_DIR}\libexec\scdaemon.exe"
+      Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
+
+  SetOutPath "$INSTDIR\share\gnupg"
+  File "${INST_DIR}\share\gnupg\distsigkey.gpg"
+  File "${INST_DIR}\share\gnupg\sks-keyservers.netCA.pem"
+
+  SetOutPath "$INSTDIR\share\doc\gnupg\examples"
+  File "${INST_DIR}\share\doc\gnupg\examples\Automatic.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Brainpool256.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Brainpool384.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Brainpool512.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Curve25519.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Curve448.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\Curve-secp256k1.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\pwpattern.list"
+  File "${INST_DIR}\share\doc\gnupg\examples\RSA-4096.prf"
+  File "${INST_DIR}\share\doc\gnupg\examples\VS-NfD.prf"
+
+  SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ca\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\cs\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\da\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\de\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\el\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\en@boldquot\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\en@quot\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\eo\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\es\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\et\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\fi\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\fr\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\gl\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\hu\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\id\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\it\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ja\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\nb\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\pl\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\pt\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ro\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ru\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\sk\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\sv\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\tr\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\uk\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo"
+  SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
+  File "${INST_DIR}\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 "${INST_DIR}\bin\libgpg-error-0.dll"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libgpg-error.imp "${INST_DIR}\lib\libgpg-error.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\gpg-error.h"
+  SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\cs\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\da\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\de\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\eo\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\es\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\fr\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\hu\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\it\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ja\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\nl\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\pl\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\pt\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ro\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\ru\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\sr\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\sv\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\uk\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\vi\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo"
+  SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
+  File "${INST_DIR}\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo"
+SectionEnd
+
+Section "-zlib" SEC_zlib
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\zlib1.dll"
+SectionEnd
+
+Section "-npth" SEC_npth
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libnpth-0.dll"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libnpth.imp "${INST_DIR}\lib\libnpth.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\npth.h"
+SectionEnd
+
+Section "-gcrypt" SEC_gcrypt
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libgcrypt-20.dll"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libgcrypt.imp "${INST_DIR}\lib\libgcrypt.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\gcrypt.h"
+SectionEnd
+
+Section "-assuan" SEC_assuan
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libassuan-9.dll"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libassuan.imp "${INST_DIR}\lib\libassuan.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\assuan.h"
+SectionEnd
+
+Section "-ksba" SEC_ksba
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libksba-8.dll"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libksba.imp "${INST_DIR}\lib\libksba.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\ksba.h"
+SectionEnd
+
+Section "-gpgme" SEC_gpgme
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libgpgme-11.dll"
+  File /nonfatal "${INST_DIR}\bin\libgpgme-glib-11.dll"
+  File "${INST_DIR}\libexec\gpgme-w32spawn.exe"
+  SetOutPath "$INSTDIR\lib"
+  File /oname=libgpgme.imp "${INST_DIR}\lib\libgpgme.dll.a"
+  File /nonfatal /oname=libgpgme-glib.imp "${INST_DIR}\lib\libgpgme-glib.dll.a"
+  SetOutPath "$INSTDIR\include"
+  File "${INST_DIR}\include\gpgme.h"
+SectionEnd
+
+Section "-sqlite" SEC_sqlite
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libsqlite3-0.dll"
+SectionEnd
+
+!ifdef WITH_GUI
+Section "-libiconv" SEC_libiconv
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libiconv-2.dll"
+SectionEnd
+
+Section "-gettext" SEC_gettext
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libintl-8.dll"
+SectionEnd
+
+Section "-glib" SEC_glib
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libgio-2.0-0.dll"
+  File "${INST_DIR}\bin\libglib-2.0-0.dll"
+  File "${INST_DIR}\bin\libgmodule-2.0-0.dll"
+  File "${INST_DIR}\bin\libgobject-2.0-0.dll"
+  File "${INST_DIR}\bin\libgthread-2.0-0.dll"
+  File "${INST_DIR}\bin\gspawn-win32-helper.exe"
+  File "${INST_DIR}\bin\gspawn-win32-helper-console.exe"
+
+  File "${INST_DIR}\bin\libffi-6.dll"
+SectionEnd
+
+Section "-libpng" SEC_libpng
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libpng14-14.dll"
+SectionEnd
+
+#Section "-jpeg" SEC_jpeg
+#  SetOutPath "$INSTDIR"
+#  File "${INST_DIR}\bin\jpeg62.dll"
+#SectionEnd
+
+Section "-cairo" SEC_cairo
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libcairo-gobject-2.dll"
+  File "${INST_DIR}\bin\libpangocairo-1.0-0.dll"
+  File "${INST_DIR}\bin\libcairo-2.dll"
+  File "${INST_DIR}\bin\libcairo-script-interpreter-2.dll"
+SectionEnd
+
+Section "-pixman" SEC_pixman
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libpixman-1-0.dll"
+SectionEnd
+
+Section "-pango" SEC_pango
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\pango-querymodules.exe"
+  File "${INST_DIR}\bin\libpango-1.0-0.dll"
+  File "${INST_DIR}\bin\libpangowin32-1.0-0.dll"
+
+  SetOutPath "$INSTDIR\lib\pango\1.6.0\modules"
+  File "${INST_DIR}\lib\pango\1.6.0\modules\pango-basic-win32.dll"
+  File "${INST_DIR}\lib\pango\1.6.0\modules\pango-arabic-lang.dll"
+  File "${INST_DIR}\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 "${INST_DIR}\bin\libatk-1.0-0.dll"
+SectionEnd
+
+Section "-gtk+" SEC_gtk_
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\libgdk_pixbuf-2.0-0.dll"
+  File "${INST_DIR}\bin\libgdk-win32-2.0-0.dll"
+  File "${INST_DIR}\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 "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ani.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-bmp.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-emf.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-gif.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-ico.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-jpeg.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-tiff.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-wmf.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-icns.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pcx.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-png.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pnm.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-qtif.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ras.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-tga.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-wbmp.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xbm.dll"
+  File "${INST_DIR}\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xpm.dll"
+
+  SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\engines\libwimp.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
+
+  SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-thai.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-cyrillic-translit.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-multipress.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-ti-er.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-am-et.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-cedilla.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-inuktitut.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-viqr.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-ti-et.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-ipa.dll"
+  File "${INST_DIR}\lib\gtk-2.0\2.10.0\immodules\im-ime.dll"
+
+  SetOutPath "$INSTDIR\share\themes\Default\gtk-2.0-key"
+  File "${INST_DIR}\share\themes\Default\gtk-2.0-key\gtkrc"
+
+  SetOutPath "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
+  File "${INST_DIR}\share\themes\MS-Windows\gtk-2.0\gtkrc"
+
+  SetOutPath "$INSTDIR\etc\gtk-2.0"
+  File "${INST_DIR}\etc\gtk-2.0\im-multipress.conf"
+SectionEnd
+!endif
+
+Section "-pinentry" SEC_pinentry
+  SetOutPath "$INSTDIR\bin"
+  File /oname=pinentry-basic.exe "${INST_DIR}\bin\pinentry-w32.exe"
+SectionEnd
+
+!ifdef WITH_GUI
+Section "gpa" SEC_gpa
+  SectionIn RO
+  SetOutPath "$INSTDIR\bin"
+  File "${INST_DIR}\bin\gpa.exe"
+  File "${INST_DIR}\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 "${INST_DIR}\bin\gpgex.dll"
+  SetOverwrite lastused
+  ifErrors 0 do_reg
+      File /oname=gpgex.dll.tmp "${INST_DIR}\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-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\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\Automatic.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Brainpool256.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Brainpool384.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Brainpool512.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Curve25519.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Curve448.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\Curve-secp256k1.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\pwpattern.list"
+  Delete "$INSTDIR\share\doc\gnupg\examples\RSA-4096.prf"
+  Delete "$INSTDIR\share\doc\gnupg\examples\VS-NfD.prf"
+
+  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 "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 "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 "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 "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
diff --git a/unattended.bat b/unattended.bat
new file mode 100644
index 0000000000000000000000000000000000000000..eb8b45ad8a7b8cec529f8df6cfc995c2abd97f6c
--- /dev/null
+++ b/unattended.bat
@@ -0,0 +1,39 @@
+@echo off
+color 1E
+cls
+
+set INSTALLER=gnupg-w32-2.2.45_20241022.exe
+
+REM :: Script-Name
+set SCRIPTNAME=%~nx0
+
+SETLOCAL
+SETLOCAL EnableDelayedExpansion
+
+set drive=%~d0
+set drivep=%drive%
+If $#\#$==$#%drive:~-1%#$ set drivep=%drive:~0,-1%
+set drivename=%drivep%
+
+REM :: relative path to absolute path -PATH-
+set pathn=%~p0
+set pathp=%pathn%
+If $#\#$==$#%pathn:~-1%#$ set pathp=%pathn:~0,-1%
+set pathname=%pathp%
+
+set HOMEDRIVE=%drivename%
+set HOMEPATH=%pathname%
+set EXEDIR=%HOMEDRIVE%%HOMEPATH%
+set DIRCMD=/O:GNE
+
+%HOMEDRIVE%
+chdir "%EXEDIR%"
+
+start /wait "" "%EXEDIR%\%INSTALLER%" /S /D=$PROGRAMFILES\GnuPG
+
+goto end
+
+:end
+ENDLOCAL
+REM :: echo.Bitte Taste ...
+REM :: pause >nul