speedo,w32: Install dirmmngr_ldap.exe.
[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/dirmngr_ldap.exe"
629   File "libexec/gpg-preset-passphrase.exe"
630   File "libexec/gpg-wks-client.exe"
631
632   ClearErrors
633   SetOverwrite try
634   File "bin/gpg-agent.exe"
635   SetOverwrite lastused
636   ifErrors 0 +3
637       File /oname=gpg-agent.exe.tmp "bin/gpg-agent.exe"
638       Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe
639
640   ClearErrors
641   SetOverwrite try
642   File "bin/dirmngr.exe"
643   SetOverwrite lastused
644   ifErrors 0 +3
645       File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
646       Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
647
648   ClearErrors
649   SetOverwrite try
650   File "libexec/scdaemon.exe"
651   SetOverwrite lastused
652   ifErrors 0 +3
653       File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
654       Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
655
656   SetOutPath "$INSTDIR\share\gnupg"
657   File "share/gnupg/distsigkey.gpg"
658   File "share/gnupg/sks-keyservers.netCA.pem"
659
660   SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES"
661   File share/locale/ca/LC_MESSAGES/gnupg2.mo
662   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
663   File share/locale/cs/LC_MESSAGES/gnupg2.mo
664   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
665   File share/locale/da/LC_MESSAGES/gnupg2.mo
666   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
667   File share/locale/de/LC_MESSAGES/gnupg2.mo
668   SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES"
669   File share/locale/el/LC_MESSAGES/gnupg2.mo
670   SetOutPath "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
671   File share/locale/en@boldquot/LC_MESSAGES/gnupg2.mo
672   SetOutPath "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
673   File share/locale/en@quot/LC_MESSAGES/gnupg2.mo
674   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
675   File share/locale/eo/LC_MESSAGES/gnupg2.mo
676   SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
677   File share/locale/es/LC_MESSAGES/gnupg2.mo
678   SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES"
679   File share/locale/et/LC_MESSAGES/gnupg2.mo
680   SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES"
681   File share/locale/fi/LC_MESSAGES/gnupg2.mo
682   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
683   File share/locale/fr/LC_MESSAGES/gnupg2.mo
684   SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES"
685   File share/locale/gl/LC_MESSAGES/gnupg2.mo
686   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
687   File share/locale/hu/LC_MESSAGES/gnupg2.mo
688   SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES"
689   File share/locale/id/LC_MESSAGES/gnupg2.mo
690   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
691   File share/locale/it/LC_MESSAGES/gnupg2.mo
692   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
693   File share/locale/ja/LC_MESSAGES/gnupg2.mo
694   SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES"
695   File share/locale/nb/LC_MESSAGES/gnupg2.mo
696   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
697   File share/locale/pl/LC_MESSAGES/gnupg2.mo
698   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
699   File share/locale/pt/LC_MESSAGES/gnupg2.mo
700   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
701   File share/locale/ro/LC_MESSAGES/gnupg2.mo
702   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
703   File share/locale/ru/LC_MESSAGES/gnupg2.mo
704   SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES"
705   File share/locale/sk/LC_MESSAGES/gnupg2.mo
706   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
707   File share/locale/sv/LC_MESSAGES/gnupg2.mo
708   SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES"
709   File share/locale/tr/LC_MESSAGES/gnupg2.mo
710   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
711   File share/locale/uk/LC_MESSAGES/gnupg2.mo
712   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
713   File share/locale/zh_CN/LC_MESSAGES/gnupg2.mo
714   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
715   File share/locale/zh_TW/LC_MESSAGES/gnupg2.mo
716 SectionEnd
717
718
719 LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
720    "The GnuPG Core is the actual encrypt core and a set of command \
721     line utilities."
722 LangString DESC_SEC_gnupg ${LANG_GERMAN} \
723    "Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \
724     dieser Software.  Der GnuPG Core stellt die eigentliche \
725     Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
726
727 LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \
728    "Show the manual for the GnuPG Core"
729 LangString DESC_Menu_gnupg_manual ${LANG_GERMAN} \
730    "Das Handbuch zum GnuPG Kern anzeigen"
731
732 Section "-libgpg-error" SEC_libgpg_error
733   SetOutPath "$INSTDIR\bin"
734   File bin/libgpg-error-0.dll
735   SetOutPath "$INSTDIR\lib"
736   File /oname=libgpg-error.imp lib/libgpg-error.dll.a
737   SetOutPath "$INSTDIR\include"
738   File include/gpg-error.h
739   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
740   File share/locale/cs/LC_MESSAGES/libgpg-error.mo
741   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
742   File share/locale/da/LC_MESSAGES/libgpg-error.mo
743   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
744   File share/locale/de/LC_MESSAGES/libgpg-error.mo
745   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
746   File share/locale/eo/LC_MESSAGES/libgpg-error.mo
747   SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
748   File share/locale/es/LC_MESSAGES/libgpg-error.mo
749   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
750   File share/locale/fr/LC_MESSAGES/libgpg-error.mo
751   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
752   File share/locale/hu/LC_MESSAGES/libgpg-error.mo
753   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
754   File share/locale/it/LC_MESSAGES/libgpg-error.mo
755   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
756   File share/locale/ja/LC_MESSAGES/libgpg-error.mo
757   SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES"
758   File share/locale/nl/LC_MESSAGES/libgpg-error.mo
759   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
760   File share/locale/pl/LC_MESSAGES/libgpg-error.mo
761   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
762   File share/locale/pt/LC_MESSAGES/libgpg-error.mo
763   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
764   File share/locale/ro/LC_MESSAGES/libgpg-error.mo
765   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
766   File share/locale/ru/LC_MESSAGES/libgpg-error.mo
767   SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES"
768   File share/locale/sr/LC_MESSAGES/libgpg-error.mo
769   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
770   File share/locale/sv/LC_MESSAGES/libgpg-error.mo
771   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
772   File share/locale/uk/LC_MESSAGES/libgpg-error.mo
773   SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES"
774   File share/locale/vi/LC_MESSAGES/libgpg-error.mo
775   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
776   File share/locale/zh_CN/LC_MESSAGES/libgpg-error.mo
777   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
778   File share/locale/zh_TW/LC_MESSAGES/libgpg-error.mo
779 SectionEnd
780
781 Section "-zlib" SEC_zlib
782   SetOutPath "$INSTDIR\bin"
783   File bin/zlib1.dll
784 SectionEnd
785
786 Section "-npth" SEC_npth
787   SetOutPath "$INSTDIR\bin"
788   File bin/libnpth-0.dll
789   SetOutPath "$INSTDIR\lib"
790   File /oname=libnpth.imp lib/libnpth.dll.a
791   SetOutPath "$INSTDIR\include"
792   File include/npth.h
793 SectionEnd
794
795 Section "-gcrypt" SEC_gcrypt
796   SetOutPath "$INSTDIR\bin"
797   File bin/libgcrypt-20.dll
798   SetOutPath "$INSTDIR\lib"
799   File /oname=libgcrypt.imp lib/libgcrypt.dll.a
800   SetOutPath "$INSTDIR\include"
801   File include/gcrypt.h
802 SectionEnd
803
804 Section "-assuan" SEC_assuan
805   SetOutPath "$INSTDIR\bin"
806   File bin/libassuan-0.dll
807   SetOutPath "$INSTDIR\lib"
808   File /oname=libassuan.imp lib/libassuan.dll.a
809   SetOutPath "$INSTDIR\include"
810   File include/assuan.h
811 SectionEnd
812
813 Section "-ksba" SEC_ksba
814   SetOutPath "$INSTDIR\bin"
815   File bin/libksba-8.dll
816   SetOutPath "$INSTDIR\lib"
817   File /oname=libksba.imp lib/libksba.dll.a
818   SetOutPath "$INSTDIR\include"
819   File include/ksba.h
820 SectionEnd
821
822 Section "-gpgme" SEC_gpgme
823   SetOutPath "$INSTDIR\bin"
824   File bin/libgpgme-11.dll
825   File /nonfatal bin/libgpgme-glib-11.dll
826   File libexec/gpgme-w32spawn.exe
827   SetOutPath "$INSTDIR\lib"
828   File /oname=libgpgme.imp      lib/libgpgme.dll.a
829   File /nonfatal /oname=libgpgme-glib.imp lib/libgpgme-glib.dll.a
830   SetOutPath "$INSTDIR\include"
831   File include/gpgme.h
832 SectionEnd
833
834 Section "-sqlite" SEC_sqlite
835   SetOutPath "$INSTDIR\bin"
836   File bin/libsqlite3-0.dll
837 SectionEnd
838
839 !ifdef WITH_GUI
840 Section "-libiconv" SEC_libiconv
841   SetOutPath "$INSTDIR\bin"
842   File bin/libiconv-2.dll
843 SectionEnd
844
845 Section "-gettext" SEC_gettext
846   SetOutPath "$INSTDIR\bin"
847   File bin/libintl-8.dll
848 SectionEnd
849
850 Section "-glib" SEC_glib
851   SetOutPath "$INSTDIR\bin"
852   File bin/libgio-2.0-0.dll
853   File bin/libglib-2.0-0.dll
854   File bin/libgmodule-2.0-0.dll
855   File bin/libgobject-2.0-0.dll
856   File bin/libgthread-2.0-0.dll
857   File bin/gspawn-win32-helper.exe
858   File bin/gspawn-win32-helper-console.exe
859
860   File bin/libffi-6.dll
861 SectionEnd
862
863 Section "-libpng" SEC_libpng
864   SetOutPath "$INSTDIR\bin"
865   File bin/libpng14-14.dll
866 SectionEnd
867
868 #Section "-jpeg" SEC_jpeg
869 #  SetOutPath "$INSTDIR"
870 #  File bin/jpeg62.dll
871 #SectionEnd
872
873 Section "-cairo" SEC_cairo
874   SetOutPath "$INSTDIR\bin"
875   File bin/libcairo-gobject-2.dll
876   File bin/libpangocairo-1.0-0.dll
877   File bin/libcairo-2.dll
878   File bin/libcairo-script-interpreter-2.dll
879 SectionEnd
880
881 Section "-pixman" SEC_pixman
882   SetOutPath "$INSTDIR\bin"
883   File bin/libpixman-1-0.dll
884 SectionEnd
885
886 Section "-pango" SEC_pango
887   SetOutPath "$INSTDIR\bin"
888   File bin/pango-querymodules.exe
889   File bin/libpango-1.0-0.dll
890   File bin/libpangowin32-1.0-0.dll
891
892   SetOutPath "$INSTDIR\lib\pango\1.6.0\modules"
893   File lib/pango/1.6.0/modules/pango-basic-win32.dll
894   File lib/pango/1.6.0/modules/pango-arabic-lang.dll
895   File lib/pango/1.6.0/modules/pango-indic-lang.dll
896
897   SetOutPath "$INSTDIR\etc\pango"
898   File ${W32_SRCDIR}/pango.modules
899 SectionEnd
900
901 Section "-atk" SEC_atk
902   SetOutPath "$INSTDIR\bin"
903   File bin/libatk-1.0-0.dll
904 SectionEnd
905
906 Section "-gtk+" SEC_gtk_
907   SetOutPath "$INSTDIR\bin"
908   File bin/libgdk_pixbuf-2.0-0.dll
909   File bin/libgdk-win32-2.0-0.dll
910   File bin/libgtk-win32-2.0-0.dll
911
912   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
913   File /oname=loaders.cache ${W32_SRCDIR}/gdk-pixbuf-loaders.cache
914   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
915   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.dll
916   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-bmp.dll
917   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-emf.dll
918   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-gif.dll
919   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-ico.dll
920   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-jpeg.dll
921   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-tiff.dll
922   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-wmf.dll
923   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.dll
924   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.dll
925   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll
926   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.dll
927   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.dll
928   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.dll
929   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.dll
930   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.dll
931   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.dll
932   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.dll
933
934   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
935   File lib/gtk-2.0/2.10.0/engines/libwimp.dll
936   File lib/gtk-2.0/2.10.0/engines/libpixmap.dll
937
938   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
939   File lib/gtk-2.0/2.10.0/immodules/im-thai.dll
940   File lib/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.dll
941   File lib/gtk-2.0/2.10.0/immodules/im-multipress.dll
942   File lib/gtk-2.0/2.10.0/immodules/im-ti-er.dll
943   File lib/gtk-2.0/2.10.0/immodules/im-am-et.dll
944   File lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll
945   File lib/gtk-2.0/2.10.0/immodules/im-inuktitut.dll
946   File lib/gtk-2.0/2.10.0/immodules/im-viqr.dll
947   File lib/gtk-2.0/2.10.0/immodules/im-ti-et.dll
948   File lib/gtk-2.0/2.10.0/immodules/im-ipa.dll
949   File lib/gtk-2.0/2.10.0/immodules/im-ime.dll
950
951   SetOutPath "$INSTDIR\share\themes\Default\gtk-2.0-key"
952   File share/themes/Default/gtk-2.0-key/gtkrc
953
954   SetOutPath "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
955   File share/themes/MS-Windows/gtk-2.0/gtkrc
956
957   SetOutPath "$INSTDIR\etc\gtk-2.0"
958   File etc/gtk-2.0/im-multipress.conf
959 SectionEnd
960 !endif
961
962 Section "-pinentry" SEC_pinentry
963   SetOutPath "$INSTDIR\bin"
964   File /oname=pinentry-basic.exe "bin/pinentry-w32.exe"
965 SectionEnd
966
967 !ifdef WITH_GUI
968 Section "gpa" SEC_gpa
969   SectionIn RO
970   SetOutPath "$INSTDIR\bin"
971   File bin/gpa.exe
972   File bin/launch-gpa.exe
973 SectionEnd
974
975 LangString DESC_SEC_gpa ${LANG_ENGLISH} \
976    "The GnuPG Assistant is the graphical interface of GnuPG"
977 LangString DESC_SEC_gpa ${LANG_GERMAN} \
978    "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
979
980 LangString DESC_Menu_gpa ${LANG_ENGLISH} \
981    "Run the GnuGP Assistant."
982 LangString DESC_Menu_gpa ${LANG_GERMAN} \
983    "Den GnuPG Assistenten starten."
984
985 Section "gpgex" SEC_gpgex
986   SetOutPath "$INSTDIR\bin"
987
988   ClearErrors
989   SetOverwrite try
990   File bin/gpgex.dll
991   SetOverwrite lastused
992   ifErrors 0 do_reg
993       File /oname=gpgex.dll.tmp bin/gpgex.dll
994       Rename /REBOOTOK gpgex.dll.tmp gpgex.dll
995
996  do_reg:
997   ClearErrors
998   RegDLL "$INSTDIR\bin\gpgex.dll"
999   ifErrors 0 +2
1000      MessageBox MB_OK "$(T_GPGEX_RegFailed)"
1001
1002 ${If} ${RunningX64}
1003   # Install the 64 bit version of the plugin.
1004   # Note that we install this in addition to the 32 bit version so that
1005   # the 32 bit version can be used by file dialogs of 32 bit programs.
1006   ClearErrors
1007   SetOverwrite try
1008   File /oname=gpgex6.dll "${INST6_DIR}/bin/gpgex.dll"
1009   SetOverwrite lastused
1010   ifErrors 0 do_reg64
1011       File /oname=gpgex6.dll.tmp "${INST6_DIR}/bin/gpgex.dll"
1012       Rename /REBOOTOK gpgex6.dll.tmp gpgex6.dll
1013
1014  do_reg64:
1015   # Register the DLL. We need to register both versions.  However
1016   # RegDLL can't be used for 64 bit and InstallLib seems to be a
1017   # registry hack.
1018   ClearErrors
1019   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/s" "$INSTDIR\bin\gpgex6.dll"'
1020   ifErrors 0 +2
1021      MessageBox MB_OK "$(T_GPGEX_RegFailed) (64 bit)"
1022
1023   # Note: There is no need to install the help an mo files because
1024   # they are identical to those installed by the 32 bit version.
1025 ${EndIf}
1026 SectionEnd
1027
1028 LangString T_GPGEX_RegFailed ${LANG_ENGLISH} \
1029    "Warning: Registration of the Explorer plugin failed."
1030
1031 LangString DESC_SEC_gpgex ${LANG_ENGLISH} \
1032    "GnuPG Explorer Extension"
1033
1034 !endif
1035
1036
1037 Section "-gnupglast" SEC_gnupglast
1038   SetOutPath "$INSTDIR"
1039 SectionEnd
1040
1041
1042 #
1043 # Define the uninstaller sections.
1044 #
1045 # (reverse order of the installer sections!)
1046 #
1047
1048 Section "-un.gnupglast"
1049   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
1050     nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
1051   no_uiserver:
1052   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
1053     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
1054     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
1055   no_gpgconf:
1056 SectionEnd
1057
1058 Section "-un.gpgex"
1059   UnRegDLL "$INSTDIR\bin\gpgex.dll"
1060
1061   Delete /REBOOTOK "$INSTDIR\bin\gpgex.dll"
1062
1063 ${If} ${RunningX64}
1064   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/u" "/s" "$INSTDIR\bin\gpgex6.dll"'
1065   Delete /REBOOTOK "$INSTDIR\bin\gpgex6.dll"
1066 ${EndIf}
1067 SectionEnd
1068
1069 !ifdef WITH_GUI
1070 Section "-un.gpa"
1071   Delete "$INSTDIR\bin\gpa.exe"
1072   Delete "$INSTDIR\bin\launch-gpa.exe"
1073
1074   RMDir "$INSTDIR\share\gpa"
1075 SectionEnd
1076 !endif
1077
1078 Section "-un.pinentry"
1079   Delete "$INSTDIR\bin\pinentry-basic.exe"
1080 SectionEnd
1081
1082 !ifdef WITH_GUI
1083 Section "-un.gtk+"
1084   Delete "$INSTDIR\bin\libgdk_pixbuf-2.0-0.dll"
1085   Delete "$INSTDIR\bin\libgdk-win32-2.0-0.dll"
1086   Delete "$INSTDIR\bin\libgtk-win32-2.0-0.dll"
1087
1088   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache"
1089
1090   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ani.dll"
1091   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-bmp.dll"
1092   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-emf.dll"
1093   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-gif.dll"
1094   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-ico.dll"
1095   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-jpeg.dll"
1096   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-tiff.dll"
1097   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-wmf.dll"
1098   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-icns.dll"
1099   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pcx.dll"
1100   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-png.dll"
1101   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pnm.dll"
1102   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-qtif.dll"
1103   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ras.dll"
1104   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-tga.dll"
1105   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-wbmp.dll"
1106   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xbm.dll"
1107   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xpm.dll"
1108   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
1109   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
1110   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0"
1111
1112   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libwimp.dll"
1113   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
1114   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
1115
1116   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-thai.dll"
1117   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cyrillic-translit.dll"
1118   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-multipress.dll"
1119   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-er.dll"
1120   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-am-et.dll"
1121   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cedilla.dll"
1122   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-inuktitut.dll"
1123   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-viqr.dll"
1124   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-et.dll"
1125   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ipa.dll"
1126   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ime.dll"
1127   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
1128
1129   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0"
1130   RMDir  "$INSTDIR\lib\gtk-2.0"
1131
1132   Delete "$INSTDIR\share\themes\Default\gtk-2.0-key\gtkrc"
1133   RMDir  "$INSTDIR\share\themes\Default\gtk-2.0-key"
1134   RMDir  "$INSTDIR\share\themes\Default"
1135
1136   Delete "$INSTDIR\share\themes\MS-Windows\gtk-2.0\gtkrc"
1137   RMDir  "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
1138   RMDir  "$INSTDIR\share\themes\MS-Windows"
1139
1140   RMDir  "$INSTDIR\share\themes"
1141
1142   Delete "$INSTDIR\etc\gtk-2.0\im-multipress.conf"
1143   RMDir  "$INSTDIR\etc\gtk-2.0"
1144 SectionEnd
1145
1146 Section "-un.atk"
1147   Delete "$INSTDIR\bin\libatk-1.0-0.dll"
1148 SectionEnd
1149
1150 Section "-un.pango"
1151   Delete "$INSTDIR\bin\pango-querymodules.exe"
1152   Delete "$INSTDIR\bin\libpango-1.0-0.dll"
1153   Delete "$INSTDIR\bin\libpangowin32-1.0-0.dll"
1154
1155   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-basic-win32.dll"
1156   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-arabic-lang.dll"
1157   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-indic-lang.dll"
1158   RMDir  "$INSTDIR\lib\pango\1.6.0\modules"
1159   RMDir  "$INSTDIR\lib\pango\1.6.0"
1160   RMDir  "$INSTDIR\lib\pango"
1161
1162   Delete "$INSTDIR\etc\pango\pango.modules"
1163   RMDir  "$INSTDIR\etc\pango"
1164 SectionEnd
1165
1166 Section "-un.pixman"
1167   Delete "$INSTDIR\bin\libpixman-1-0.dll"
1168 SectionEnd
1169
1170 Section "-un.cairo"
1171   Delete "$INSTDIR\bin\libcairo-gobject-2.dll"
1172   Delete "$INSTDIR\bin\libpangocairo-1.0-0.dll"
1173   Delete "$INSTDIR\bin\libcairo-2.dll"
1174   Delete "$INSTDIR\bin\libcairo-script-interpreter-2.dll"
1175 SectionEnd
1176
1177 Section "-un.libpng"
1178   Delete "$INSTDIR\bin\libpng14-14.dll"
1179 SectionEnd
1180
1181 Section "-un.glib"
1182   Delete "$INSTDIR\bin\libgio-2.0-0.dll"
1183   Delete "$INSTDIR\bin\libglib-2.0-0.dll"
1184   Delete "$INSTDIR\bin\libgmodule-2.0-0.dll"
1185   Delete "$INSTDIR\bin\libgobject-2.0-0.dll"
1186   Delete "$INSTDIR\bin\libgthread-2.0-0.dll"
1187   Delete "$INSTDIR\bin\gspawn-win32-helper.exe"
1188   Delete "$INSTDIR\bin\gspawn-win32-helper-console.exe"
1189   Delete "$INSTDIR\bin\libffi-6.dll"
1190 SectionEnd
1191 !endif
1192
1193
1194 Section "-un.gettext"
1195   Delete "$INSTDIR\bin\libintl-8.dll"
1196 SectionEnd
1197
1198 Section "-un.libiconv"
1199   Delete "$INSTDIR\bin\libiconv-2.dll"
1200 SectionEnd
1201
1202 Section "-un.gpgme"
1203   Delete "$INSTDIR\bin\libgpgme-11.dll"
1204   Delete "$INSTDIR\bin\libgpgme-glib-11.dll"
1205   Delete "$INSTDIR\bin\gpgme-w32spawn.exe"
1206   Delete "$INSTDIR\lib\libgpgme.imp"
1207   Delete "$INSTDIR\lib\libgpgme-glib.imp"
1208   Delete "$INSTDIR\include\gpgme.h"
1209 SectionEnd
1210
1211 Section "-un.ksba"
1212   Delete "$INSTDIR\bin\libksba-8.dll"
1213   Delete "$INSTDIR\lib\libksba.imp"
1214   Delete "$INSTDIR\include\ksba.h"
1215 SectionEnd
1216
1217 Section "-un.assuan"
1218   Delete "$INSTDIR\bin\libassuan-0.dll"
1219   Delete "$INSTDIR\lib\libassuan.imp"
1220   Delete "$INSTDIR\include\assuan.h"
1221 SectionEnd
1222
1223 Section "-un.gcrypt"
1224   Delete "$INSTDIR\bin\libgcrypt-20.dll"
1225   Delete "$INSTDIR\lib\libgcrypt.imp"
1226   Delete "$INSTDIR\include\gcrypt.h"
1227 SectionEnd
1228
1229 Section "-un.npth"
1230   Delete "$INSTDIR\bin\libnpth-0.dll"
1231   Delete "$INSTDIR\lib\libnpth.imp"
1232   Delete "$INSTDIR\include\npth.h"
1233 SectionEnd
1234
1235 Section "-un.zlib"
1236   Delete "$INSTDIR\bin\zlib1.dll"
1237 SectionEnd
1238
1239 Section "-un.libgpg-error"
1240   Delete "$INSTDIR\bin\libgpg-error-0.dll"
1241   Delete "$INSTDIR\lib\libgpg-error.imp"
1242   Delete "$INSTDIR\include\gpg-error.h"
1243   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\libgpg-error.mo"
1244   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1245   RMDir "$INSTDIR\share\locale\cs"
1246   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\libgpg-error.mo"
1247   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1248   RMDir "$INSTDIR\share\locale\da"
1249   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\libgpg-error.mo"
1250   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1251   RMDir "$INSTDIR\share\locale\de"
1252   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\libgpg-error.mo"
1253   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1254   RMDir "$INSTDIR\share\locale\eo"
1255   Delete "$INSTDIR\share\locale\es\LC_MESSAGES\libgpg-error.mo"
1256   RMDir "$INSTDIR\share\locale\es\LC_MESSAGES"
1257   RMDir "$INSTDIR\share\locale\es"
1258   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\libgpg-error.mo"
1259   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1260   RMDir "$INSTDIR\share\locale\fr"
1261   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\libgpg-error.mo"
1262   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1263   RMDir "$INSTDIR\share\locale\hu"
1264   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\libgpg-error.mo"
1265   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1266   RMDir "$INSTDIR\share\locale\it"
1267   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\libgpg-error.mo"
1268   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1269   RMDir "$INSTDIR\share\locale\ja"
1270   Delete "$INSTDIR\share\locale\nl\LC_MESSAGES\libgpg-error.mo"
1271   RMDir "$INSTDIR\share\locale\nl\LC_MESSAGES"
1272   RMDir "$INSTDIR\share\locale\nl"
1273   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\libgpg-error.mo"
1274   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1275   RMDir "$INSTDIR\share\locale\pl"
1276   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\libgpg-error.mo"
1277   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1278   RMDir "$INSTDIR\share\locale\pt"
1279   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\libgpg-error.mo"
1280   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1281   RMDir "$INSTDIR\share\locale\ro"
1282   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\libgpg-error.mo"
1283   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1284   RMDir "$INSTDIR\share\locale\ru"
1285   Delete "$INSTDIR\share\locale\sr\LC_MESSAGES\libgpg-error.mo"
1286   RMDir "$INSTDIR\share\locale\sr\LC_MESSAGES"
1287   RMDir "$INSTDIR\share\locale\sr"
1288   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\libgpg-error.mo"
1289   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1290   RMDir "$INSTDIR\share\locale\sv"
1291   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\libgpg-error.mo"
1292   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1293   RMDir "$INSTDIR\share\locale\uk"
1294   Delete "$INSTDIR\share\locale\vi\LC_MESSAGES\libgpg-error.mo"
1295   RMDir "$INSTDIR\share\locale\vi\LC_MESSAGES"
1296   RMDir "$INSTDIR\share\locale\vi"
1297   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo"
1298   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1299   RMDir "$INSTDIR\share\locale\zh_CN"
1300   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo"
1301   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1302   RMDir "$INSTDIR\share\locale\zh_TW"
1303   RMDir "$INSTDIR\share\locale"
1304 SectionEnd
1305
1306 Section "-un.gnupg"
1307   Delete "$INSTDIR\bin\gpg.exe"
1308   Delete "$INSTDIR\bin\gpgv.exe"
1309   Delete "$INSTDIR\bin\gpgsm.exe"
1310   Delete "$INSTDIR\bin\gpg-agent.exe"
1311   Delete "$INSTDIR\bin\scdaemon.exe"
1312   Delete "$INSTDIR\bin\dirmngr.exe"
1313   Delete "$INSTDIR\bin\gpgconf.exe"
1314   Delete "$INSTDIR\bin\gpg-connect-agent.exe"
1315   Delete "$INSTDIR\bin\gpgtar.exe"
1316   Delete "$INSTDIR\bin\dirmngr_ldap.exe"
1317   Delete "$INSTDIR\bin\gpg-preset-passphrase.exe"
1318   Delete "$INSTDIR\bin\gpg-wks-client.exe"
1319
1320   Delete "$INSTDIR\share\gnupg\sks-keyservers.netCA.pem"
1321   Delete "$INSTDIR\share\gnupg\dirmngr-conf.skel"
1322   Delete "$INSTDIR\share\gnupg\distsigkey.gpg"
1323   Delete "$INSTDIR\share\gnupg\gpg-conf.skel"
1324   RMDir  "$INSTDIR\share\gnupg"
1325
1326   Delete "$INSTDIR\share\locale\ca\LC_MESSAGES\gnupg2.mo"
1327   RMDir "$INSTDIR\share\locale\ca\LC_MESSAGES"
1328   RMDir "$INSTDIR\share\locale\ca"
1329   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\gnupg2.mo"
1330   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1331   RMDir "$INSTDIR\share\locale\cs"
1332   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\gnupg2.mo"
1333   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1334   RMDir "$INSTDIR\share\locale\da"
1335   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\gnupg2.mo"
1336   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1337   RMDir "$INSTDIR\share\locale\de"
1338   Delete "$INSTDIR\share\locale\el\LC_MESSAGES\gnupg2.mo"
1339   RMDir "$INSTDIR\share\locale\el\LC_MESSAGES"
1340   RMDir "$INSTDIR\share\locale\el"
1341   Delete "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES\gnupg2.mo"
1342   RMDir "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
1343   RMDir "$INSTDIR\share\locale\en@boldquot"
1344   Delete "$INSTDIR\share\locale\en@quot\LC_MESSAGES\gnupg2.mo"
1345   RMDir "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
1346   RMDir "$INSTDIR\share\locale\en@quot"
1347   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\gnupg2.mo"
1348   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1349   RMDir "$INSTDIR\share\locale\eo"
1350   Delete "$INSTDIR\share\locale\es\LC_MESSAGES\gnupg2.mo"
1351   RMDir "$INSTDIR\share\locale\es\LC_MESSAGES"
1352   RMDir "$INSTDIR\share\locale\es"
1353   Delete "$INSTDIR\share\locale\et\LC_MESSAGES\gnupg2.mo"
1354   RMDir "$INSTDIR\share\locale\et\LC_MESSAGES"
1355   RMDir "$INSTDIR\share\locale\et"
1356   Delete "$INSTDIR\share\locale\fi\LC_MESSAGES\gnupg2.mo"
1357   RMDir "$INSTDIR\share\locale\fi\LC_MESSAGES"
1358   RMDir "$INSTDIR\share\locale\fi"
1359   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\gnupg2.mo"
1360   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1361   RMDir "$INSTDIR\share\locale\fr"
1362   Delete "$INSTDIR\share\locale\gl\LC_MESSAGES\gnupg2.mo"
1363   RMDir "$INSTDIR\share\locale\gl\LC_MESSAGES"
1364   RMDir "$INSTDIR\share\locale\gl"
1365   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\gnupg2.mo"
1366   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1367   RMDir "$INSTDIR\share\locale\hu"
1368   Delete "$INSTDIR\share\locale\id\LC_MESSAGES\gnupg2.mo"
1369   RMDir "$INSTDIR\share\locale\id\LC_MESSAGES"
1370   RMDir "$INSTDIR\share\locale\id"
1371   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\gnupg2.mo"
1372   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1373   RMDir "$INSTDIR\share\locale\it"
1374   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\gnupg2.mo"
1375   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1376   RMDir "$INSTDIR\share\locale\ja"
1377   Delete "$INSTDIR\share\locale\nb\LC_MESSAGES\gnupg2.mo"
1378   RMDir "$INSTDIR\share\locale\nb\LC_MESSAGES"
1379   RMDir "$INSTDIR\share\locale\nb"
1380   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\gnupg2.mo"
1381   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1382   RMDir "$INSTDIR\share\locale\pl"
1383   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\gnupg2.mo"
1384   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1385   RMDir "$INSTDIR\share\locale\pt"
1386   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\gnupg2.mo"
1387   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1388   RMDir "$INSTDIR\share\locale\ro"
1389   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\gnupg2.mo"
1390   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1391   RMDir "$INSTDIR\share\locale\ru"
1392   Delete "$INSTDIR\share\locale\sk\LC_MESSAGES\gnupg2.mo"
1393   RMDir "$INSTDIR\share\locale\sk\LC_MESSAGES"
1394   RMDir "$INSTDIR\share\locale\sk"
1395   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\gnupg2.mo"
1396   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1397   RMDir "$INSTDIR\share\locale\sv"
1398   Delete "$INSTDIR\share\locale\tr\LC_MESSAGES\gnupg2.mo"
1399   RMDir "$INSTDIR\share\locale\tr\LC_MESSAGES"
1400   RMDir "$INSTDIR\share\locale\tr"
1401   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\gnupg2.mo"
1402   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1403   RMDir "$INSTDIR\share\locale\uk"
1404   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo"
1405   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1406   RMDir "$INSTDIR\share\locale\zh_CN"
1407   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\gnupg2.mo"
1408   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1409   RMDir "$INSTDIR\share\locale\zh_TW"
1410   RMDir "$INSTDIR\share\locale"
1411 SectionEnd
1412
1413 Section "-un.sqlite"
1414   Delete "$INSTDIR\bin\libsqlite3-0.dll"
1415 SectionEnd
1416
1417 Section "-un.gnupginst"
1418   # Delete standard stuff.
1419   Delete "$INSTDIR\README.txt"
1420
1421   Delete "$INSTDIR\VERSION"
1422
1423   # Remove the bin directory from the PATH
1424   Push "$INSTDIR\bin"
1425   Call un.RemoveFromPath
1426
1427   # Try to remove the top level directories.
1428   RMDir "$INSTDIR\bin"
1429   RMDir "$INSTDIR\lib"
1430   RMDir "$INSTDIR\include"
1431   RMDir "$INSTDIR\share"
1432   RMDir "$INSTDIR\etc"
1433   RMDir "$INSTDIR"
1434
1435   # Clean the registry.
1436   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Install Directory"
1437 SectionEnd
1438
1439
1440 Function .onInit
1441   ;;!define MUI_LANGDLL_ALWAYSSHOW
1442   !insertmacro MUI_LANGDLL_DISPLAY
1443
1444   Call G4wRunOnce
1445
1446   SetOutPath $TEMP
1447 #!ifdef SOURCES
1448 #  File /oname=gpgspltmp.bmp "${TOP_SRCDIR}/doc/logo/gnupg-logo-400px.bmp"
1449 #  # We play the tune only for the soruce installer
1450 #  File /oname=gpgspltmp.wav "${TOP_SRCDIR}/src/gnupg-splash.wav"
1451 #  g4wihelp::playsound $TEMP\gpgspltmp.wav
1452 #  g4wihelp::showsplash 2500 $TEMP\gpgspltmp.bmp
1453
1454 #  Delete $TEMP\gpgspltmp.bmp
1455 #  # Note that we delete gpgspltmp.wav in .onInst{Failed,Success}
1456 #!endif
1457
1458   # We can't use TOP_SRCDIR dir as the name of the file needs to be
1459   # the same while building and running the installer.  Thus we
1460   # generate the file from a template.
1461   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${W32_SRCDIR}/inst-options.ini"
1462
1463   #Call CalcDepends
1464
1465   Var /GLOBAL changed_dir
1466   # Check if the install directory was modified on the command line
1467   StrCmp "$INSTDIR" "$PROGRAMFILES\${INSTALL_DIR}" unmodified 0
1468   # It is modified. Save that value.
1469   StrCpy $changed_dir "$INSTDIR"
1470
1471   # MULITUSER_INIT overwrites directory setting from command line
1472   !insertmacro MULTIUSER_INIT
1473   StrCpy $INSTDIR "$changed_dir"
1474   goto initDone
1475 unmodified:
1476   !insertmacro MULTIUSER_INIT
1477 initDone:
1478 FunctionEnd
1479
1480 Function "un.onInit"
1481   !insertmacro MULTIUSER_UNINIT
1482 FunctionEnd
1483
1484 #Function .onInstFailed
1485 #  Delete $TEMP\gpgspltmp.wav
1486 #FunctionEnd
1487
1488 #Function .onInstSuccess
1489 #  Delete $TEMP\gpgspltmp.wav
1490 #FunctionEnd
1491
1492 #Function .onSelChange
1493 #  Call CalcDepends
1494 #FunctionEnd
1495
1496
1497 # This must be in a central place.  Urgs.
1498
1499 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1500 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gnupg} $(DESC_SEC_gnupg)
1501 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpa}   $(DESC_SEC_gpa)
1502 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpgex} $(DESC_SEC_gpgex)
1503 !insertmacro MUI_FUNCTION_DESCRIPTION_END
1504
1505
1506 # This also must be in a central place.  Also Urgs.
1507
1508 !ifdef WITH_GUI
1509 Section "-startmenu"
1510
1511   # Check if the start menu entries where requested.
1512   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1513         "Field 2" "State"
1514   IntCmp $R0 0 no_start_menu
1515
1516 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
1517     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
1518
1519     SectionGetFlags ${SEC_gpa} $R0
1520     IntOp $R0 $R0 & ${SF_SELECTED}
1521     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_menu
1522     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GPA.lnk" \
1523         "$INSTDIR\bin\launch-gpa.exe" \
1524         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1525   no_gpa_menu:
1526
1527
1528     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG Manual.lnk" \
1529                    "$INSTDIR\share\gnupg\gnupg.html" \
1530                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_manual)
1531
1532     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \
1533                    "$INSTDIR\README.txt" \
1534                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_readme)
1535
1536 !insertmacro MUI_STARTMENU_WRITE_END
1537
1538
1539
1540 no_start_menu:
1541
1542
1543   # Check if the desktop entries where requested.
1544   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1545         "Field 3" "State"
1546   IntCmp $R0 0 no_desktop
1547
1548     SectionGetFlags ${SEC_gpa} $R0
1549     IntOp $R0 $R0 & ${SF_SELECTED}
1550     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_desktop
1551     CreateShortCut "$DESKTOP\GPA.lnk" \
1552         "$INSTDIR\bin\launch-gpa.exe" \
1553         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1554   no_gpa_desktop:
1555
1556
1557     CreateShortCut "$DESKTOP\GPA Manual.lnk" \
1558                    "$INSTDIR\share\gpa\gpa.html" \
1559                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa_manual)
1560
1561 no_desktop:
1562
1563
1564   # Check if the quick launch bar entries where requested.
1565   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1566         "Field 4" "State"
1567   IntCmp $R0 0 no_quick_launch
1568   StrCmp $QUICKLAUNCH $TEMP no_quick_launch
1569
1570     SectionGetFlags ${SEC_gpa} $R0
1571     IntOp $R0 $R0 & ${SF_SELECTED}
1572     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_quicklaunch
1573     CreateShortCut "$QUICKLAUNCH\GPA.lnk" \
1574         "$INSTDIR\bin\launch-gpa.exe" \
1575         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1576 no_gpa_quicklaunch:
1577
1578
1579 no_quick_launch:
1580
1581
1582 SectionEnd
1583 !endif
1584
1585
1586 #
1587 # Now for the generic parts to end the installation.
1588 #
1589 Var MYTMP
1590
1591 # Last section is a hidden one.
1592 Section
1593   WriteUninstaller "$INSTDIR\gnupg-uninstall.exe"
1594
1595   # Windows Add/Remove Programs support
1596   StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1597   WriteRegExpandStr SHCTX $MYTMP "UninstallString" '"$INSTDIR\gnupg-uninstall.exe"'
1598   WriteRegExpandStr SHCTX $MYTMP "InstallLocation" "$INSTDIR"
1599   WriteRegStr       SHCTX $MYTMP "DisplayName"     "${PRETTY_PACKAGE}"
1600 !ifdef WITH_GUI
1601   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpa.exe,0"
1602 !else
1603   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpg.exe,0"
1604 !endif
1605   WriteRegStr       SHCTX $MYTMP "DisplayVersion"  "${VERSION}"
1606   WriteRegStr       SHCTX $MYTMP "Publisher"       "The GnuPG Project"
1607   WriteRegStr       SHCTX $MYTMP "URLInfoAbout"    "https://gnupg.org"
1608   WriteRegDWORD     SHCTX $MYTMP "NoModify"        "1"
1609   WriteRegDWORD     SHCTX $MYTMP "NoRepair"        "1"
1610 SectionEnd
1611
1612 Section Uninstall
1613 !ifdef WITH_GUI
1614   #---------------------------------------------------
1615   # Delete the menu entries and any empty parent menus
1616   #---------------------------------------------------
1617   !insertmacro MUI_STARTMENU_GETFOLDER Application $MYTMP
1618   Delete "$SMPROGRAMS\$MYTMP\GPA.lnk"
1619   Delete "$SMPROGRAMS\$MYTMP\GnuPG Manual.lnk"
1620   Delete "$SMPROGRAMS\$MYTMP\GnuPG README.lnk"
1621   Delete "$SMPROGRAMS\$MYTMP\*.lnk"
1622   StrCpy $MYTMP "$SMPROGRAMS\$MYTMP"
1623   startMenuDeleteLoop:
1624     ClearErrors
1625     RMDir $MYTMP
1626     GetFullPathName $MYTMP "$MYTMP\.."
1627     IfErrors startMenuDeleteLoopDone
1628     StrCmp $MYTMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
1629   startMenuDeleteLoopDone:
1630
1631   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Start Menu Folder"
1632
1633   # Delete Desktop links.
1634   Delete "$DESKTOP\GPA.lnk"
1635   Delete "$DESKTOP\GnuPG Manual.lnk"
1636   Delete "$DESKTOP\GnuPG README.lnk"
1637
1638   # Delete Quick Launch Bar links.
1639   StrCmp $QUICKLAUNCH $TEMP no_quick_launch_uninstall
1640   Delete "$QUICKLAUNCH\GPA.lnk"
1641 no_quick_launch_uninstall:
1642
1643 !endif
1644
1645   Delete "$INSTDIR\gnupg-uninstall.exe"
1646   RMDir "$INSTDIR"
1647
1648   # Clean the registry.
1649   DeleteRegValue SHCTX "Software\GnuPG" "Install Directory"
1650   DeleteRegKey /ifempty SHCTX "Software\GnuPG"
1651   # Remove Windows Add/Remove Programs support.
1652   DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1653 SectionEnd