speedo,w32: Fix gpg-wks-client installation
[gnupg.git] / build-aux / speedo / w32 / inst.nsi
index aeab7a0..fa4be56 100644 (file)
@@ -27,6 +27,8 @@
 #  NAME
 #  VERSION
 #  PROD_VERSION
+#
+#  WITH_GUI        - Include the GPA GUI
 
 !cd "${INST_DIR}"
 !addincludedir "${W32_SRCDIR}"
@@ -40,7 +42,7 @@
 !define PRETTY_PACKAGE "GNU Privacy Guard"
 !define PRETTY_PACKAGE_SHORT "GnuPG"
 !define COMPANY "The GnuPG Project"
-!define COPYRIGHT "Copyright (C) 2014 The GnuPG Project"
+!define COPYRIGHT "Copyright (C) 2015 The GnuPG Project"
 !define DESCRIPTION "GnuPG: The GNU Privacy Guard for Windows"
 
 !define INSTALL_DIR "GnuPG"
@@ -105,9 +107,9 @@ OutFile "${NAME}-${VERSION}_${BUILD_DATESTR}.exe"
 !ifndef INSTALL_DIR
 !define INSTALL_DIR "GnuPG"
 !endif
-InstallDir "$PROGRAMFILES\GNU\${INSTALL_DIR}"
+InstallDir "$PROGRAMFILES\${INSTALL_DIR}"
 
-InstallDirRegKey HKLM "Software\GNU\${PACKAGE_SHORT}" "Install Directory"
+InstallDirRegKey HKLM "Software\${PACKAGE_SHORT}" "Install Directory"
 
 
 # Add version information to the file properties.
@@ -132,15 +134,13 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}"
 !define MUI_FINISHPAGE_NOAUTOCLOSE
 !define MUI_UNFINISHPAGE_NOAUTOCLOSE
 
-#!define MUI_HEADERIMAGE
-#!define MUI_HEADERIMAGE_BITMAP \
-#               "${TOP_SRCDIR}/doc/logo/gnupg-logo-150x57.bmp"
-#!define MUI_WELCOMEFINISHPAGE_BITMAP \
-#               "${TOP_SRCDIR}/doc/logo/gnupg-logo-164x314.bmp"
+!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\GNU\GnuPG"
+!define MUI_LANGDLL_REGISTRY_KEY "Software\GnuPG"
 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
 
 #
@@ -156,10 +156,10 @@ VIAddVersionKey "FileVersion" "${PROD_VERSION}"
 !insertmacro MUI_PAGE_LICENSE "${TOP_SRCDIR}/COPYING"
 
 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion
 !insertmacro MUI_PAGE_COMPONENTS
 
-!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion
-!insertmacro MUI_PAGE_DIRECTORY
+# We don't have MUI_PAGE_DIRECTORY
 
 !ifdef HAVE_STARTMENU
 
@@ -170,7 +170,7 @@ Var STARTMENU_FOLDER
 !define MUI_PAGE_CUSTOMFUNCTION_PRE CheckIfStartMenuWanted
 !define MUI_STARTMENUPAGE_NODISABLE
 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
-!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GNU\GnuPG"
+!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.
@@ -218,11 +218,10 @@ Var STARTMENU_FOLDER
 !insertmacro MUI_RESERVEFILE_LANGDLL
 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
 ReserveFile "${BUILD_DIR}\g4wihelp.dll"
-#ReserveFile "${TOP_SRCDIR}\doc\logo\gnupg-logo-400px.bmp"
-#ReserveFile "${W32_SRCDIR}\gnupg-splash.wav"
+ReserveFile "${W32_SRCDIR}\gnupg-logo-150x57.bmp"
+ReserveFile "${W32_SRCDIR}\gnupg-logo-164x314.bmp"
 ReserveFile "${TOP_SRCDIR}\COPYING"
 ReserveFile "${W32_SRCDIR}\inst-options.ini"
-#ReserveFile "${TOP_SRCDIR}\doc\logo\gnupg-logo-164x314.bmp"
 
 # Language support
 
@@ -261,11 +260,11 @@ LangString T_RunKeyManager ${LANG_GERMAN} \
    "Die Schlüsselverwaltung aufrufen"
 
 LangString T_MoreInfo ${LANG_ENGLISH} \
-   "Click here for GnuPG's website"
+   "Click here to see how to help the GnuPG Project"
 LangString T_MoreInfo ${LANG_GERMAN} \
-   "Hier klicken um zur GnuPG Homepage zu gelangen"
-LangString T_MoreInfoURL ${LANG_ENGLISH} "https://gnupg.org"
-LangString T_MoreInfoURL ${LANG_GERMAN}  "https://gnupg.org"
+   "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"
@@ -320,8 +319,8 @@ FunctionEnd
 
 
 # Check whether GnuPG has already been installed.  This is called as
-# a leave function from the directory page.  A call to abort will get
-# back to the directory selection.
+# 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
@@ -501,6 +500,31 @@ Function TrimNewlines
    Exch $R0
 FunctionEnd
 
+
+# AddToPath - Adds the given dir to the search path.
+#        Input - head of the stack
+Function AddToPath
+  Exch $0
+  g4wihelp::path_add "$0"
+  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
+  Exch $0
+  g4wihelp::path_remove "$0"
+  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.
 #
@@ -516,22 +540,28 @@ Section "-gnupginst"
   FileWrite $0 "${VERSION}$\r$\n"
   FileClose $0
 
-  WriteRegStr HKLM "Software\GNU\GnuPG" "Install Directory" $INSTDIR
+  WriteRegStr HKLM "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
-    ExecWait '"$INSTDIR\bin\launch-gpa" --stop-server'
+    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
-    ExecWait '"$INSTDIR\bin\gpgconf" --kill dirmngr'
-    ExecWait '"$INSTDIR\bin\gpgconf" --kill gpg-agent'
+    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} \
@@ -544,12 +574,14 @@ Section "GnuPG" SEC_gnupg
   SectionIn RO
 
   SetOutPath "$INSTDIR\bin"
-  File /oname=gpg.exe "bin/gpg2.exe"
-  File /oname=gpgv.exe "bin/gpgv2.exe"
+  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/gpg-preset-passphrase.exe"
+  File "libexec/gpg-wks-client.exe"
 
   ClearErrors
   SetOverwrite try
@@ -561,22 +593,81 @@ Section "GnuPG" SEC_gnupg
 
   ClearErrors
   SetOverwrite try
-  File "libexec/scdaemon.exe"
+  File "bin/dirmngr.exe"
   SetOverwrite lastused
   ifErrors 0 +3
-      File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
-      Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
+      File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
+      Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
 
   ClearErrors
   SetOverwrite try
-  File "bin/dirmngr.exe"
+  File "libexec/scdaemon.exe"
   SetOverwrite lastused
   ifErrors 0 +3
-      File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
-      Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
+      File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
+      Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
 
   SetOutPath "$INSTDIR\share\gnupg"
   File "share/gnupg/gpg-conf.skel"
+  File "share/gnupg/dirmngr-conf.skel"
+  File "share/gnupg/distsigkey.gpg"
+
+  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
 
 
@@ -600,11 +691,44 @@ Section "-libgpg-error" SEC_libgpg_error
   File /oname=libgpg-error.imp lib/libgpg-error.dll.a
   SetOutPath "$INSTDIR\include"
   File include/gpg-error.h
-SectionEnd
-
-Section "-libiconv" SEC_libiconv
-  SetOutPath "$INSTDIR\bin"
-  File bin/libiconv-2.dll
+  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\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
@@ -651,15 +775,26 @@ SectionEnd
 Section "-gpgme" SEC_gpgme
   SetOutPath "$INSTDIR\bin"
   File bin/libgpgme-11.dll
-  File bin/libgpgme-glib-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 /oname=libgpgme-glib.imp lib/libgpgme-glib.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
@@ -775,12 +910,14 @@ Section "-gtk+" SEC_gtk_
   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.exe "bin/pinentry-gtk-2.exe"
+  File /oname=pinentry-basic.exe "bin/pinentry-w32.exe"
 SectionEnd
 
+!ifdef WITH_GUI
 Section "gpa" SEC_gpa
   SectionIn RO
   SetOutPath "$INSTDIR\bin"
@@ -832,7 +969,7 @@ ${If} ${RunningX64}
   # RegDLL can't be used for 64 bit and InstallLib seems to be a
   # registry hack.
   ClearErrors
-  ExecWait '"$SYSDIR\regsvr32" /s "$INSTDIR\bin\gpgex6.dll"'
+  nsExec::ExecToLog '"$SYSDIR\regsvr32" "/s" "$INSTDIR\bin\gpgex6.dll"'
   ifErrors 0 +2
      MessageBox MB_OK "$(T_GPGEX_RegFailed) (64 bit)"
 
@@ -847,6 +984,8 @@ LangString T_GPGEX_RegFailed ${LANG_ENGLISH} \
 LangString DESC_SEC_gpgex ${LANG_ENGLISH} \
    "GnuPG Explorer Extension"
 
+!endif
+
 
 Section "-gnupglast" SEC_gnupglast
   SetOutPath "$INSTDIR"
@@ -861,10 +1000,11 @@ SectionEnd
 
 Section "-un.gnupglast"
   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
-    ExecWait '"$INSTDIR\bin\launch-gpa" --stop-server'
+    nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
   no_uiserver:
   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
-    ExecWait '"$INSTDIR\bin\gpgconf" --kill gpg-agent'
+    nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
+    nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
   no_gpgconf:
 SectionEnd
 
@@ -874,24 +1014,25 @@ Section "-un.gpgex"
   Delete /REBOOTOK "$INSTDIR\bin\gpgex.dll"
 
 ${If} ${RunningX64}
-  ExecWait '"$SYSDIR\regsvr32" /u /s "$INSTDIR\bin\gpgex6.dll"'
+  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.exe"
+  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"
@@ -1000,16 +1141,23 @@ Section "-un.glib"
   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
 
@@ -1041,14 +1189,68 @@ Section "-un.zlib"
   Delete "$INSTDIR\bin\zlib1.dll"
 SectionEnd
 
-Section "-un.libiconv"
-  Delete "$INSTDIR\bin\libiconv-2.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\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"
@@ -1061,9 +1263,103 @@ Section "-un.gnupg"
   Delete "$INSTDIR\bin\gpgconf.exe"
   Delete "$INSTDIR\bin\gpg-connect-agent.exe"
   Delete "$INSTDIR\bin\gpgtar.exe"
+  Delete "$INSTDIR\bin\gpg-preset-passphrase.exe"
+  Delete "$INSTDIR\bin\gpg-wks-client.exe"
 
+  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"
@@ -1072,6 +1368,10 @@ Section "-un.gnupginst"
 
   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"
@@ -1136,6 +1436,7 @@ FunctionEnd
 
 # This also must be in a central place.  Also Urgs.
 
+!ifdef WITH_GUI
 Section "-startmenu"
 
 !ifdef HAVE_STARTMENU
@@ -1218,7 +1519,7 @@ no_quick_launch:
 
 !endif
 SectionEnd
-
+!endif
 
 
 #
@@ -1235,7 +1536,9 @@ Section
   WriteRegExpandStr HKLM $MYTMP "UninstallString" '"$INSTDIR\gnupg-uninstall.exe"'
   WriteRegExpandStr HKLM $MYTMP "InstallLocation" "$INSTDIR"
   WriteRegStr       HKLM $MYTMP "DisplayName"     "${PRETTY_PACKAGE}"
+!ifdef WITH_GUI
   WriteRegStr       HKLM $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpa.exe,0"
+!endif
   WriteRegStr       HKLM $MYTMP "DisplayVersion"  "${VERSION}"
   WriteRegStr       HKLM $MYTMP "Publisher"       "The GnuPG Project"
   WriteRegStr       HKLM $MYTMP "URLInfoAbout"    "https://gnupg.org"
@@ -1246,6 +1549,7 @@ SectionEnd
 
 Section Uninstall
 
+!ifdef WITH_GUI
 !ifdef HAVE_STARTMENU
   # Make sure that the context of the automatic variables has been set to
   # the "all users" shell folder.  This guarantees that the menu gets written
@@ -1283,14 +1587,14 @@ Section Uninstall
 no_quick_launch_uninstall:
 
 !endif
-
+!endif
 
   Delete "$INSTDIR\gnupg-uninstall.exe"
   RMDir "$INSTDIR"
 
   # Clean the registry.
-  DeleteRegValue HKLM "Software\GNU\GnuPG" "Install Directory"
-  DeleteRegKey /ifempty HKLM "Software\GNU\GnuPG"
+  DeleteRegValue HKLM "Software\GnuPG" "Install Directory"
+  DeleteRegKey /ifempty HKLM "Software\GnuPG"
   # Remove Windows Add/Remove Programs support.
   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
 SectionEnd