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