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