df08fb074ceb4ba4a9af6833a43f2fd9695bb3e7
[gnupg.git] / build-aux / speedo / w32 / inst.nsi
1 # inst.nsi - Installer for GnuPG on Windows.      -*- coding: latin-1; -*-
2 # Copyright (C) 2005, 2014 g10 Code GmbH
3 #               2017 Intevation GmbH
4 #
5 # This file is part of GnuPG.
6 #
7 # GnuPG is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # GnuPG is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, see <http://www.gnu.org/licenses/>.
19
20 # Macros to provide for invocation:
21 #  INST_DIR
22 #  INST6_DIR
23 #  BUILD_DIR
24 #  TOP_SRCDIR
25 #  W32_SRCDIR
26 #  BUILD_ISODATE   - the build date, e.g. "2014-10-31"
27 #  BUILD_DATESTR   - ditto w/o '-',  e.g. "20141031"
28 #  NAME
29 #  VERSION
30 #  PROD_VERSION
31 #
32 #  WITH_GUI        - Include the GPA GUI
33
34 !cd "${INST_DIR}"
35 !addincludedir "${W32_SRCDIR}"
36 !addplugindir "${BUILD_DIR}"
37
38 # The package name and version.  PRETTY_PACKAGE is a user visible name
39 # only while PACKAGE is useful for filenames etc.  PROD_VERSION is the
40 # product version and needs to be in the format "MAJ.MIN.MIC.BUILDNR".
41 !define PACKAGE "gnupg"
42 !define PACKAGE_SHORT "gnupg"
43 !define PRETTY_PACKAGE "GNU Privacy Guard"
44 !define PRETTY_PACKAGE_SHORT "GnuPG"
45 !define COMPANY "The GnuPG Project"
46 !define COPYRIGHT "Copyright (C) 2017 The GnuPG Project"
47 !define DESCRIPTION "GnuPG: The GNU Privacy Guard for Windows"
48
49 !define INSTALL_DIR "GnuPG"
50
51 !define WELCOME_TITLE_ENGLISH \
52  "Welcome to the installation of GnuPG"
53
54 !define WELCOME_TITLE_GERMAN \
55  "Willkommen bei der Installation von GnuPG"
56
57 !define ABOUT_ENGLISH \
58  "GnuPG is the mostly used software for mail and data encryption. \
59   GnuPG can be used to encrypt data and to create digital signatures. \
60   GnuPG includes an advanced key management facility and is compliant \
61   with the OpenPGP Internet standard as described in RFC-4880. \
62   \r\n\r\n$_CLICK \
63   \r\n\r\n\r\n\r\n\r\nThis is GnuPG version ${VERSION}.\r\n\
64   File version: ${PROD_VERSION}\r\n\
65   Release date: ${BUILD_ISODATE}"
66 !define ABOUT_GERMAN \
67  "GnuPG is die häufigst verwendete Software zur Mail- und Datenverschlüsselung.\
68    \r\n\r\n$_CLICK \
69    \r\n\r\n\r\n\r\n\r\nDies ist GnuPG Version ${VERSION}.\r\n\
70    Dateiversion: ${PROD_VERSION}\r\n\
71    Releasedatum: ${BUILD_ISODATE}"
72
73
74 # The copyright license of the package.  Define only one of these.
75 !define LICENSE_GPL
76
77 # Select the best compression algorithm available.  The dictionary
78 # size is the default (8 MB).
79 !ifndef SOURCES
80 SetCompressor lzma
81 # SetCompressorDictSize 8
82 !endif
83
84 # We use the modern UI.
85 !include "MUI.nsh"
86
87 # Some helper some
88 !include "LogicLib.nsh"
89 !include "x64.nsh"
90
91 # We support user mode installation but prefer system wide
92 !define MULTIUSER_EXECUTIONLEVEL Highest
93 !define MULTIUSER_MUI
94 !define MULTIUSER_INSTALLMODE_COMMANDLINE
95 !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\${PACKAGE_SHORT}"
96 !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME ""
97 !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\${PACKAGE_SHORT}"
98 !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "Install Directory"
99 !define MULTIUSER_INSTALLMODE_INSTDIR "${PACKAGE_SHORT}"
100 !include "MultiUser.nsh"
101
102 # Set the package name.  Note that this name should not be suffixed
103 # with the version because this would get displayed in the start menu.
104 # Given that a slash in the name troubles Windows startmenu creation
105 # we set the Startmenu explicit below.
106 Name "${PRETTY_PACKAGE}"
107
108 # Set the output filename.
109 OutFile "${NAME}-${VERSION}_${BUILD_DATESTR}.exe"
110
111 #Fixme: Do we need a logo?
112 #Icon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico"
113 #UninstallIcon "${TOP_SRCDIR}/doc/logo/gnupg-logo-icon.ico"
114
115 # Set the installation directory.
116 !ifndef INSTALL_DIR
117 !define INSTALL_DIR "GnuPG"
118 !endif
119 InstallDir "$PROGRAMFILES\${INSTALL_DIR}"
120
121 # Add version information to the file properties.
122 VIProductVersion "${PROD_VERSION}"
123 VIAddVersionKey "ProductName" "${PRETTY_PACKAGE_SHORT} (${VERSION})"
124 VIAddVersionKey "Comments" \
125    "GnuPG is Free Software; you can redistribute it  \
126     and/or modify it under the terms of the GNU General Public License.  \
127     You should have received a copy of the GNU General Public License  \
128     along with this software; if not, write to the Free Software  \
129     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,  \
130     MA 02110-1301, USA"
131 VIAddVersionKey "CompanyName" "${COMPANY}"
132 VIAddVersionKey "LegalTrademarks" ""
133 VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
134 VIAddVersionKey "FileDescription" "${DESCRIPTION}"
135 VIAddVersionKey "FileVersion" "${PROD_VERSION}"
136
137 # Interface Settings
138
139 # !define MUI_ABORTWARNING
140 !define MUI_FINISHPAGE_NOAUTOCLOSE
141 !define MUI_UNFINISHPAGE_NOAUTOCLOSE
142
143 !define MUI_HEADERIMAGE
144 !define MUI_HEADERIMAGE_BITMAP "${W32_SRCDIR}\gnupg-logo-150x57.bmp"
145 !define MUI_WELCOMEFINISHPAGE_BITMAP "${W32_SRCDIR}\gnupg-logo-164x314.bmp"
146
147 # Remember the installer language
148 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
149 !define MUI_LANGDLL_REGISTRY_KEY "Software\GnuPG"
150 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
151
152 #
153 # The list of wizard pages.
154 #
155 !define MUI_WELCOMEPAGE_TITLE "$(T_WelcomeTitle)"
156 !define MUI_WELCOMEPAGE_TEXT  "$(T_About)"
157 !insertmacro MUI_PAGE_WELCOME
158
159 !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
160 !define MUI_PAGE_HEADER_SUBTEXT "$(T_GPLHeader)"
161 !define MUI_LICENSEPAGE_TEXT_BOTTOM "$(T_GPLShort)"
162 !insertmacro MUI_PAGE_LICENSE "${TOP_SRCDIR}/COPYING"
163
164 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning
165 !define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckExistingVersion
166 !insertmacro MUI_PAGE_COMPONENTS
167
168 # We don't have MUI_PAGE_DIRECTORY
169
170 !ifdef WITH_GUI
171
172 Page custom CustomPageOptions
173
174 Var STARTMENU_FOLDER
175
176 !define MUI_PAGE_CUSTOMFUNCTION_PRE CheckIfStartMenuWanted
177 !define MUI_STARTMENUPAGE_NODISABLE
178 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
179 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GnuPG"
180 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
181 # We need to set the Startmenu name explicitly because a slash in the
182 # name is not possible.
183 !define MUI_STARTMENUPAGE_DEFAULTFOLDER "GnuPG"
184
185 !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
186
187 !endif
188
189 !define MUI_PAGE_CUSTOMFUNCTION_PRE PrintCloseOtherApps
190 !insertmacro MUI_PAGE_INSTFILES
191
192 #!define MUI_PAGE_CUSTOMFUNCTION_PRE ShowFinalWarnings
193 !define MUI_FINISHPAGE_SHOWREADME "README.txt"
194 !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)"
195 #!define MUI_FINISHPAGE_RUN
196 #!define MUI_FINISHPAGE_RUN_FUNCTION RunOnFinish
197 #!define MUI_FINISHPAGE_RUN_TEXT "$(T_RunKeyManager)"
198 #!define MUI_FINISHPAGE_RUN_NOTCHECKED
199 !define MUI_FINISHPAGE_LINK "$(T_MoreInfo)"
200 !define MUI_FINISHPAGE_LINK_LOCATION "$(T_MoreInfoURL)"
201 !insertmacro MUI_PAGE_FINISH
202
203
204 # Uninstaller pages.
205
206 !insertmacro MUI_UNPAGE_CONFIRM
207 !insertmacro MUI_UNPAGE_INSTFILES
208
209
210 #Page license
211 #Page components
212 #Page directory
213 #Page instfiles
214 #UninstPage uninstConfirm
215 #UninstPage instfiles
216
217
218 # Language support.  This has to be done after defining the pages, but
219 # before defining the translation strings.  Confusing.
220
221 !insertmacro MUI_LANGUAGE "English"
222 !insertmacro MUI_LANGUAGE "German"
223
224 !insertmacro MUI_RESERVEFILE_LANGDLL
225 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
226 ReserveFile "${BUILD_DIR}\g4wihelp.dll"
227 ReserveFile "${W32_SRCDIR}\gnupg-logo-150x57.bmp"
228 ReserveFile "${W32_SRCDIR}\gnupg-logo-164x314.bmp"
229 ReserveFile "${TOP_SRCDIR}\COPYING"
230 ReserveFile "${W32_SRCDIR}\inst-options.ini"
231
232 # Language support
233
234 LangString T_LangCode ${LANG_ENGLISH} "en"
235 LangString T_LangCode ${LANG_GERMAN}  "de"
236
237
238 # The WelcomeTitle is displayed on the first page.
239 LangString T_WelcomeTitle ${LANG_ENGLISH} "${WELCOME_TITLE_ENGLISH}"
240 LangString T_WelcomeTitle ${LANG_GERMAN} "${WELCOME_TITLE_GERMAN}"
241
242 # The About string as displayed on the first page.
243 LangString T_About ${LANG_ENGLISH} "${ABOUT_ENGLISH}"
244 LangString T_About ${LANG_GERMAN} "${ABOUT_GERMAN}"
245
246 # Startup page
247 LangString T_GPLHeader ${LANG_ENGLISH} \
248   "This software is licensed under the terms of the GNU General Public \
249    License (GNU GPL)."
250 LangString T_GPLHeader ${LANG_GERMAN}} \
251   "Diese Software ist unter der GNU General Public License \
252    (GNU GPL) lizensiert."
253
254 LangString T_GPLShort ${LANG_ENGLISH} \
255   "In short: You are allowed to run this software for any purpose. \
256    You may distribute it as long as you give the recipients the same \
257    rights you have received."
258 LangString T_GPLShort ${LANG_GERMAN} \
259   "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
260    einzusetzen.  Sie können die Software weitergeben, sofern Sie dem \
261    Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
262
263 LangString T_RunKeyManager ${LANG_ENGLISH} \
264    "Run the key manager"
265 LangString T_RunKeyManager ${LANG_GERMAN} \
266    "Die Schlüsselverwaltung aufrufen"
267
268 LangString T_MoreInfo ${LANG_ENGLISH} \
269    "Click here to see how to help the GnuPG Project"
270 LangString T_MoreInfo ${LANG_GERMAN} \
271    "Hier klicken um dem GnuPG Projekt zu zu helfen"
272 LangString T_MoreInfoURL ${LANG_ENGLISH} "https://gnupg.org/donate"
273 LangString T_MoreInfoURL ${LANG_GERMAN}  "https://gnupg.org/donate"
274
275 LangString T_ShowReadme ${LANG_ENGLISH} \
276    "Show the README file"
277 LangString T_ShowReadme ${LANG_GERMAN} \
278    "Die README Datei anzeigen"
279
280 LangString T_NoKeyManager ${LANG_ENGLISH} \
281    "No key manager has been installed, thus we can't run one now."
282 LangString T_NoKeyManager ${LANG_GERMAN} \
283    "Es wurde keine Schlüsselverwaltung installiert. \
284     Deswegen kann sie jetzt auch nicht ausgeführt werden."
285
286 # Functions
287
288 # Custom functions and macros for this installer.
289 LangString T_AlreadyRunning ${LANG_ENGLISH} \
290    "An instance of this installer is already running."
291 LangString T_AlreadyRunning ${LANG_GERMAN} \
292    "Ein Exemplar dieses Installers läuft bereits."
293
294 Function G4wRunOnce
295   Push $R0
296   StrCpy $R0 "gnupg"
297   g4wihelp::runonce
298   StrCmp $R0 0 +3
299      MessageBox MB_OK $(T_AlreadyRunning)
300      Abort
301   Pop $R0
302 FunctionEnd
303
304 #
305 # Control function for the Custom page to select special
306 # install options.
307 #
308 Function CustomPageOptions
309   !insertmacro MUI_HEADER_TEXT "$(T_InstallOptions)" "$(T_InstallOptLinks)"
310
311   # Note, that the default selection is done in the ini file
312   !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \
313         "Field 1" "Text"  "$(T_InstOptLabelA)"
314   !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \
315         "Field 2" "Text"  "$(T_InstOptFieldA)"
316   !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \
317         "Field 3" "Text"  "$(T_InstOptFieldB)"
318   !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \
319         "Field 4" "Text"  "$(T_InstOptFieldC)"
320   !insertmacro MUI_INSTALLOPTIONS_WRITE "${W32_SRCDIR}/inst-options.ini" \
321         "Field 5" "Text"  "$(T_InstOptLabelB)"
322
323   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${W32_SRCDIR}/inst-options.ini"
324 FunctionEnd
325
326
327 # Check whether GnuPG has already been installed.  This is called as
328 # a leave function from the components page.  A call to abort will get
329 # back to the components selection.
330 Function CheckExistingVersion
331   ClearErrors
332   FileOpen $0 "$INSTDIR\VERSION" r
333   IfErrors nexttest
334   FileRead $0 $R0
335   FileRead $0 $R1
336   FileClose $0
337
338   Push $R1
339   Call TrimNewLines
340   Pop $R1
341
342   MessageBox MB_YESNO "$(T_FoundExistingVersion)" IDYES leave
343   Abort
344
345  nexttest:
346   ClearErrors
347   ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" "DisplayVersion"
348   IfErrors leave 0
349      MessageBox MB_YESNO "$(T_FoundExistingVersionB)" IDYES leave
350      Abort
351
352  leave:
353 FunctionEnd
354
355
356
357 # PrintNonAdminWarning
358
359 # Check whether the current user is in the Administrator group or an
360 # OS version without the need for an Administrator is in use.  Print a
361 # diagnostic if this is not the case and abort installation.
362 Function PrintNonAdminWarning
363   ClearErrors
364   UserInfo::GetName
365   IfErrors leave
366   Pop $0
367   UserInfo::GetAccountType
368   Pop $1
369   StrCmp $1 "Admin" leave +1
370   MessageBox MB_YESNO "$(T_AdminWanted)" IDNO exit
371   goto leave
372  exit:
373     Quit
374  leave:
375 FunctionEnd
376
377
378 # Check whether the start menu is actually wanted.
379
380 Function CheckIfStartMenuWanted
381   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
382         "Field 2" "State"
383   IntCmp $R0 1 +2
384     Abort
385 FunctionEnd
386
387
388 # Check whether this is a reinstall and popup a message box to explain
389 # that it is better to close other apps before continuing
390 Function PrintCloseOtherApps
391     IfFileExists $INSTDIR\bin\gpg.exe print_warning
392     IfFileExists $INSTDIR\bin\gpa.exe print_warning
393     Return
394    print_warning:
395     MessageBox MB_OK|MB_ICONEXCLAMATION "$(T_CloseOtherApps)"
396
397 FunctionEnd
398
399 # Called right before the final page to show more warnings.
400 #Function ShowFinalWarnings
401 #   leave:
402 #FunctionEnd
403
404 #-----------------------------------------------
405 # Strings pertaining to the install options page
406 #-----------------------------------------------
407
408 # Installation options title
409 LangString T_InstallOptions ${LANG_ENGLISH} "Install Options"
410 LangString T_InstallOptions ${LANG_GERMAN}  "Installationsoptionen"
411
412 # Installation options subtitle 1
413 LangString T_InstallOptLinks ${LANG_ENGLISH} "Start links"
414 LangString T_InstallOptLinks ${LANG_GERMAN}  "Startlinks"
415
416 LangString T_InstOptLabelA  ${LANG_ENGLISH} \
417      "Please select where GnuPG shall install links:"
418 LangString T_InstOptLabelA  ${LANG_GERMAN} \
419      "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
420
421 LangString T_InstOptLabelB  ${LANG_ENGLISH} \
422      "(Only programs will be linked into the quick launch bar.)"
423 LangString T_InstOptLabelB  ${LANG_GERMAN} \
424      "(In die Schnellstartleiste werden nur Verknüpfungen für \
425       Programme angelegt.) "
426
427 LangString T_InstOptFieldA  ${LANG_ENGLISH} \
428      "Start Menu"
429 LangString T_InstOptFieldA  ${LANG_GERMAN} \
430      "Startmenü"
431
432 LangString T_InstOptFieldB  ${LANG_ENGLISH} \
433      "Desktop"
434 LangString T_InstOptFieldB  ${LANG_GERMAN} \
435      "Arbeitsfläche"
436
437 LangString T_InstOptFieldC  ${LANG_ENGLISH} \
438      "Quick Launch Bar"
439 LangString T_InstOptFieldC  ${LANG_GERMAN} \
440      "Schnellstartleiste"
441
442 #------------------------------------------------
443 # String pertaining to the existing version check
444 #------------------------------------------------
445 LangString T_FoundExistingVersion ${LANG_ENGLISH} \
446      "Version $R1 has already been installed.  $\r$\n\
447       Do you want to overwrite it with version ${VERSION}?"
448 LangString T_FoundExistingVersion ${LANG_GERMAN} \
449      "Version $R1 ist hier bereits installiert. $\r$\n\
450       Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
451        $\r$\n\
452       (Sie können in jedem Fall mit JA antworten, falls es sich um \
453        eine neuere oder dieselbe Version handelt.)"
454 LangString T_FoundExistingVersionB ${LANG_ENGLISH} \
455      "A version of GnuPG has already been installed on the system. \
456        $\r$\n\
457        $\r$\n\
458       Do you want to continue installing GnuPG?"
459 LangString T_FoundExistingVersionB ${LANG_GERMAN} \
460      "Eine Version von GnuPG ist hier bereits installiert. \
461         $\r$\n\
462         $\r$\n\
463       Möchten die die Installation von GnuPG fortführen?"
464
465
466
467 # From Function PrintNonAdminWarning
468 LangString T_AdminWanted ${LANG_ENGLISH} \
469    "Warning: It is recommended to install GnuPG system-wide with \
470     administrator rights. \
471       $\r$\n\
472       $\r$\n\
473     Do you want to continue installing GnuPG without administrator rights?"
474 LangString T_AdminWanted ${LANG_GERMAN} \
475    "Achtung: Es wird empfohlen GnuPG systemweit mit \
476     Administratorrechten zu installieren. \
477       $\r$\n\
478       $\r$\n\
479     Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?"
480
481 # From Function PrintCloseOtherApps
482 LangString T_CloseOtherApps ${LANG_ENGLISH} \
483    "Please make sure that other applications are not running. \
484     GnuPG will try to install anyway but a reboot may be required."
485 LangString T_CloseOtherApps ${LANG_GERMAN} \
486    "Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
487     sind.  GnuPG wird auf jeden Fall versuchen, eine Installation \
488     durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten."
489
490
491 # TrimNewlines  - taken from the NSIS reference
492 # input, top of stack  (e.g. whatever$\r$\n)
493 # output, top of stack (replaces, with e.g. whatever)
494 # modifies no other variables.
495 Function TrimNewlines
496    Exch $R0
497    Push $R1
498    Push $R2
499    StrCpy $R1 0
500
501  loop:
502    IntOp $R1 $R1 - 1
503    StrCpy $R2 $R0 1 $R1
504    StrCmp $R2 "$\r" loop
505    StrCmp $R2 "$\n" loop
506    IntOp $R1 $R1 + 1
507    IntCmp $R1 0 no_trim_needed
508    StrCpy $R0 $R0 $R1
509
510  no_trim_needed:
511    Pop $R2
512    Pop $R1
513    Exch $R0
514 FunctionEnd
515
516
517 # AddToPath - Adds the given dir to the search path.
518 #        Input - head of the stack
519 Function AddToPath
520   ClearErrors
521   UserInfo::GetName
522   IfErrors add_admin
523   Pop $0
524   UserInfo::GetAccountType
525   Pop $1
526   StrCmp $1 "Admin" add_admin add_user
527
528 add_admin:
529   Exch $0
530   g4wihelp::path_add "$0" "0"
531   goto add_done
532 add_user:
533   Exch $0
534   g4wihelp::path_add "$0" "1"
535   goto add_done
536
537 add_done:
538   StrCmp $R5 "0" add_to_path_done
539   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
540   add_to_path_done:
541   Pop $0
542 FunctionEnd
543
544
545 # RemoveFromPath - Remove a given dir from the path
546 #     Input: head of the stack
547 Function un.RemoveFromPath
548   ClearErrors
549   UserInfo::GetName
550   IfErrors remove_admin
551   Pop $0
552   UserInfo::GetAccountType
553   Pop $1
554   StrCmp $1 "Admin" remove_admin remove_user
555
556 remove_admin:
557   Exch $0
558   g4wihelp::path_remove "$0" "0"
559   goto remove_done
560 remove_user:
561   Exch $0
562   g4wihelp::path_remove "$0" "1"
563   goto remove_done
564
565 remove_done:
566   StrCmp $R5 "0" remove_from_path_done
567   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
568   remove_from_path_done:
569   Pop $0
570 FunctionEnd
571
572
573 #
574 # Define the installer sections.
575 #
576
577 Section "-gnupginst"
578   SetOutPath "$INSTDIR"
579
580   File "${BUILD_DIR}/README.txt"
581
582   # Write a version file.
583   FileOpen $0 "$INSTDIR\VERSION" w
584   FileWrite $0 "${PACKAGE}$\r$\n"
585   FileWrite $0 "${VERSION}$\r$\n"
586   FileClose $0
587
588   WriteRegStr SHCTX "Software\GnuPG" "Install Directory" $INSTDIR
589
590   # If we are reinstalling, try to kill a possible running gpa using
591   # an already installed gpa.
592   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
593     nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
594
595   no_uiserver:
596
597   # If we are reinstalling, try to kill a possible running agent using
598   # an already installed gpgconf.
599
600   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
601     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
602     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
603
604   no_gpgconf:
605
606   # Add the bin directory to the PATH
607   Push "$INSTDIR\bin"
608   Call AddToPath
609   DetailPrint "Added $INSTDIR\bin to PATH"
610 SectionEnd
611
612 LangString DESC_Menu_gnupg_readme ${LANG_ENGLISH} \
613    "General information on GnuPG"
614 LangString DESC_Menu_gnupg_readme ${LANG_GERMAN} \
615    "Allgemeine Informationen zu GnuPG"
616
617
618 Section "GnuPG" SEC_gnupg
619   SectionIn RO
620
621   SetOutPath "$INSTDIR\bin"
622   File "bin/gpg.exe"
623   File "bin/gpgv.exe"
624   File "bin/gpgsm.exe"
625   File "bin/gpgconf.exe"
626   File "bin/gpg-connect-agent.exe"
627   File "bin/gpgtar.exe"
628   File "libexec/gpg-preset-passphrase.exe"
629   File "libexec/gpg-wks-client.exe"
630
631   ClearErrors
632   SetOverwrite try
633   File "bin/gpg-agent.exe"
634   SetOverwrite lastused
635   ifErrors 0 +3
636       File /oname=gpg-agent.exe.tmp "bin/gpg-agent.exe"
637       Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe
638
639   ClearErrors
640   SetOverwrite try
641   File "bin/dirmngr.exe"
642   SetOverwrite lastused
643   ifErrors 0 +3
644       File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
645       Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
646
647   ClearErrors
648   SetOverwrite try
649   File "libexec/scdaemon.exe"
650   SetOverwrite lastused
651   ifErrors 0 +3
652       File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
653       Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
654
655   SetOutPath "$INSTDIR\share\gnupg"
656   File "share/gnupg/distsigkey.gpg"
657   File "share/gnupg/sks-keyservers.netCA.pem"
658
659   SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES"
660   File share/locale/ca/LC_MESSAGES/gnupg2.mo
661   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
662   File share/locale/cs/LC_MESSAGES/gnupg2.mo
663   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
664   File share/locale/da/LC_MESSAGES/gnupg2.mo
665   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
666   File share/locale/de/LC_MESSAGES/gnupg2.mo
667   SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES"
668   File share/locale/el/LC_MESSAGES/gnupg2.mo
669   SetOutPath "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
670   File share/locale/en@boldquot/LC_MESSAGES/gnupg2.mo
671   SetOutPath "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
672   File share/locale/en@quot/LC_MESSAGES/gnupg2.mo
673   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
674   File share/locale/eo/LC_MESSAGES/gnupg2.mo
675   SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
676   File share/locale/es/LC_MESSAGES/gnupg2.mo
677   SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES"
678   File share/locale/et/LC_MESSAGES/gnupg2.mo
679   SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES"
680   File share/locale/fi/LC_MESSAGES/gnupg2.mo
681   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
682   File share/locale/fr/LC_MESSAGES/gnupg2.mo
683   SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES"
684   File share/locale/gl/LC_MESSAGES/gnupg2.mo
685   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
686   File share/locale/hu/LC_MESSAGES/gnupg2.mo
687   SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES"
688   File share/locale/id/LC_MESSAGES/gnupg2.mo
689   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
690   File share/locale/it/LC_MESSAGES/gnupg2.mo
691   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
692   File share/locale/ja/LC_MESSAGES/gnupg2.mo
693   SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES"
694   File share/locale/nb/LC_MESSAGES/gnupg2.mo
695   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
696   File share/locale/pl/LC_MESSAGES/gnupg2.mo
697   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
698   File share/locale/pt/LC_MESSAGES/gnupg2.mo
699   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
700   File share/locale/ro/LC_MESSAGES/gnupg2.mo
701   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
702   File share/locale/ru/LC_MESSAGES/gnupg2.mo
703   SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES"
704   File share/locale/sk/LC_MESSAGES/gnupg2.mo
705   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
706   File share/locale/sv/LC_MESSAGES/gnupg2.mo
707   SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES"
708   File share/locale/tr/LC_MESSAGES/gnupg2.mo
709   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
710   File share/locale/uk/LC_MESSAGES/gnupg2.mo
711   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
712   File share/locale/zh_CN/LC_MESSAGES/gnupg2.mo
713   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
714   File share/locale/zh_TW/LC_MESSAGES/gnupg2.mo
715 SectionEnd
716
717
718 LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
719    "The GnuPG Core is the actual encrypt core and a set of command \
720     line utilities."
721 LangString DESC_SEC_gnupg ${LANG_GERMAN} \
722    "Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \
723     dieser Software.  Der GnuPG Core stellt die eigentliche \
724     Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
725
726 LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \
727    "Show the manual for the GnuPG Core"
728 LangString DESC_Menu_gnupg_manual ${LANG_GERMAN} \
729    "Das Handbuch zum GnuPG Kern anzeigen"
730
731 Section "-libgpg-error" SEC_libgpg_error
732   SetOutPath "$INSTDIR\bin"
733   File bin/libgpg-error-0.dll
734   SetOutPath "$INSTDIR\lib"
735   File /oname=libgpg-error.imp lib/libgpg-error.dll.a
736   SetOutPath "$INSTDIR\include"
737   File include/gpg-error.h
738   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
739   File share/locale/cs/LC_MESSAGES/libgpg-error.mo
740   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
741   File share/locale/da/LC_MESSAGES/libgpg-error.mo
742   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
743   File share/locale/de/LC_MESSAGES/libgpg-error.mo
744   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
745   File share/locale/eo/LC_MESSAGES/libgpg-error.mo
746   SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
747   File share/locale/es/LC_MESSAGES/libgpg-error.mo
748   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
749   File share/locale/fr/LC_MESSAGES/libgpg-error.mo
750   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
751   File share/locale/hu/LC_MESSAGES/libgpg-error.mo
752   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
753   File share/locale/it/LC_MESSAGES/libgpg-error.mo
754   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
755   File share/locale/ja/LC_MESSAGES/libgpg-error.mo
756   SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES"
757   File share/locale/nl/LC_MESSAGES/libgpg-error.mo
758   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
759   File share/locale/pl/LC_MESSAGES/libgpg-error.mo
760   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
761   File share/locale/pt/LC_MESSAGES/libgpg-error.mo
762   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
763   File share/locale/ro/LC_MESSAGES/libgpg-error.mo
764   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
765   File share/locale/ru/LC_MESSAGES/libgpg-error.mo
766   SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES"
767   File share/locale/sr/LC_MESSAGES/libgpg-error.mo
768   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
769   File share/locale/sv/LC_MESSAGES/libgpg-error.mo
770   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
771   File share/locale/uk/LC_MESSAGES/libgpg-error.mo
772   SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES"
773   File share/locale/vi/LC_MESSAGES/libgpg-error.mo
774   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
775   File share/locale/zh_CN/LC_MESSAGES/libgpg-error.mo
776   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
777   File share/locale/zh_TW/LC_MESSAGES/libgpg-error.mo
778 SectionEnd
779
780 Section "-zlib" SEC_zlib
781   SetOutPath "$INSTDIR\bin"
782   File bin/zlib1.dll
783 SectionEnd
784
785 Section "-npth" SEC_npth
786   SetOutPath "$INSTDIR\bin"
787   File bin/libnpth-0.dll
788   SetOutPath "$INSTDIR\lib"
789   File /oname=libnpth.imp lib/libnpth.dll.a
790   SetOutPath "$INSTDIR\include"
791   File include/npth.h
792 SectionEnd
793
794 Section "-gcrypt" SEC_gcrypt
795   SetOutPath "$INSTDIR\bin"
796   File bin/libgcrypt-20.dll
797   SetOutPath "$INSTDIR\lib"
798   File /oname=libgcrypt.imp lib/libgcrypt.dll.a
799   SetOutPath "$INSTDIR\include"
800   File include/gcrypt.h
801 SectionEnd
802
803 Section "-assuan" SEC_assuan
804   SetOutPath "$INSTDIR\bin"
805   File bin/libassuan-0.dll
806   SetOutPath "$INSTDIR\lib"
807   File /oname=libassuan.imp lib/libassuan.dll.a
808   SetOutPath "$INSTDIR\include"
809   File include/assuan.h
810 SectionEnd
811
812 Section "-ksba" SEC_ksba
813   SetOutPath "$INSTDIR\bin"
814   File bin/libksba-8.dll
815   SetOutPath "$INSTDIR\lib"
816   File /oname=libksba.imp lib/libksba.dll.a
817   SetOutPath "$INSTDIR\include"
818   File include/ksba.h
819 SectionEnd
820
821 Section "-gpgme" SEC_gpgme
822   SetOutPath "$INSTDIR\bin"
823   File bin/libgpgme-11.dll
824   File /nonfatal bin/libgpgme-glib-11.dll
825   File libexec/gpgme-w32spawn.exe
826   SetOutPath "$INSTDIR\lib"
827   File /oname=libgpgme.imp      lib/libgpgme.dll.a
828   File /nonfatal /oname=libgpgme-glib.imp lib/libgpgme-glib.dll.a
829   SetOutPath "$INSTDIR\include"
830   File include/gpgme.h
831 SectionEnd
832
833 Section "-sqlite" SEC_sqlite
834   SetOutPath "$INSTDIR\bin"
835   File bin/libsqlite3-0.dll
836 SectionEnd
837
838 !ifdef WITH_GUI
839 Section "-libiconv" SEC_libiconv
840   SetOutPath "$INSTDIR\bin"
841   File bin/libiconv-2.dll
842 SectionEnd
843
844 Section "-gettext" SEC_gettext
845   SetOutPath "$INSTDIR\bin"
846   File bin/libintl-8.dll
847 SectionEnd
848
849 Section "-glib" SEC_glib
850   SetOutPath "$INSTDIR\bin"
851   File bin/libgio-2.0-0.dll
852   File bin/libglib-2.0-0.dll
853   File bin/libgmodule-2.0-0.dll
854   File bin/libgobject-2.0-0.dll
855   File bin/libgthread-2.0-0.dll
856   File bin/gspawn-win32-helper.exe
857   File bin/gspawn-win32-helper-console.exe
858
859   File bin/libffi-6.dll
860 SectionEnd
861
862 Section "-libpng" SEC_libpng
863   SetOutPath "$INSTDIR\bin"
864   File bin/libpng14-14.dll
865 SectionEnd
866
867 #Section "-jpeg" SEC_jpeg
868 #  SetOutPath "$INSTDIR"
869 #  File bin/jpeg62.dll
870 #SectionEnd
871
872 Section "-cairo" SEC_cairo
873   SetOutPath "$INSTDIR\bin"
874   File bin/libcairo-gobject-2.dll
875   File bin/libpangocairo-1.0-0.dll
876   File bin/libcairo-2.dll
877   File bin/libcairo-script-interpreter-2.dll
878 SectionEnd
879
880 Section "-pixman" SEC_pixman
881   SetOutPath "$INSTDIR\bin"
882   File bin/libpixman-1-0.dll
883 SectionEnd
884
885 Section "-pango" SEC_pango
886   SetOutPath "$INSTDIR\bin"
887   File bin/pango-querymodules.exe
888   File bin/libpango-1.0-0.dll
889   File bin/libpangowin32-1.0-0.dll
890
891   SetOutPath "$INSTDIR\lib\pango\1.6.0\modules"
892   File lib/pango/1.6.0/modules/pango-basic-win32.dll
893   File lib/pango/1.6.0/modules/pango-arabic-lang.dll
894   File lib/pango/1.6.0/modules/pango-indic-lang.dll
895
896   SetOutPath "$INSTDIR\etc\pango"
897   File ${W32_SRCDIR}/pango.modules
898 SectionEnd
899
900 Section "-atk" SEC_atk
901   SetOutPath "$INSTDIR\bin"
902   File bin/libatk-1.0-0.dll
903 SectionEnd
904
905 Section "-gtk+" SEC_gtk_
906   SetOutPath "$INSTDIR\bin"
907   File bin/libgdk_pixbuf-2.0-0.dll
908   File bin/libgdk-win32-2.0-0.dll
909   File bin/libgtk-win32-2.0-0.dll
910
911   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
912   File /oname=loaders.cache ${W32_SRCDIR}/gdk-pixbuf-loaders.cache
913   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
914   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.dll
915   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-bmp.dll
916   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-emf.dll
917   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-gif.dll
918   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-ico.dll
919   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-jpeg.dll
920   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-tiff.dll
921   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-wmf.dll
922   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.dll
923   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.dll
924   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll
925   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.dll
926   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.dll
927   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.dll
928   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.dll
929   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.dll
930   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.dll
931   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.dll
932
933   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
934   File lib/gtk-2.0/2.10.0/engines/libwimp.dll
935   File lib/gtk-2.0/2.10.0/engines/libpixmap.dll
936
937   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
938   File lib/gtk-2.0/2.10.0/immodules/im-thai.dll
939   File lib/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.dll
940   File lib/gtk-2.0/2.10.0/immodules/im-multipress.dll
941   File lib/gtk-2.0/2.10.0/immodules/im-ti-er.dll
942   File lib/gtk-2.0/2.10.0/immodules/im-am-et.dll
943   File lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll
944   File lib/gtk-2.0/2.10.0/immodules/im-inuktitut.dll
945   File lib/gtk-2.0/2.10.0/immodules/im-viqr.dll
946   File lib/gtk-2.0/2.10.0/immodules/im-ti-et.dll
947   File lib/gtk-2.0/2.10.0/immodules/im-ipa.dll
948   File lib/gtk-2.0/2.10.0/immodules/im-ime.dll
949
950   SetOutPath "$INSTDIR\share\themes\Default\gtk-2.0-key"
951   File share/themes/Default/gtk-2.0-key/gtkrc
952
953   SetOutPath "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
954   File share/themes/MS-Windows/gtk-2.0/gtkrc
955
956   SetOutPath "$INSTDIR\etc\gtk-2.0"
957   File etc/gtk-2.0/im-multipress.conf
958 SectionEnd
959 !endif
960
961 Section "-pinentry" SEC_pinentry
962   SetOutPath "$INSTDIR\bin"
963   File /oname=pinentry-basic.exe "bin/pinentry-w32.exe"
964 SectionEnd
965
966 !ifdef WITH_GUI
967 Section "gpa" SEC_gpa
968   SectionIn RO
969   SetOutPath "$INSTDIR\bin"
970   File bin/gpa.exe
971   File bin/launch-gpa.exe
972 SectionEnd
973
974 LangString DESC_SEC_gpa ${LANG_ENGLISH} \
975    "The GnuPG Assistant is the graphical interface of GnuPG"
976 LangString DESC_SEC_gpa ${LANG_GERMAN} \
977    "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
978
979 LangString DESC_Menu_gpa ${LANG_ENGLISH} \
980    "Run the GnuGP Assistant."
981 LangString DESC_Menu_gpa ${LANG_GERMAN} \
982    "Den GnuPG Assistenten starten."
983
984 Section "gpgex" SEC_gpgex
985   SetOutPath "$INSTDIR\bin"
986
987   ClearErrors
988   SetOverwrite try
989   File bin/gpgex.dll
990   SetOverwrite lastused
991   ifErrors 0 do_reg
992       File /oname=gpgex.dll.tmp bin/gpgex.dll
993       Rename /REBOOTOK gpgex.dll.tmp gpgex.dll
994
995  do_reg:
996   ClearErrors
997   RegDLL "$INSTDIR\bin\gpgex.dll"
998   ifErrors 0 +2
999      MessageBox MB_OK "$(T_GPGEX_RegFailed)"
1000
1001 ${If} ${RunningX64}
1002   # Install the 64 bit version of the plugin.
1003   # Note that we install this in addition to the 32 bit version so that
1004   # the 32 bit version can be used by file dialogs of 32 bit programs.
1005   ClearErrors
1006   SetOverwrite try
1007   File /oname=gpgex6.dll "${INST6_DIR}/bin/gpgex.dll"
1008   SetOverwrite lastused
1009   ifErrors 0 do_reg64
1010       File /oname=gpgex6.dll.tmp "${INST6_DIR}/bin/gpgex.dll"
1011       Rename /REBOOTOK gpgex6.dll.tmp gpgex6.dll
1012
1013  do_reg64:
1014   # Register the DLL. We need to register both versions.  However
1015   # RegDLL can't be used for 64 bit and InstallLib seems to be a
1016   # registry hack.
1017   ClearErrors
1018   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/s" "$INSTDIR\bin\gpgex6.dll"'
1019   ifErrors 0 +2
1020      MessageBox MB_OK "$(T_GPGEX_RegFailed) (64 bit)"
1021
1022   # Note: There is no need to install the help an mo files because
1023   # they are identical to those installed by the 32 bit version.
1024 ${EndIf}
1025 SectionEnd
1026
1027 LangString T_GPGEX_RegFailed ${LANG_ENGLISH} \
1028    "Warning: Registration of the Explorer plugin failed."
1029
1030 LangString DESC_SEC_gpgex ${LANG_ENGLISH} \
1031    "GnuPG Explorer Extension"
1032
1033 !endif
1034
1035
1036 Section "-gnupglast" SEC_gnupglast
1037   SetOutPath "$INSTDIR"
1038 SectionEnd
1039
1040
1041 #
1042 # Define the uninstaller sections.
1043 #
1044 # (reverse order of the installer sections!)
1045 #
1046
1047 Section "-un.gnupglast"
1048   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
1049     nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
1050   no_uiserver:
1051   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
1052     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
1053     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
1054   no_gpgconf:
1055 SectionEnd
1056
1057 Section "-un.gpgex"
1058   UnRegDLL "$INSTDIR\bin\gpgex.dll"
1059
1060   Delete /REBOOTOK "$INSTDIR\bin\gpgex.dll"
1061
1062 ${If} ${RunningX64}
1063   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/u" "/s" "$INSTDIR\bin\gpgex6.dll"'
1064   Delete /REBOOTOK "$INSTDIR\bin\gpgex6.dll"
1065 ${EndIf}
1066 SectionEnd
1067
1068 !ifdef WITH_GUI
1069 Section "-un.gpa"
1070   Delete "$INSTDIR\bin\gpa.exe"
1071   Delete "$INSTDIR\bin\launch-gpa.exe"
1072
1073   RMDir "$INSTDIR\share\gpa"
1074 SectionEnd
1075 !endif
1076
1077 Section "-un.pinentry"
1078   Delete "$INSTDIR\bin\pinentry-basic.exe"
1079 SectionEnd
1080
1081 !ifdef WITH_GUI
1082 Section "-un.gtk+"
1083   Delete "$INSTDIR\bin\libgdk_pixbuf-2.0-0.dll"
1084   Delete "$INSTDIR\bin\libgdk-win32-2.0-0.dll"
1085   Delete "$INSTDIR\bin\libgtk-win32-2.0-0.dll"
1086
1087   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache"
1088
1089   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ani.dll"
1090   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-bmp.dll"
1091   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-emf.dll"
1092   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-gif.dll"
1093   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-ico.dll"
1094   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-jpeg.dll"
1095   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-tiff.dll"
1096   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-wmf.dll"
1097   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-icns.dll"
1098   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pcx.dll"
1099   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-png.dll"
1100   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pnm.dll"
1101   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-qtif.dll"
1102   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ras.dll"
1103   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-tga.dll"
1104   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-wbmp.dll"
1105   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xbm.dll"
1106   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xpm.dll"
1107   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
1108   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
1109   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0"
1110
1111   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libwimp.dll"
1112   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
1113   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
1114
1115   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-thai.dll"
1116   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cyrillic-translit.dll"
1117   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-multipress.dll"
1118   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-er.dll"
1119   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-am-et.dll"
1120   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cedilla.dll"
1121   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-inuktitut.dll"
1122   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-viqr.dll"
1123   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-et.dll"
1124   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ipa.dll"
1125   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ime.dll"
1126   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
1127
1128   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0"
1129   RMDir  "$INSTDIR\lib\gtk-2.0"
1130
1131   Delete "$INSTDIR\share\themes\Default\gtk-2.0-key\gtkrc"
1132   RMDir  "$INSTDIR\share\themes\Default\gtk-2.0-key"
1133   RMDir  "$INSTDIR\share\themes\Default"
1134
1135   Delete "$INSTDIR\share\themes\MS-Windows\gtk-2.0\gtkrc"
1136   RMDir  "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
1137   RMDir  "$INSTDIR\share\themes\MS-Windows"
1138
1139   RMDir  "$INSTDIR\share\themes"
1140
1141   Delete "$INSTDIR\etc\gtk-2.0\im-multipress.conf"
1142   RMDir  "$INSTDIR\etc\gtk-2.0"
1143 SectionEnd
1144
1145 Section "-un.atk"
1146   Delete "$INSTDIR\bin\libatk-1.0-0.dll"
1147 SectionEnd
1148
1149 Section "-un.pango"
1150   Delete "$INSTDIR\bin\pango-querymodules.exe"
1151   Delete "$INSTDIR\bin\libpango-1.0-0.dll"
1152   Delete "$INSTDIR\bin\libpangowin32-1.0-0.dll"
1153
1154   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-basic-win32.dll"
1155   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-arabic-lang.dll"
1156   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-indic-lang.dll"
1157   RMDir  "$INSTDIR\lib\pango\1.6.0\modules"
1158   RMDir  "$INSTDIR\lib\pango\1.6.0"
1159   RMDir  "$INSTDIR\lib\pango"
1160
1161   Delete "$INSTDIR\etc\pango\pango.modules"
1162   RMDir  "$INSTDIR\etc\pango"
1163 SectionEnd
1164
1165 Section "-un.pixman"
1166   Delete "$INSTDIR\bin\libpixman-1-0.dll"
1167 SectionEnd
1168
1169 Section "-un.cairo"
1170   Delete "$INSTDIR\bin\libcairo-gobject-2.dll"
1171   Delete "$INSTDIR\bin\libpangocairo-1.0-0.dll"
1172   Delete "$INSTDIR\bin\libcairo-2.dll"
1173   Delete "$INSTDIR\bin\libcairo-script-interpreter-2.dll"
1174 SectionEnd
1175
1176 Section "-un.libpng"
1177   Delete "$INSTDIR\bin\libpng14-14.dll"
1178 SectionEnd
1179
1180 Section "-un.glib"
1181   Delete "$INSTDIR\bin\libgio-2.0-0.dll"
1182   Delete "$INSTDIR\bin\libglib-2.0-0.dll"
1183   Delete "$INSTDIR\bin\libgmodule-2.0-0.dll"
1184   Delete "$INSTDIR\bin\libgobject-2.0-0.dll"
1185   Delete "$INSTDIR\bin\libgthread-2.0-0.dll"
1186   Delete "$INSTDIR\bin\gspawn-win32-helper.exe"
1187   Delete "$INSTDIR\bin\gspawn-win32-helper-console.exe"
1188   Delete "$INSTDIR\bin\libffi-6.dll"
1189 SectionEnd
1190 !endif
1191
1192
1193 Section "-un.gettext"
1194   Delete "$INSTDIR\bin\libintl-8.dll"
1195 SectionEnd
1196
1197 Section "-un.libiconv"
1198   Delete "$INSTDIR\bin\libiconv-2.dll"
1199 SectionEnd
1200
1201 Section "-un.gpgme"
1202   Delete "$INSTDIR\bin\libgpgme-11.dll"
1203   Delete "$INSTDIR\bin\libgpgme-glib-11.dll"
1204   Delete "$INSTDIR\bin\gpgme-w32spawn.exe"
1205   Delete "$INSTDIR\lib\libgpgme.imp"
1206   Delete "$INSTDIR\lib\libgpgme-glib.imp"
1207   Delete "$INSTDIR\include\gpgme.h"
1208 SectionEnd
1209
1210 Section "-un.ksba"
1211   Delete "$INSTDIR\bin\libksba-8.dll"
1212   Delete "$INSTDIR\lib\libksba.imp"
1213   Delete "$INSTDIR\include\ksba.h"
1214 SectionEnd
1215
1216 Section "-un.assuan"
1217   Delete "$INSTDIR\bin\libassuan-0.dll"
1218   Delete "$INSTDIR\lib\libassuan.imp"
1219   Delete "$INSTDIR\include\assuan.h"
1220 SectionEnd
1221
1222 Section "-un.gcrypt"
1223   Delete "$INSTDIR\bin\libgcrypt-20.dll"
1224   Delete "$INSTDIR\lib\libgcrypt.imp"
1225   Delete "$INSTDIR\include\gcrypt.h"
1226 SectionEnd
1227
1228 Section "-un.npth"
1229   Delete "$INSTDIR\bin\libnpth-0.dll"
1230   Delete "$INSTDIR\lib\libnpth.imp"
1231   Delete "$INSTDIR\include\npth.h"
1232 SectionEnd
1233
1234 Section "-un.zlib"
1235   Delete "$INSTDIR\bin\zlib1.dll"
1236 SectionEnd
1237
1238 Section "-un.libgpg-error"
1239   Delete "$INSTDIR\bin\libgpg-error-0.dll"
1240   Delete "$INSTDIR\lib\libgpg-error.imp"
1241   Delete "$INSTDIR\include\gpg-error.h"
1242   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\libgpg-error.mo"
1243   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1244   RMDir "$INSTDIR\share\locale\cs"
1245   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\libgpg-error.mo"
1246   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1247   RMDir "$INSTDIR\share\locale\da"
1248   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\libgpg-error.mo"
1249   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1250   RMDir "$INSTDIR\share\locale\de"
1251   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\libgpg-error.mo"
1252   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1253   RMDir "$INSTDIR\share\locale\eo"
1254   Delete "$INSTDIR\share\locale\es\LC_MESSAGES\libgpg-error.mo"
1255   RMDir "$INSTDIR\share\locale\es\LC_MESSAGES"
1256   RMDir "$INSTDIR\share\locale\es"
1257   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\libgpg-error.mo"
1258   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1259   RMDir "$INSTDIR\share\locale\fr"
1260   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\libgpg-error.mo"
1261   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1262   RMDir "$INSTDIR\share\locale\hu"
1263   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\libgpg-error.mo"
1264   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1265   RMDir "$INSTDIR\share\locale\it"
1266   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\libgpg-error.mo"
1267   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1268   RMDir "$INSTDIR\share\locale\ja"
1269   Delete "$INSTDIR\share\locale\nl\LC_MESSAGES\libgpg-error.mo"
1270   RMDir "$INSTDIR\share\locale\nl\LC_MESSAGES"
1271   RMDir "$INSTDIR\share\locale\nl"
1272   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\libgpg-error.mo"
1273   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1274   RMDir "$INSTDIR\share\locale\pl"
1275   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\libgpg-error.mo"
1276   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1277   RMDir "$INSTDIR\share\locale\pt"
1278   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\libgpg-error.mo"
1279   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1280   RMDir "$INSTDIR\share\locale\ro"
1281   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\libgpg-error.mo"
1282   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1283   RMDir "$INSTDIR\share\locale\ru"
1284   Delete "$INSTDIR\share\locale\sr\LC_MESSAGES\libgpg-error.mo"
1285   RMDir "$INSTDIR\share\locale\sr\LC_MESSAGES"
1286   RMDir "$INSTDIR\share\locale\sr"
1287   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\libgpg-error.mo"
1288   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1289   RMDir "$INSTDIR\share\locale\sv"
1290   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\libgpg-error.mo"
1291   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1292   RMDir "$INSTDIR\share\locale\uk"
1293   Delete "$INSTDIR\share\locale\vi\LC_MESSAGES\libgpg-error.mo"
1294   RMDir "$INSTDIR\share\locale\vi\LC_MESSAGES"
1295   RMDir "$INSTDIR\share\locale\vi"
1296   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo"
1297   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1298   RMDir "$INSTDIR\share\locale\zh_CN"
1299   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo"
1300   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1301   RMDir "$INSTDIR\share\locale\zh_TW"
1302   RMDir "$INSTDIR\share\locale"
1303 SectionEnd
1304
1305 Section "-un.gnupg"
1306   Delete "$INSTDIR\bin\gpg.exe"
1307   Delete "$INSTDIR\bin\gpgv.exe"
1308   Delete "$INSTDIR\bin\gpgsm.exe"
1309   Delete "$INSTDIR\bin\gpg-agent.exe"
1310   Delete "$INSTDIR\bin\scdaemon.exe"
1311   Delete "$INSTDIR\bin\dirmngr.exe"
1312   Delete "$INSTDIR\bin\gpgconf.exe"
1313   Delete "$INSTDIR\bin\gpg-connect-agent.exe"
1314   Delete "$INSTDIR\bin\gpgtar.exe"
1315   Delete "$INSTDIR\bin\gpg-preset-passphrase.exe"
1316   Delete "$INSTDIR\bin\gpg-wks-client.exe"
1317
1318   Delete "$INSTDIR\share\gnupg\sks-keyservers.netCA.pem"
1319   Delete "$INSTDIR\share\gnupg\dirmngr-conf.skel"
1320   Delete "$INSTDIR\share\gnupg\distsigkey.gpg"
1321   Delete "$INSTDIR\share\gnupg\gpg-conf.skel"
1322   RMDir  "$INSTDIR\share\gnupg"
1323
1324   Delete "$INSTDIR\share\locale\ca\LC_MESSAGES\gnupg2.mo"
1325   RMDir "$INSTDIR\share\locale\ca\LC_MESSAGES"
1326   RMDir "$INSTDIR\share\locale\ca"
1327   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\gnupg2.mo"
1328   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1329   RMDir "$INSTDIR\share\locale\cs"
1330   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\gnupg2.mo"
1331   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1332   RMDir "$INSTDIR\share\locale\da"
1333   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\gnupg2.mo"
1334   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1335   RMDir "$INSTDIR\share\locale\de"
1336   Delete "$INSTDIR\share\locale\el\LC_MESSAGES\gnupg2.mo"
1337   RMDir "$INSTDIR\share\locale\el\LC_MESSAGES"
1338   RMDir "$INSTDIR\share\locale\el"
1339   Delete "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES\gnupg2.mo"
1340   RMDir "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
1341   RMDir "$INSTDIR\share\locale\en@boldquot"
1342   Delete "$INSTDIR\share\locale\en@quot\LC_MESSAGES\gnupg2.mo"
1343   RMDir "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
1344   RMDir "$INSTDIR\share\locale\en@quot"
1345   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\gnupg2.mo"
1346   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1347   RMDir "$INSTDIR\share\locale\eo"
1348   Delete "$INSTDIR\share\locale\es\LC_MESSAGES\gnupg2.mo"
1349   RMDir "$INSTDIR\share\locale\es\LC_MESSAGES"
1350   RMDir "$INSTDIR\share\locale\es"
1351   Delete "$INSTDIR\share\locale\et\LC_MESSAGES\gnupg2.mo"
1352   RMDir "$INSTDIR\share\locale\et\LC_MESSAGES"
1353   RMDir "$INSTDIR\share\locale\et"
1354   Delete "$INSTDIR\share\locale\fi\LC_MESSAGES\gnupg2.mo"
1355   RMDir "$INSTDIR\share\locale\fi\LC_MESSAGES"
1356   RMDir "$INSTDIR\share\locale\fi"
1357   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\gnupg2.mo"
1358   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1359   RMDir "$INSTDIR\share\locale\fr"
1360   Delete "$INSTDIR\share\locale\gl\LC_MESSAGES\gnupg2.mo"
1361   RMDir "$INSTDIR\share\locale\gl\LC_MESSAGES"
1362   RMDir "$INSTDIR\share\locale\gl"
1363   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\gnupg2.mo"
1364   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1365   RMDir "$INSTDIR\share\locale\hu"
1366   Delete "$INSTDIR\share\locale\id\LC_MESSAGES\gnupg2.mo"
1367   RMDir "$INSTDIR\share\locale\id\LC_MESSAGES"
1368   RMDir "$INSTDIR\share\locale\id"
1369   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\gnupg2.mo"
1370   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1371   RMDir "$INSTDIR\share\locale\it"
1372   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\gnupg2.mo"
1373   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1374   RMDir "$INSTDIR\share\locale\ja"
1375   Delete "$INSTDIR\share\locale\nb\LC_MESSAGES\gnupg2.mo"
1376   RMDir "$INSTDIR\share\locale\nb\LC_MESSAGES"
1377   RMDir "$INSTDIR\share\locale\nb"
1378   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\gnupg2.mo"
1379   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1380   RMDir "$INSTDIR\share\locale\pl"
1381   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\gnupg2.mo"
1382   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1383   RMDir "$INSTDIR\share\locale\pt"
1384   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\gnupg2.mo"
1385   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1386   RMDir "$INSTDIR\share\locale\ro"
1387   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\gnupg2.mo"
1388   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1389   RMDir "$INSTDIR\share\locale\ru"
1390   Delete "$INSTDIR\share\locale\sk\LC_MESSAGES\gnupg2.mo"
1391   RMDir "$INSTDIR\share\locale\sk\LC_MESSAGES"
1392   RMDir "$INSTDIR\share\locale\sk"
1393   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\gnupg2.mo"
1394   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1395   RMDir "$INSTDIR\share\locale\sv"
1396   Delete "$INSTDIR\share\locale\tr\LC_MESSAGES\gnupg2.mo"
1397   RMDir "$INSTDIR\share\locale\tr\LC_MESSAGES"
1398   RMDir "$INSTDIR\share\locale\tr"
1399   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\gnupg2.mo"
1400   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1401   RMDir "$INSTDIR\share\locale\uk"
1402   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo"
1403   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1404   RMDir "$INSTDIR\share\locale\zh_CN"
1405   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\gnupg2.mo"
1406   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1407   RMDir "$INSTDIR\share\locale\zh_TW"
1408   RMDir "$INSTDIR\share\locale"
1409 SectionEnd
1410
1411 Section "-un.sqlite"
1412   Delete "$INSTDIR\bin\libsqlite3-0.dll"
1413 SectionEnd
1414
1415 Section "-un.gnupginst"
1416   # Delete standard stuff.
1417   Delete "$INSTDIR\README.txt"
1418
1419   Delete "$INSTDIR\VERSION"
1420
1421   # Remove the bin directory from the PATH
1422   Push "$INSTDIR\bin"
1423   Call un.RemoveFromPath
1424
1425   # Try to remove the top level directories.
1426   RMDir "$INSTDIR\bin"
1427   RMDir "$INSTDIR\lib"
1428   RMDir "$INSTDIR\include"
1429   RMDir "$INSTDIR\share"
1430   RMDir "$INSTDIR\etc"
1431   RMDir "$INSTDIR"
1432
1433   # Clean the registry.
1434   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Install Directory"
1435 SectionEnd
1436
1437
1438 Function .onInit
1439   ;;!define MUI_LANGDLL_ALWAYSSHOW
1440   !insertmacro MUI_LANGDLL_DISPLAY
1441
1442   Call G4wRunOnce
1443
1444   SetOutPath $TEMP
1445 #!ifdef SOURCES
1446 #  File /oname=gpgspltmp.bmp "${TOP_SRCDIR}/doc/logo/gnupg-logo-400px.bmp"
1447 #  # We play the tune only for the soruce installer
1448 #  File /oname=gpgspltmp.wav "${TOP_SRCDIR}/src/gnupg-splash.wav"
1449 #  g4wihelp::playsound $TEMP\gpgspltmp.wav
1450 #  g4wihelp::showsplash 2500 $TEMP\gpgspltmp.bmp
1451
1452 #  Delete $TEMP\gpgspltmp.bmp
1453 #  # Note that we delete gpgspltmp.wav in .onInst{Failed,Success}
1454 #!endif
1455
1456   # We can't use TOP_SRCDIR dir as the name of the file needs to be
1457   # the same while building and running the installer.  Thus we
1458   # generate the file from a template.
1459   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${W32_SRCDIR}/inst-options.ini"
1460
1461   #Call CalcDepends
1462
1463   Var /GLOBAL changed_dir
1464   # Check if the install directory was modified on the command line
1465   StrCmp "$INSTDIR" "$PROGRAMFILES\${INSTALL_DIR}" unmodified 0
1466   # It is modified. Save that value.
1467   StrCpy $changed_dir "$INSTDIR"
1468
1469   # MULITUSER_INIT overwrites directory setting from command line
1470   !insertmacro MULTIUSER_INIT
1471   StrCpy $INSTDIR "$changed_dir"
1472   goto initDone
1473 unmodified:
1474   !insertmacro MULTIUSER_INIT
1475 initDone:
1476 FunctionEnd
1477
1478 Function "un.onInit"
1479   !insertmacro MULTIUSER_UNINIT
1480 FunctionEnd
1481
1482 #Function .onInstFailed
1483 #  Delete $TEMP\gpgspltmp.wav
1484 #FunctionEnd
1485
1486 #Function .onInstSuccess
1487 #  Delete $TEMP\gpgspltmp.wav
1488 #FunctionEnd
1489
1490 #Function .onSelChange
1491 #  Call CalcDepends
1492 #FunctionEnd
1493
1494
1495 # This must be in a central place.  Urgs.
1496
1497 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1498 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gnupg} $(DESC_SEC_gnupg)
1499 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpa}   $(DESC_SEC_gpa)
1500 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpgex} $(DESC_SEC_gpgex)
1501 !insertmacro MUI_FUNCTION_DESCRIPTION_END
1502
1503
1504 # This also must be in a central place.  Also Urgs.
1505
1506 !ifdef WITH_GUI
1507 Section "-startmenu"
1508
1509   # Check if the start menu entries where requested.
1510   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1511         "Field 2" "State"
1512   IntCmp $R0 0 no_start_menu
1513
1514 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
1515     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
1516
1517     SectionGetFlags ${SEC_gpa} $R0
1518     IntOp $R0 $R0 & ${SF_SELECTED}
1519     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_menu
1520     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GPA.lnk" \
1521         "$INSTDIR\bin\launch-gpa.exe" \
1522         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1523   no_gpa_menu:
1524
1525
1526     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG Manual.lnk" \
1527                    "$INSTDIR\share\gnupg\gnupg.html" \
1528                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_manual)
1529
1530     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \
1531                    "$INSTDIR\README.txt" \
1532                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_readme)
1533
1534 !insertmacro MUI_STARTMENU_WRITE_END
1535
1536
1537
1538 no_start_menu:
1539
1540
1541   # Check if the desktop entries where requested.
1542   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1543         "Field 3" "State"
1544   IntCmp $R0 0 no_desktop
1545
1546     SectionGetFlags ${SEC_gpa} $R0
1547     IntOp $R0 $R0 & ${SF_SELECTED}
1548     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_desktop
1549     CreateShortCut "$DESKTOP\GPA.lnk" \
1550         "$INSTDIR\bin\launch-gpa.exe" \
1551         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1552   no_gpa_desktop:
1553
1554
1555     CreateShortCut "$DESKTOP\GPA Manual.lnk" \
1556                    "$INSTDIR\share\gpa\gpa.html" \
1557                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa_manual)
1558
1559 no_desktop:
1560
1561
1562   # Check if the quick launch bar entries where requested.
1563   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1564         "Field 4" "State"
1565   IntCmp $R0 0 no_quick_launch
1566   StrCmp $QUICKLAUNCH $TEMP no_quick_launch
1567
1568     SectionGetFlags ${SEC_gpa} $R0
1569     IntOp $R0 $R0 & ${SF_SELECTED}
1570     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_quicklaunch
1571     CreateShortCut "$QUICKLAUNCH\GPA.lnk" \
1572         "$INSTDIR\bin\launch-gpa.exe" \
1573         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1574 no_gpa_quicklaunch:
1575
1576
1577 no_quick_launch:
1578
1579
1580 SectionEnd
1581 !endif
1582
1583
1584 #
1585 # Now for the generic parts to end the installation.
1586 #
1587 Var MYTMP
1588
1589 # Last section is a hidden one.
1590 Section
1591   WriteUninstaller "$INSTDIR\gnupg-uninstall.exe"
1592
1593   # Windows Add/Remove Programs support
1594   StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1595   WriteRegExpandStr SHCTX $MYTMP "UninstallString" '"$INSTDIR\gnupg-uninstall.exe"'
1596   WriteRegExpandStr SHCTX $MYTMP "InstallLocation" "$INSTDIR"
1597   WriteRegStr       SHCTX $MYTMP "DisplayName"     "${PRETTY_PACKAGE}"
1598 !ifdef WITH_GUI
1599   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpa.exe,0"
1600 !else
1601   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpg.exe,0"
1602 !endif
1603   WriteRegStr       SHCTX $MYTMP "DisplayVersion"  "${VERSION}"
1604   WriteRegStr       SHCTX $MYTMP "Publisher"       "The GnuPG Project"
1605   WriteRegStr       SHCTX $MYTMP "URLInfoAbout"    "https://gnupg.org"
1606   WriteRegDWORD     SHCTX $MYTMP "NoModify"        "1"
1607   WriteRegDWORD     SHCTX $MYTMP "NoRepair"        "1"
1608 SectionEnd
1609
1610 Section Uninstall
1611 !ifdef WITH_GUI
1612   #---------------------------------------------------
1613   # Delete the menu entries and any empty parent menus
1614   #---------------------------------------------------
1615   !insertmacro MUI_STARTMENU_GETFOLDER Application $MYTMP
1616   Delete "$SMPROGRAMS\$MYTMP\GPA.lnk"
1617   Delete "$SMPROGRAMS\$MYTMP\GnuPG Manual.lnk"
1618   Delete "$SMPROGRAMS\$MYTMP\GnuPG README.lnk"
1619   Delete "$SMPROGRAMS\$MYTMP\*.lnk"
1620   StrCpy $MYTMP "$SMPROGRAMS\$MYTMP"
1621   startMenuDeleteLoop:
1622     ClearErrors
1623     RMDir $MYTMP
1624     GetFullPathName $MYTMP "$MYTMP\.."
1625     IfErrors startMenuDeleteLoopDone
1626     StrCmp $MYTMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
1627   startMenuDeleteLoopDone:
1628
1629   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Start Menu Folder"
1630
1631   # Delete Desktop links.
1632   Delete "$DESKTOP\GPA.lnk"
1633   Delete "$DESKTOP\GnuPG Manual.lnk"
1634   Delete "$DESKTOP\GnuPG README.lnk"
1635
1636   # Delete Quick Launch Bar links.
1637   StrCmp $QUICKLAUNCH $TEMP no_quick_launch_uninstall
1638   Delete "$QUICKLAUNCH\GPA.lnk"
1639 no_quick_launch_uninstall:
1640
1641 !endif
1642
1643   Delete "$INSTDIR\gnupg-uninstall.exe"
1644   RMDir "$INSTDIR"
1645
1646   # Clean the registry.
1647   DeleteRegValue SHCTX "Software\GnuPG" "Install Directory"
1648   DeleteRegKey /ifempty SHCTX "Software\GnuPG"
1649   # Remove Windows Add/Remove Programs support.
1650   DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1651 SectionEnd