speedo,w32: Allow installation as normal user
[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   Var /GLOBAL is_user_install
364   StrCpy $is_user_install "0"
365   ClearErrors
366   UserInfo::GetName
367   IfErrors leave
368   Pop $0
369   UserInfo::GetAccountType
370   Pop $1
371   StrCmp $1 "Admin" leave +1
372   MessageBox MB_YESNO "$(T_AdminWanted)" IDNO exit
373   StrCpy $is_user_install "1"
374   goto leave
375  exit:
376     Quit
377  leave:
378 FunctionEnd
379
380
381 # Check whether the start menu is actually wanted.
382
383 Function CheckIfStartMenuWanted
384   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
385         "Field 2" "State"
386   IntCmp $R0 1 +2
387     Abort
388 FunctionEnd
389
390
391 # Check whether this is a reinstall and popup a message box to explain
392 # that it is better to close other apps before continuing
393 Function PrintCloseOtherApps
394     IfFileExists $INSTDIR\bin\gpg.exe print_warning
395     IfFileExists $INSTDIR\bin\gpa.exe print_warning
396     Return
397    print_warning:
398     MessageBox MB_OK|MB_ICONEXCLAMATION "$(T_CloseOtherApps)"
399
400 FunctionEnd
401
402 # Called right before the final page to show more warnings.
403 #Function ShowFinalWarnings
404 #   leave:
405 #FunctionEnd
406
407 #-----------------------------------------------
408 # Strings pertaining to the install options page
409 #-----------------------------------------------
410
411 # Installation options title
412 LangString T_InstallOptions ${LANG_ENGLISH} "Install Options"
413 LangString T_InstallOptions ${LANG_GERMAN}  "Installationsoptionen"
414
415 # Installation options subtitle 1
416 LangString T_InstallOptLinks ${LANG_ENGLISH} "Start links"
417 LangString T_InstallOptLinks ${LANG_GERMAN}  "Startlinks"
418
419 LangString T_InstOptLabelA  ${LANG_ENGLISH} \
420      "Please select where GnuPG shall install links:"
421 LangString T_InstOptLabelA  ${LANG_GERMAN} \
422      "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
423
424 LangString T_InstOptLabelB  ${LANG_ENGLISH} \
425      "(Only programs will be linked into the quick launch bar.)"
426 LangString T_InstOptLabelB  ${LANG_GERMAN} \
427      "(In die Schnellstartleiste werden nur Verknüpfungen für \
428       Programme angelegt.) "
429
430 LangString T_InstOptFieldA  ${LANG_ENGLISH} \
431      "Start Menu"
432 LangString T_InstOptFieldA  ${LANG_GERMAN} \
433      "Startmenü"
434
435 LangString T_InstOptFieldB  ${LANG_ENGLISH} \
436      "Desktop"
437 LangString T_InstOptFieldB  ${LANG_GERMAN} \
438      "Arbeitsfläche"
439
440 LangString T_InstOptFieldC  ${LANG_ENGLISH} \
441      "Quick Launch Bar"
442 LangString T_InstOptFieldC  ${LANG_GERMAN} \
443      "Schnellstartleiste"
444
445 #------------------------------------------------
446 # String pertaining to the existing version check
447 #------------------------------------------------
448 LangString T_FoundExistingVersion ${LANG_ENGLISH} \
449      "Version $R1 has already been installed.  $\r$\n\
450       Do you want to overwrite it with version ${VERSION}?"
451 LangString T_FoundExistingVersion ${LANG_GERMAN} \
452      "Version $R1 ist hier bereits installiert. $\r$\n\
453       Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
454        $\r$\n\
455       (Sie können in jedem Fall mit JA antworten, falls es sich um \
456        eine neuere oder dieselbe Version handelt.)"
457 LangString T_FoundExistingVersionB ${LANG_ENGLISH} \
458      "A version of GnuPG has already been installed on the system. \
459        $\r$\n\
460        $\r$\n\
461       Do you want to continue installing GnuPG?"
462 LangString T_FoundExistingVersionB ${LANG_GERMAN} \
463      "Eine Version von GnuPG ist hier bereits installiert. \
464         $\r$\n\
465         $\r$\n\
466       Möchten die die Installation von GnuPG fortführen?"
467
468
469
470 # From Function PrintNonAdminWarning
471 LangString T_AdminWanted ${LANG_ENGLISH} \
472    "Warning: It is recommended to install GnuPG system-wide with \
473     administrator rights. \
474       $\r$\n\
475       $\r$\n\
476     Do you want to continue installing GnuPG without administrator rights?"
477 LangString T_AdminWanted ${LANG_GERMAN} \
478    "Achtung: Es wird empfohlen GnuPG systemweit mit \
479     Administratorrechten zu installieren. \
480       $\r$\n\
481       $\r$\n\
482     Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?"
483
484 # From Function PrintCloseOtherApps
485 LangString T_CloseOtherApps ${LANG_ENGLISH} \
486    "Please make sure that other applications are not running. \
487     GnuPG will try to install anyway but a reboot may be required."
488 LangString T_CloseOtherApps ${LANG_GERMAN} \
489    "Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
490     sind.  GnuPG wird auf jeden Fall versuchen, eine Installation \
491     durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten."
492
493
494 # TrimNewlines  - taken from the NSIS reference
495 # input, top of stack  (e.g. whatever$\r$\n)
496 # output, top of stack (replaces, with e.g. whatever)
497 # modifies no other variables.
498 Function TrimNewlines
499    Exch $R0
500    Push $R1
501    Push $R2
502    StrCpy $R1 0
503
504  loop:
505    IntOp $R1 $R1 - 1
506    StrCpy $R2 $R0 1 $R1
507    StrCmp $R2 "$\r" loop
508    StrCmp $R2 "$\n" loop
509    IntOp $R1 $R1 + 1
510    IntCmp $R1 0 no_trim_needed
511    StrCpy $R0 $R0 $R1
512
513  no_trim_needed:
514    Pop $R2
515    Pop $R1
516    Exch $R0
517 FunctionEnd
518
519
520 # AddToPath - Adds the given dir to the search path.
521 #        Input - head of the stack
522 Function AddToPath
523   Exch $0
524   g4wihelp::path_add "$0" $is_user_install
525   StrCmp $R5 "0" add_to_path_done
526   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
527   add_to_path_done:
528   Pop $0
529 FunctionEnd
530
531
532 # RemoveFromPath - Remove a given dir from the path
533 #     Input: head of the stack
534 Function un.RemoveFromPath
535   ClearErrors
536   UserInfo::GetName
537   IfErrors remove_admin
538   Pop $0
539   UserInfo::GetAccountType
540   Pop $1
541   StrCmp $1 "Admin" remove_admin remove_user
542
543 remove_admin:
544   Exch $0
545   g4wihelp::path_remove "$0" "0"
546   goto remove_done
547 remove_user:
548   Exch $0
549   g4wihelp::path_remove "$0" "1"
550   goto remove_done
551
552 remove_done:
553   StrCmp $R5 "0" remove_from_path_done
554   SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
555   remove_from_path_done:
556   Pop $0
557 FunctionEnd
558
559
560 #
561 # Define the installer sections.
562 #
563
564 Section "-gnupginst"
565   SetOutPath "$INSTDIR"
566
567   File "${BUILD_DIR}/README.txt"
568
569   # Write a version file.
570   FileOpen $0 "$INSTDIR\VERSION" w
571   FileWrite $0 "${PACKAGE}$\r$\n"
572   FileWrite $0 "${VERSION}$\r$\n"
573   FileClose $0
574
575   WriteRegStr SHCTX "Software\GnuPG" "Install Directory" $INSTDIR
576
577   # If we are reinstalling, try to kill a possible running gpa using
578   # an already installed gpa.
579   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
580     nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
581
582   no_uiserver:
583
584   # If we are reinstalling, try to kill a possible running agent using
585   # an already installed gpgconf.
586
587   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
588     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
589     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
590
591   no_gpgconf:
592
593   # Add the bin directory to the PATH
594   Push "$INSTDIR\bin"
595   Call AddToPath
596   DetailPrint "Added $INSTDIR\bin to PATH"
597 SectionEnd
598
599 LangString DESC_Menu_gnupg_readme ${LANG_ENGLISH} \
600    "General information on GnuPG"
601 LangString DESC_Menu_gnupg_readme ${LANG_GERMAN} \
602    "Allgemeine Informationen zu GnuPG"
603
604
605 Section "GnuPG" SEC_gnupg
606   SectionIn RO
607
608   SetOutPath "$INSTDIR\bin"
609   File "bin/gpg.exe"
610   File "bin/gpgv.exe"
611   File "bin/gpgsm.exe"
612   File "bin/gpgconf.exe"
613   File "bin/gpg-connect-agent.exe"
614   File "bin/gpgtar.exe"
615   File "libexec/gpg-preset-passphrase.exe"
616   File "libexec/gpg-wks-client.exe"
617
618   ClearErrors
619   SetOverwrite try
620   File "bin/gpg-agent.exe"
621   SetOverwrite lastused
622   ifErrors 0 +3
623       File /oname=gpg-agent.exe.tmp "bin/gpg-agent.exe"
624       Rename /REBOOTOK gpg-agent.exe.tmp gpg-agent.exe
625
626   ClearErrors
627   SetOverwrite try
628   File "bin/dirmngr.exe"
629   SetOverwrite lastused
630   ifErrors 0 +3
631       File /oname=dirmngr.exe.tmp "bin/dirmngr.exe"
632       Rename /REBOOTOK dirmngr.exe.tmp dirmngr.exe
633
634   ClearErrors
635   SetOverwrite try
636   File "libexec/scdaemon.exe"
637   SetOverwrite lastused
638   ifErrors 0 +3
639       File /oname=scdaemon.exe.tmp "libexec/scdaemon.exe"
640       Rename /REBOOTOK scdaemon.exe.tmp scdaemon.exe
641
642   SetOutPath "$INSTDIR\share\gnupg"
643   File "share/gnupg/distsigkey.gpg"
644   File "share/gnupg/sks-keyservers.netCA.pem"
645
646   SetOutPath "$INSTDIR\share\locale\ca\LC_MESSAGES"
647   File share/locale/ca/LC_MESSAGES/gnupg2.mo
648   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
649   File share/locale/cs/LC_MESSAGES/gnupg2.mo
650   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
651   File share/locale/da/LC_MESSAGES/gnupg2.mo
652   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
653   File share/locale/de/LC_MESSAGES/gnupg2.mo
654   SetOutPath "$INSTDIR\share\locale\el\LC_MESSAGES"
655   File share/locale/el/LC_MESSAGES/gnupg2.mo
656   SetOutPath "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
657   File share/locale/en@boldquot/LC_MESSAGES/gnupg2.mo
658   SetOutPath "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
659   File share/locale/en@quot/LC_MESSAGES/gnupg2.mo
660   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
661   File share/locale/eo/LC_MESSAGES/gnupg2.mo
662   SetOutPath "$INSTDIR\share\locale\es\LC_MESSAGES"
663   File share/locale/es/LC_MESSAGES/gnupg2.mo
664   SetOutPath "$INSTDIR\share\locale\et\LC_MESSAGES"
665   File share/locale/et/LC_MESSAGES/gnupg2.mo
666   SetOutPath "$INSTDIR\share\locale\fi\LC_MESSAGES"
667   File share/locale/fi/LC_MESSAGES/gnupg2.mo
668   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
669   File share/locale/fr/LC_MESSAGES/gnupg2.mo
670   SetOutPath "$INSTDIR\share\locale\gl\LC_MESSAGES"
671   File share/locale/gl/LC_MESSAGES/gnupg2.mo
672   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
673   File share/locale/hu/LC_MESSAGES/gnupg2.mo
674   SetOutPath "$INSTDIR\share\locale\id\LC_MESSAGES"
675   File share/locale/id/LC_MESSAGES/gnupg2.mo
676   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
677   File share/locale/it/LC_MESSAGES/gnupg2.mo
678   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
679   File share/locale/ja/LC_MESSAGES/gnupg2.mo
680   SetOutPath "$INSTDIR\share\locale\nb\LC_MESSAGES"
681   File share/locale/nb/LC_MESSAGES/gnupg2.mo
682   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
683   File share/locale/pl/LC_MESSAGES/gnupg2.mo
684   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
685   File share/locale/pt/LC_MESSAGES/gnupg2.mo
686   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
687   File share/locale/ro/LC_MESSAGES/gnupg2.mo
688   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
689   File share/locale/ru/LC_MESSAGES/gnupg2.mo
690   SetOutPath "$INSTDIR\share\locale\sk\LC_MESSAGES"
691   File share/locale/sk/LC_MESSAGES/gnupg2.mo
692   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
693   File share/locale/sv/LC_MESSAGES/gnupg2.mo
694   SetOutPath "$INSTDIR\share\locale\tr\LC_MESSAGES"
695   File share/locale/tr/LC_MESSAGES/gnupg2.mo
696   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
697   File share/locale/uk/LC_MESSAGES/gnupg2.mo
698   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
699   File share/locale/zh_CN/LC_MESSAGES/gnupg2.mo
700   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
701   File share/locale/zh_TW/LC_MESSAGES/gnupg2.mo
702 SectionEnd
703
704
705 LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
706    "The GnuPG Core is the actual encrypt core and a set of command \
707     line utilities."
708 LangString DESC_SEC_gnupg ${LANG_GERMAN} \
709    "Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \
710     dieser Software.  Der GnuPG Core stellt die eigentliche \
711     Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
712
713 LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \
714    "Show the manual for the GnuPG Core"
715 LangString DESC_Menu_gnupg_manual ${LANG_GERMAN} \
716    "Das Handbuch zum GnuPG Kern anzeigen"
717
718 Section "-libgpg-error" SEC_libgpg_error
719   SetOutPath "$INSTDIR\bin"
720   File bin/libgpg-error-0.dll
721   SetOutPath "$INSTDIR\lib"
722   File /oname=libgpg-error.imp lib/libgpg-error.dll.a
723   SetOutPath "$INSTDIR\include"
724   File include/gpg-error.h
725   SetOutPath "$INSTDIR\share\locale\cs\LC_MESSAGES"
726   File share/locale/cs/LC_MESSAGES/libgpg-error.mo
727   SetOutPath "$INSTDIR\share\locale\da\LC_MESSAGES"
728   File share/locale/da/LC_MESSAGES/libgpg-error.mo
729   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
730   File share/locale/de/LC_MESSAGES/libgpg-error.mo
731   SetOutPath "$INSTDIR\share\locale\eo\LC_MESSAGES"
732   File share/locale/eo/LC_MESSAGES/libgpg-error.mo
733   SetOutPath "$INSTDIR\share\locale\fr\LC_MESSAGES"
734   File share/locale/fr/LC_MESSAGES/libgpg-error.mo
735   SetOutPath "$INSTDIR\share\locale\hu\LC_MESSAGES"
736   File share/locale/hu/LC_MESSAGES/libgpg-error.mo
737   SetOutPath "$INSTDIR\share\locale\it\LC_MESSAGES"
738   File share/locale/it/LC_MESSAGES/libgpg-error.mo
739   SetOutPath "$INSTDIR\share\locale\ja\LC_MESSAGES"
740   File share/locale/ja/LC_MESSAGES/libgpg-error.mo
741   SetOutPath "$INSTDIR\share\locale\nl\LC_MESSAGES"
742   File share/locale/nl/LC_MESSAGES/libgpg-error.mo
743   SetOutPath "$INSTDIR\share\locale\pl\LC_MESSAGES"
744   File share/locale/pl/LC_MESSAGES/libgpg-error.mo
745   SetOutPath "$INSTDIR\share\locale\pt\LC_MESSAGES"
746   File share/locale/pt/LC_MESSAGES/libgpg-error.mo
747   SetOutPath "$INSTDIR\share\locale\ro\LC_MESSAGES"
748   File share/locale/ro/LC_MESSAGES/libgpg-error.mo
749   SetOutPath "$INSTDIR\share\locale\ru\LC_MESSAGES"
750   File share/locale/ru/LC_MESSAGES/libgpg-error.mo
751   SetOutPath "$INSTDIR\share\locale\sr\LC_MESSAGES"
752   File share/locale/sr/LC_MESSAGES/libgpg-error.mo
753   SetOutPath "$INSTDIR\share\locale\sv\LC_MESSAGES"
754   File share/locale/sv/LC_MESSAGES/libgpg-error.mo
755   SetOutPath "$INSTDIR\share\locale\uk\LC_MESSAGES"
756   File share/locale/uk/LC_MESSAGES/libgpg-error.mo
757   SetOutPath "$INSTDIR\share\locale\vi\LC_MESSAGES"
758   File share/locale/vi/LC_MESSAGES/libgpg-error.mo
759   SetOutPath "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
760   File share/locale/zh_CN/LC_MESSAGES/libgpg-error.mo
761   SetOutPath "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
762   File share/locale/zh_TW/LC_MESSAGES/libgpg-error.mo
763 SectionEnd
764
765 Section "-zlib" SEC_zlib
766   SetOutPath "$INSTDIR\bin"
767   File bin/zlib1.dll
768 SectionEnd
769
770 Section "-npth" SEC_npth
771   SetOutPath "$INSTDIR\bin"
772   File bin/libnpth-0.dll
773   SetOutPath "$INSTDIR\lib"
774   File /oname=libnpth.imp lib/libnpth.dll.a
775   SetOutPath "$INSTDIR\include"
776   File include/npth.h
777 SectionEnd
778
779 Section "-gcrypt" SEC_gcrypt
780   SetOutPath "$INSTDIR\bin"
781   File bin/libgcrypt-20.dll
782   SetOutPath "$INSTDIR\lib"
783   File /oname=libgcrypt.imp lib/libgcrypt.dll.a
784   SetOutPath "$INSTDIR\include"
785   File include/gcrypt.h
786 SectionEnd
787
788 Section "-assuan" SEC_assuan
789   SetOutPath "$INSTDIR\bin"
790   File bin/libassuan-0.dll
791   SetOutPath "$INSTDIR\lib"
792   File /oname=libassuan.imp lib/libassuan.dll.a
793   SetOutPath "$INSTDIR\include"
794   File include/assuan.h
795 SectionEnd
796
797 Section "-ksba" SEC_ksba
798   SetOutPath "$INSTDIR\bin"
799   File bin/libksba-8.dll
800   SetOutPath "$INSTDIR\lib"
801   File /oname=libksba.imp lib/libksba.dll.a
802   SetOutPath "$INSTDIR\include"
803   File include/ksba.h
804 SectionEnd
805
806 Section "-gpgme" SEC_gpgme
807   SetOutPath "$INSTDIR\bin"
808   File bin/libgpgme-11.dll
809   File /nonfatal bin/libgpgme-glib-11.dll
810   File libexec/gpgme-w32spawn.exe
811   SetOutPath "$INSTDIR\lib"
812   File /oname=libgpgme.imp      lib/libgpgme.dll.a
813   File /nonfatal /oname=libgpgme-glib.imp lib/libgpgme-glib.dll.a
814   SetOutPath "$INSTDIR\include"
815   File include/gpgme.h
816 SectionEnd
817
818 Section "-sqlite" SEC_sqlite
819   SetOutPath "$INSTDIR\bin"
820   File bin/libsqlite3-0.dll
821 SectionEnd
822
823 !ifdef WITH_GUI
824 Section "-libiconv" SEC_libiconv
825   SetOutPath "$INSTDIR\bin"
826   File bin/libiconv-2.dll
827 SectionEnd
828
829 Section "-gettext" SEC_gettext
830   SetOutPath "$INSTDIR\bin"
831   File bin/libintl-8.dll
832 SectionEnd
833
834 Section "-glib" SEC_glib
835   SetOutPath "$INSTDIR\bin"
836   File bin/libgio-2.0-0.dll
837   File bin/libglib-2.0-0.dll
838   File bin/libgmodule-2.0-0.dll
839   File bin/libgobject-2.0-0.dll
840   File bin/libgthread-2.0-0.dll
841   File bin/gspawn-win32-helper.exe
842   File bin/gspawn-win32-helper-console.exe
843
844   File bin/libffi-6.dll
845 SectionEnd
846
847 Section "-libpng" SEC_libpng
848   SetOutPath "$INSTDIR\bin"
849   File bin/libpng14-14.dll
850 SectionEnd
851
852 #Section "-jpeg" SEC_jpeg
853 #  SetOutPath "$INSTDIR"
854 #  File bin/jpeg62.dll
855 #SectionEnd
856
857 Section "-cairo" SEC_cairo
858   SetOutPath "$INSTDIR\bin"
859   File bin/libcairo-gobject-2.dll
860   File bin/libpangocairo-1.0-0.dll
861   File bin/libcairo-2.dll
862   File bin/libcairo-script-interpreter-2.dll
863 SectionEnd
864
865 Section "-pixman" SEC_pixman
866   SetOutPath "$INSTDIR\bin"
867   File bin/libpixman-1-0.dll
868 SectionEnd
869
870 Section "-pango" SEC_pango
871   SetOutPath "$INSTDIR\bin"
872   File bin/pango-querymodules.exe
873   File bin/libpango-1.0-0.dll
874   File bin/libpangowin32-1.0-0.dll
875
876   SetOutPath "$INSTDIR\lib\pango\1.6.0\modules"
877   File lib/pango/1.6.0/modules/pango-basic-win32.dll
878   File lib/pango/1.6.0/modules/pango-arabic-lang.dll
879   File lib/pango/1.6.0/modules/pango-indic-lang.dll
880
881   SetOutPath "$INSTDIR\etc\pango"
882   File ${W32_SRCDIR}/pango.modules
883 SectionEnd
884
885 Section "-atk" SEC_atk
886   SetOutPath "$INSTDIR\bin"
887   File bin/libatk-1.0-0.dll
888 SectionEnd
889
890 Section "-gtk+" SEC_gtk_
891   SetOutPath "$INSTDIR\bin"
892   File bin/libgdk_pixbuf-2.0-0.dll
893   File bin/libgdk-win32-2.0-0.dll
894   File bin/libgtk-win32-2.0-0.dll
895
896   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
897   File /oname=loaders.cache ${W32_SRCDIR}/gdk-pixbuf-loaders.cache
898   SetOutPath "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
899   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.dll
900   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-bmp.dll
901   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-emf.dll
902   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-gif.dll
903   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-ico.dll
904   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-jpeg.dll
905   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-tiff.dll
906   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gdip-wmf.dll
907   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.dll
908   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.dll
909   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.dll
910   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.dll
911   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.dll
912   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.dll
913   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.dll
914   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.dll
915   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.dll
916   File lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.dll
917
918   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
919   File lib/gtk-2.0/2.10.0/engines/libwimp.dll
920   File lib/gtk-2.0/2.10.0/engines/libpixmap.dll
921
922   SetOutPath "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
923   File lib/gtk-2.0/2.10.0/immodules/im-thai.dll
924   File lib/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.dll
925   File lib/gtk-2.0/2.10.0/immodules/im-multipress.dll
926   File lib/gtk-2.0/2.10.0/immodules/im-ti-er.dll
927   File lib/gtk-2.0/2.10.0/immodules/im-am-et.dll
928   File lib/gtk-2.0/2.10.0/immodules/im-cedilla.dll
929   File lib/gtk-2.0/2.10.0/immodules/im-inuktitut.dll
930   File lib/gtk-2.0/2.10.0/immodules/im-viqr.dll
931   File lib/gtk-2.0/2.10.0/immodules/im-ti-et.dll
932   File lib/gtk-2.0/2.10.0/immodules/im-ipa.dll
933   File lib/gtk-2.0/2.10.0/immodules/im-ime.dll
934
935   SetOutPath "$INSTDIR\share\themes\Default\gtk-2.0-key"
936   File share/themes/Default/gtk-2.0-key/gtkrc
937
938   SetOutPath "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
939   File share/themes/MS-Windows/gtk-2.0/gtkrc
940
941   SetOutPath "$INSTDIR\etc\gtk-2.0"
942   File etc/gtk-2.0/im-multipress.conf
943 SectionEnd
944 !endif
945
946 Section "-pinentry" SEC_pinentry
947   SetOutPath "$INSTDIR\bin"
948   File /oname=pinentry-basic.exe "bin/pinentry-w32.exe"
949 SectionEnd
950
951 !ifdef WITH_GUI
952 Section "gpa" SEC_gpa
953   SectionIn RO
954   SetOutPath "$INSTDIR\bin"
955   File bin/gpa.exe
956   File bin/launch-gpa.exe
957 SectionEnd
958
959 LangString DESC_SEC_gpa ${LANG_ENGLISH} \
960    "The GnuPG Assistant is the graphical interface of GnuPG"
961 LangString DESC_SEC_gpa ${LANG_GERMAN} \
962    "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
963
964 LangString DESC_Menu_gpa ${LANG_ENGLISH} \
965    "Run the GnuGP Assistant."
966 LangString DESC_Menu_gpa ${LANG_GERMAN} \
967    "Den GnuPG Assistenten starten."
968
969 Section "gpgex" SEC_gpgex
970   SetOutPath "$INSTDIR\bin"
971
972   ClearErrors
973   SetOverwrite try
974   File bin/gpgex.dll
975   SetOverwrite lastused
976   ifErrors 0 do_reg
977       File /oname=gpgex.dll.tmp bin/gpgex.dll
978       Rename /REBOOTOK gpgex.dll.tmp gpgex.dll
979
980  do_reg:
981   ClearErrors
982   RegDLL "$INSTDIR\bin\gpgex.dll"
983   ifErrors 0 +2
984      MessageBox MB_OK "$(T_GPGEX_RegFailed)"
985
986 ${If} ${RunningX64}
987   # Install the 64 bit version of the plugin.
988   # Note that we install this in addition to the 32 bit version so that
989   # the 32 bit version can be used by file dialogs of 32 bit programs.
990   ClearErrors
991   SetOverwrite try
992   File /oname=gpgex6.dll "${INST6_DIR}/bin/gpgex.dll"
993   SetOverwrite lastused
994   ifErrors 0 do_reg64
995       File /oname=gpgex6.dll.tmp "${INST6_DIR}/bin/gpgex.dll"
996       Rename /REBOOTOK gpgex6.dll.tmp gpgex6.dll
997
998  do_reg64:
999   # Register the DLL. We need to register both versions.  However
1000   # RegDLL can't be used for 64 bit and InstallLib seems to be a
1001   # registry hack.
1002   ClearErrors
1003   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/s" "$INSTDIR\bin\gpgex6.dll"'
1004   ifErrors 0 +2
1005      MessageBox MB_OK "$(T_GPGEX_RegFailed) (64 bit)"
1006
1007   # Note: There is no need to install the help an mo files because
1008   # they are identical to those installed by the 32 bit version.
1009 ${EndIf}
1010 SectionEnd
1011
1012 LangString T_GPGEX_RegFailed ${LANG_ENGLISH} \
1013    "Warning: Registration of the Explorer plugin failed."
1014
1015 LangString DESC_SEC_gpgex ${LANG_ENGLISH} \
1016    "GnuPG Explorer Extension"
1017
1018 !endif
1019
1020
1021 Section "-gnupglast" SEC_gnupglast
1022   SetOutPath "$INSTDIR"
1023 SectionEnd
1024
1025
1026 #
1027 # Define the uninstaller sections.
1028 #
1029 # (reverse order of the installer sections!)
1030 #
1031
1032 Section "-un.gnupglast"
1033   ifFileExists "$INSTDIR\bin\launch-gpa.exe"  0 no_uiserver
1034     nsExec::ExecToLog '"$INSTDIR\bin\launch-gpa" "--stop-server"'
1035   no_uiserver:
1036   ifFileExists "$INSTDIR\bin\gpgconf.exe"  0 no_gpgconf
1037     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "gpg-agent"'
1038     nsExec::ExecToLog '"$INSTDIR\bin\gpgconf" "--kill" "dirmngr"'
1039   no_gpgconf:
1040 SectionEnd
1041
1042 Section "-un.gpgex"
1043   UnRegDLL "$INSTDIR\bin\gpgex.dll"
1044
1045   Delete /REBOOTOK "$INSTDIR\bin\gpgex.dll"
1046
1047 ${If} ${RunningX64}
1048   nsExec::ExecToLog '"$SYSDIR\regsvr32" "/u" "/s" "$INSTDIR\bin\gpgex6.dll"'
1049   Delete /REBOOTOK "$INSTDIR\bin\gpgex6.dll"
1050 ${EndIf}
1051 SectionEnd
1052
1053 !ifdef WITH_GUI
1054 Section "-un.gpa"
1055   Delete "$INSTDIR\bin\gpa.exe"
1056   Delete "$INSTDIR\bin\launch-gpa.exe"
1057
1058   RMDir "$INSTDIR\share\gpa"
1059 SectionEnd
1060 !endif
1061
1062 Section "-un.pinentry"
1063   Delete "$INSTDIR\bin\pinentry-basic.exe"
1064 SectionEnd
1065
1066 !ifdef WITH_GUI
1067 Section "-un.gtk+"
1068   Delete "$INSTDIR\bin\libgdk_pixbuf-2.0-0.dll"
1069   Delete "$INSTDIR\bin\libgdk-win32-2.0-0.dll"
1070   Delete "$INSTDIR\bin\libgtk-win32-2.0-0.dll"
1071
1072   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache"
1073
1074   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ani.dll"
1075   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-bmp.dll"
1076   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-emf.dll"
1077   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-gif.dll"
1078   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-ico.dll"
1079   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-jpeg.dll"
1080   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-tiff.dll"
1081   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-gdip-wmf.dll"
1082   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-icns.dll"
1083   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pcx.dll"
1084   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-png.dll"
1085   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-pnm.dll"
1086   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-qtif.dll"
1087   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-ras.dll"
1088   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-tga.dll"
1089   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-wbmp.dll"
1090   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xbm.dll"
1091   Delete "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-xpm.dll"
1092   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0\loaders"
1093   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0\2.10.0"
1094   RMDir  "$INSTDIR\lib\gdk-pixbuf-2.0"
1095
1096   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libwimp.dll"
1097   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
1098   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\engines"
1099
1100   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-thai.dll"
1101   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cyrillic-translit.dll"
1102   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-multipress.dll"
1103   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-er.dll"
1104   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-am-et.dll"
1105   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-cedilla.dll"
1106   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-inuktitut.dll"
1107   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-viqr.dll"
1108   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ti-et.dll"
1109   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ipa.dll"
1110   Delete "$INSTDIR\lib\gtk-2.0\2.10.0\immodules\im-ime.dll"
1111   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0\immodules"
1112
1113   RMDir  "$INSTDIR\lib\gtk-2.0\2.10.0"
1114   RMDir  "$INSTDIR\lib\gtk-2.0"
1115
1116   Delete "$INSTDIR\share\themes\Default\gtk-2.0-key\gtkrc"
1117   RMDir  "$INSTDIR\share\themes\Default\gtk-2.0-key"
1118   RMDir  "$INSTDIR\share\themes\Default"
1119
1120   Delete "$INSTDIR\share\themes\MS-Windows\gtk-2.0\gtkrc"
1121   RMDir  "$INSTDIR\share\themes\MS-Windows\gtk-2.0"
1122   RMDir  "$INSTDIR\share\themes\MS-Windows"
1123
1124   RMDir  "$INSTDIR\share\themes"
1125
1126   Delete "$INSTDIR\etc\gtk-2.0\im-multipress.conf"
1127   RMDir  "$INSTDIR\etc\gtk-2.0"
1128 SectionEnd
1129
1130 Section "-un.atk"
1131   Delete "$INSTDIR\bin\libatk-1.0-0.dll"
1132 SectionEnd
1133
1134 Section "-un.pango"
1135   Delete "$INSTDIR\bin\pango-querymodules.exe"
1136   Delete "$INSTDIR\bin\libpango-1.0-0.dll"
1137   Delete "$INSTDIR\bin\libpangowin32-1.0-0.dll"
1138
1139   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-basic-win32.dll"
1140   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-arabic-lang.dll"
1141   Delete "$INSTDIR\lib\pango\1.6.0\modules\pango-indic-lang.dll"
1142   RMDir  "$INSTDIR\lib\pango\1.6.0\modules"
1143   RMDir  "$INSTDIR\lib\pango\1.6.0"
1144   RMDir  "$INSTDIR\lib\pango"
1145
1146   Delete "$INSTDIR\etc\pango\pango.modules"
1147   RMDir  "$INSTDIR\etc\pango"
1148 SectionEnd
1149
1150 Section "-un.pixman"
1151   Delete "$INSTDIR\bin\libpixman-1-0.dll"
1152 SectionEnd
1153
1154 Section "-un.cairo"
1155   Delete "$INSTDIR\bin\libcairo-gobject-2.dll"
1156   Delete "$INSTDIR\bin\libpangocairo-1.0-0.dll"
1157   Delete "$INSTDIR\bin\libcairo-2.dll"
1158   Delete "$INSTDIR\bin\libcairo-script-interpreter-2.dll"
1159 SectionEnd
1160
1161 Section "-un.libpng"
1162   Delete "$INSTDIR\bin\libpng14-14.dll"
1163 SectionEnd
1164
1165 Section "-un.glib"
1166   Delete "$INSTDIR\bin\libgio-2.0-0.dll"
1167   Delete "$INSTDIR\bin\libglib-2.0-0.dll"
1168   Delete "$INSTDIR\bin\libgmodule-2.0-0.dll"
1169   Delete "$INSTDIR\bin\libgobject-2.0-0.dll"
1170   Delete "$INSTDIR\bin\libgthread-2.0-0.dll"
1171   Delete "$INSTDIR\bin\gspawn-win32-helper.exe"
1172   Delete "$INSTDIR\bin\gspawn-win32-helper-console.exe"
1173   Delete "$INSTDIR\bin\libffi-6.dll"
1174 SectionEnd
1175 !endif
1176
1177
1178 Section "-un.gettext"
1179   Delete "$INSTDIR\bin\libintl-8.dll"
1180 SectionEnd
1181
1182 Section "-un.libiconv"
1183   Delete "$INSTDIR\bin\libiconv-2.dll"
1184 SectionEnd
1185
1186 Section "-un.gpgme"
1187   Delete "$INSTDIR\bin\libgpgme-11.dll"
1188   Delete "$INSTDIR\bin\libgpgme-glib-11.dll"
1189   Delete "$INSTDIR\bin\gpgme-w32spawn.exe"
1190   Delete "$INSTDIR\lib\libgpgme.imp"
1191   Delete "$INSTDIR\lib\libgpgme-glib.imp"
1192   Delete "$INSTDIR\include\gpgme.h"
1193 SectionEnd
1194
1195 Section "-un.ksba"
1196   Delete "$INSTDIR\bin\libksba-8.dll"
1197   Delete "$INSTDIR\lib\libksba.imp"
1198   Delete "$INSTDIR\include\ksba.h"
1199 SectionEnd
1200
1201 Section "-un.assuan"
1202   Delete "$INSTDIR\bin\libassuan-0.dll"
1203   Delete "$INSTDIR\lib\libassuan.imp"
1204   Delete "$INSTDIR\include\assuan.h"
1205 SectionEnd
1206
1207 Section "-un.gcrypt"
1208   Delete "$INSTDIR\bin\libgcrypt-20.dll"
1209   Delete "$INSTDIR\lib\libgcrypt.imp"
1210   Delete "$INSTDIR\include\gcrypt.h"
1211 SectionEnd
1212
1213 Section "-un.npth"
1214   Delete "$INSTDIR\bin\libnpth-0.dll"
1215   Delete "$INSTDIR\lib\libnpth.imp"
1216   Delete "$INSTDIR\include\npth.h"
1217 SectionEnd
1218
1219 Section "-un.zlib"
1220   Delete "$INSTDIR\bin\zlib1.dll"
1221 SectionEnd
1222
1223 Section "-un.libgpg-error"
1224   Delete "$INSTDIR\bin\libgpg-error-0.dll"
1225   Delete "$INSTDIR\lib\libgpg-error.imp"
1226   Delete "$INSTDIR\include\gpg-error.h"
1227   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\libgpg-error.mo"
1228   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1229   RMDir "$INSTDIR\share\locale\cs"
1230   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\libgpg-error.mo"
1231   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1232   RMDir "$INSTDIR\share\locale\da"
1233   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\libgpg-error.mo"
1234   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1235   RMDir "$INSTDIR\share\locale\de"
1236   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\libgpg-error.mo"
1237   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1238   RMDir "$INSTDIR\share\locale\eo"
1239   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\libgpg-error.mo"
1240   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1241   RMDir "$INSTDIR\share\locale\fr"
1242   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\libgpg-error.mo"
1243   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1244   RMDir "$INSTDIR\share\locale\hu"
1245   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\libgpg-error.mo"
1246   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1247   RMDir "$INSTDIR\share\locale\it"
1248   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\libgpg-error.mo"
1249   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1250   RMDir "$INSTDIR\share\locale\ja"
1251   Delete "$INSTDIR\share\locale\nl\LC_MESSAGES\libgpg-error.mo"
1252   RMDir "$INSTDIR\share\locale\nl\LC_MESSAGES"
1253   RMDir "$INSTDIR\share\locale\nl"
1254   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\libgpg-error.mo"
1255   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1256   RMDir "$INSTDIR\share\locale\pl"
1257   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\libgpg-error.mo"
1258   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1259   RMDir "$INSTDIR\share\locale\pt"
1260   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\libgpg-error.mo"
1261   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1262   RMDir "$INSTDIR\share\locale\ro"
1263   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\libgpg-error.mo"
1264   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1265   RMDir "$INSTDIR\share\locale\ru"
1266   Delete "$INSTDIR\share\locale\sr\LC_MESSAGES\libgpg-error.mo"
1267   RMDir "$INSTDIR\share\locale\sr\LC_MESSAGES"
1268   RMDir "$INSTDIR\share\locale\sr"
1269   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\libgpg-error.mo"
1270   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1271   RMDir "$INSTDIR\share\locale\sv"
1272   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\libgpg-error.mo"
1273   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1274   RMDir "$INSTDIR\share\locale\uk"
1275   Delete "$INSTDIR\share\locale\vi\LC_MESSAGES\libgpg-error.mo"
1276   RMDir "$INSTDIR\share\locale\vi\LC_MESSAGES"
1277   RMDir "$INSTDIR\share\locale\vi"
1278   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\libgpg-error.mo"
1279   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1280   RMDir "$INSTDIR\share\locale\zh_CN"
1281   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\libgpg-error.mo"
1282   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1283   RMDir "$INSTDIR\share\locale\zh_TW"
1284   RMDir "$INSTDIR\share\locale"
1285 SectionEnd
1286
1287 Section "-un.gnupg"
1288   Delete "$INSTDIR\bin\gpg.exe"
1289   Delete "$INSTDIR\bin\gpgv.exe"
1290   Delete "$INSTDIR\bin\gpgsm.exe"
1291   Delete "$INSTDIR\bin\gpg-agent.exe"
1292   Delete "$INSTDIR\bin\scdaemon.exe"
1293   Delete "$INSTDIR\bin\dirmngr.exe"
1294   Delete "$INSTDIR\bin\gpgconf.exe"
1295   Delete "$INSTDIR\bin\gpg-connect-agent.exe"
1296   Delete "$INSTDIR\bin\gpgtar.exe"
1297   Delete "$INSTDIR\bin\gpg-preset-passphrase.exe"
1298   Delete "$INSTDIR\bin\gpg-wks-client.exe"
1299
1300   Delete "$INSTDIR\share\gnupg\sks-keyservers.netCA.pem"
1301   Delete "$INSTDIR\share\gnupg\dirmngr-conf.skel"
1302   Delete "$INSTDIR\share\gnupg\distsigkey.gpg"
1303   Delete "$INSTDIR\share\gnupg\gpg-conf.skel"
1304   RMDir  "$INSTDIR\share\gnupg"
1305
1306   Delete "$INSTDIR\share\locale\ca\LC_MESSAGES\gnupg2.mo"
1307   RMDir "$INSTDIR\share\locale\ca\LC_MESSAGES"
1308   RMDir "$INSTDIR\share\locale\ca"
1309   Delete "$INSTDIR\share\locale\cs\LC_MESSAGES\gnupg2.mo"
1310   RMDir "$INSTDIR\share\locale\cs\LC_MESSAGES"
1311   RMDir "$INSTDIR\share\locale\cs"
1312   Delete "$INSTDIR\share\locale\da\LC_MESSAGES\gnupg2.mo"
1313   RMDir "$INSTDIR\share\locale\da\LC_MESSAGES"
1314   RMDir "$INSTDIR\share\locale\da"
1315   Delete "$INSTDIR\share\locale\de\LC_MESSAGES\gnupg2.mo"
1316   RMDir "$INSTDIR\share\locale\de\LC_MESSAGES"
1317   RMDir "$INSTDIR\share\locale\de"
1318   Delete "$INSTDIR\share\locale\el\LC_MESSAGES\gnupg2.mo"
1319   RMDir "$INSTDIR\share\locale\el\LC_MESSAGES"
1320   RMDir "$INSTDIR\share\locale\el"
1321   Delete "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES\gnupg2.mo"
1322   RMDir "$INSTDIR\share\locale\en@boldquot\LC_MESSAGES"
1323   RMDir "$INSTDIR\share\locale\en@boldquot"
1324   Delete "$INSTDIR\share\locale\en@quot\LC_MESSAGES\gnupg2.mo"
1325   RMDir "$INSTDIR\share\locale\en@quot\LC_MESSAGES"
1326   RMDir "$INSTDIR\share\locale\en@quot"
1327   Delete "$INSTDIR\share\locale\eo\LC_MESSAGES\gnupg2.mo"
1328   RMDir "$INSTDIR\share\locale\eo\LC_MESSAGES"
1329   RMDir "$INSTDIR\share\locale\eo"
1330   Delete "$INSTDIR\share\locale\es\LC_MESSAGES\gnupg2.mo"
1331   RMDir "$INSTDIR\share\locale\es\LC_MESSAGES"
1332   RMDir "$INSTDIR\share\locale\es"
1333   Delete "$INSTDIR\share\locale\et\LC_MESSAGES\gnupg2.mo"
1334   RMDir "$INSTDIR\share\locale\et\LC_MESSAGES"
1335   RMDir "$INSTDIR\share\locale\et"
1336   Delete "$INSTDIR\share\locale\fi\LC_MESSAGES\gnupg2.mo"
1337   RMDir "$INSTDIR\share\locale\fi\LC_MESSAGES"
1338   RMDir "$INSTDIR\share\locale\fi"
1339   Delete "$INSTDIR\share\locale\fr\LC_MESSAGES\gnupg2.mo"
1340   RMDir "$INSTDIR\share\locale\fr\LC_MESSAGES"
1341   RMDir "$INSTDIR\share\locale\fr"
1342   Delete "$INSTDIR\share\locale\gl\LC_MESSAGES\gnupg2.mo"
1343   RMDir "$INSTDIR\share\locale\gl\LC_MESSAGES"
1344   RMDir "$INSTDIR\share\locale\gl"
1345   Delete "$INSTDIR\share\locale\hu\LC_MESSAGES\gnupg2.mo"
1346   RMDir "$INSTDIR\share\locale\hu\LC_MESSAGES"
1347   RMDir "$INSTDIR\share\locale\hu"
1348   Delete "$INSTDIR\share\locale\id\LC_MESSAGES\gnupg2.mo"
1349   RMDir "$INSTDIR\share\locale\id\LC_MESSAGES"
1350   RMDir "$INSTDIR\share\locale\id"
1351   Delete "$INSTDIR\share\locale\it\LC_MESSAGES\gnupg2.mo"
1352   RMDir "$INSTDIR\share\locale\it\LC_MESSAGES"
1353   RMDir "$INSTDIR\share\locale\it"
1354   Delete "$INSTDIR\share\locale\ja\LC_MESSAGES\gnupg2.mo"
1355   RMDir "$INSTDIR\share\locale\ja\LC_MESSAGES"
1356   RMDir "$INSTDIR\share\locale\ja"
1357   Delete "$INSTDIR\share\locale\nb\LC_MESSAGES\gnupg2.mo"
1358   RMDir "$INSTDIR\share\locale\nb\LC_MESSAGES"
1359   RMDir "$INSTDIR\share\locale\nb"
1360   Delete "$INSTDIR\share\locale\pl\LC_MESSAGES\gnupg2.mo"
1361   RMDir "$INSTDIR\share\locale\pl\LC_MESSAGES"
1362   RMDir "$INSTDIR\share\locale\pl"
1363   Delete "$INSTDIR\share\locale\pt\LC_MESSAGES\gnupg2.mo"
1364   RMDir "$INSTDIR\share\locale\pt\LC_MESSAGES"
1365   RMDir "$INSTDIR\share\locale\pt"
1366   Delete "$INSTDIR\share\locale\ro\LC_MESSAGES\gnupg2.mo"
1367   RMDir "$INSTDIR\share\locale\ro\LC_MESSAGES"
1368   RMDir "$INSTDIR\share\locale\ro"
1369   Delete "$INSTDIR\share\locale\ru\LC_MESSAGES\gnupg2.mo"
1370   RMDir "$INSTDIR\share\locale\ru\LC_MESSAGES"
1371   RMDir "$INSTDIR\share\locale\ru"
1372   Delete "$INSTDIR\share\locale\sk\LC_MESSAGES\gnupg2.mo"
1373   RMDir "$INSTDIR\share\locale\sk\LC_MESSAGES"
1374   RMDir "$INSTDIR\share\locale\sk"
1375   Delete "$INSTDIR\share\locale\sv\LC_MESSAGES\gnupg2.mo"
1376   RMDir "$INSTDIR\share\locale\sv\LC_MESSAGES"
1377   RMDir "$INSTDIR\share\locale\sv"
1378   Delete "$INSTDIR\share\locale\tr\LC_MESSAGES\gnupg2.mo"
1379   RMDir "$INSTDIR\share\locale\tr\LC_MESSAGES"
1380   RMDir "$INSTDIR\share\locale\tr"
1381   Delete "$INSTDIR\share\locale\uk\LC_MESSAGES\gnupg2.mo"
1382   RMDir "$INSTDIR\share\locale\uk\LC_MESSAGES"
1383   RMDir "$INSTDIR\share\locale\uk"
1384   Delete "$INSTDIR\share\locale\zh_CN\LC_MESSAGES\gnupg2.mo"
1385   RMDir "$INSTDIR\share\locale\zh_CN\LC_MESSAGES"
1386   RMDir "$INSTDIR\share\locale\zh_CN"
1387   Delete "$INSTDIR\share\locale\zh_TW\LC_MESSAGES\gnupg2.mo"
1388   RMDir "$INSTDIR\share\locale\zh_TW\LC_MESSAGES"
1389   RMDir "$INSTDIR\share\locale\zh_TW"
1390   RMDir "$INSTDIR\share\locale"
1391 SectionEnd
1392
1393 Section "-un.sqlite"
1394   Delete "$INSTDIR\bin\libsqlite3-0.dll"
1395 SectionEnd
1396
1397 Section "-un.gnupginst"
1398   # Delete standard stuff.
1399   Delete "$INSTDIR\README.txt"
1400
1401   Delete "$INSTDIR\VERSION"
1402
1403   # Remove the bin directory from the PATH
1404   Push "$INSTDIR\bin"
1405   Call un.RemoveFromPath
1406
1407   # Try to remove the top level directories.
1408   RMDir "$INSTDIR\bin"
1409   RMDir "$INSTDIR\lib"
1410   RMDir "$INSTDIR\include"
1411   RMDir "$INSTDIR\share"
1412   RMDir "$INSTDIR\etc"
1413   RMDir "$INSTDIR"
1414
1415   # Clean the registry.
1416   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Install Directory"
1417 SectionEnd
1418
1419
1420 Function .onInit
1421   ;;!define MUI_LANGDLL_ALWAYSSHOW
1422   !insertmacro MUI_LANGDLL_DISPLAY
1423
1424   Call G4wRunOnce
1425
1426   SetOutPath $TEMP
1427 #!ifdef SOURCES
1428 #  File /oname=gpgspltmp.bmp "${TOP_SRCDIR}/doc/logo/gnupg-logo-400px.bmp"
1429 #  # We play the tune only for the soruce installer
1430 #  File /oname=gpgspltmp.wav "${TOP_SRCDIR}/src/gnupg-splash.wav"
1431 #  g4wihelp::playsound $TEMP\gpgspltmp.wav
1432 #  g4wihelp::showsplash 2500 $TEMP\gpgspltmp.bmp
1433
1434 #  Delete $TEMP\gpgspltmp.bmp
1435 #  # Note that we delete gpgspltmp.wav in .onInst{Failed,Success}
1436 #!endif
1437
1438   # We can't use TOP_SRCDIR dir as the name of the file needs to be
1439   # the same while building and running the installer.  Thus we
1440   # generate the file from a template.
1441   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${W32_SRCDIR}/inst-options.ini"
1442
1443   #Call CalcDepends
1444
1445   Var /GLOBAL changed_dir
1446   # Check if the install directory was modified on the command line
1447   StrCmp "$INSTDIR" "$PROGRAMFILES\${INSTALL_DIR}" unmodified 0
1448   # It is modified. Save that value.
1449   StrCpy $changed_dir "$INSTDIR"
1450
1451   # MULITUSER_INIT overwrites directory setting from command line
1452   !insertmacro MULTIUSER_INIT
1453   StrCpy $INSTDIR "$changed_dir"
1454   goto initDone
1455 unmodified:
1456   !insertmacro MULTIUSER_INIT
1457 initDone:
1458 FunctionEnd
1459
1460 Function "un.onInit"
1461   !insertmacro MULTIUSER_UNINIT
1462 FunctionEnd
1463
1464 #Function .onInstFailed
1465 #  Delete $TEMP\gpgspltmp.wav
1466 #FunctionEnd
1467
1468 #Function .onInstSuccess
1469 #  Delete $TEMP\gpgspltmp.wav
1470 #FunctionEnd
1471
1472 #Function .onSelChange
1473 #  Call CalcDepends
1474 #FunctionEnd
1475
1476
1477 # This must be in a central place.  Urgs.
1478
1479 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1480 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gnupg} $(DESC_SEC_gnupg)
1481 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpa}   $(DESC_SEC_gpa)
1482 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_gpgex} $(DESC_SEC_gpgex)
1483 !insertmacro MUI_FUNCTION_DESCRIPTION_END
1484
1485
1486 # This also must be in a central place.  Also Urgs.
1487
1488 !ifdef WITH_GUI
1489 Section "-startmenu"
1490
1491   # Check if the start menu entries where requested.
1492   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1493         "Field 2" "State"
1494   IntCmp $R0 0 no_start_menu
1495
1496 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
1497     CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
1498
1499     SectionGetFlags ${SEC_gpa} $R0
1500     IntOp $R0 $R0 & ${SF_SELECTED}
1501     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_menu
1502     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GPA.lnk" \
1503         "$INSTDIR\bin\launch-gpa.exe" \
1504         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1505   no_gpa_menu:
1506
1507
1508     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG Manual.lnk" \
1509                    "$INSTDIR\share\gnupg\gnupg.html" \
1510                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_manual)
1511
1512     CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \
1513                    "$INSTDIR\README.txt" \
1514                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gnupg_readme)
1515
1516 !insertmacro MUI_STARTMENU_WRITE_END
1517
1518
1519
1520 no_start_menu:
1521
1522
1523   # Check if the desktop entries where requested.
1524   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1525         "Field 3" "State"
1526   IntCmp $R0 0 no_desktop
1527
1528     SectionGetFlags ${SEC_gpa} $R0
1529     IntOp $R0 $R0 & ${SF_SELECTED}
1530     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_desktop
1531     CreateShortCut "$DESKTOP\GPA.lnk" \
1532         "$INSTDIR\bin\launch-gpa.exe" \
1533         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1534   no_gpa_desktop:
1535
1536
1537     CreateShortCut "$DESKTOP\GPA Manual.lnk" \
1538                    "$INSTDIR\share\gpa\gpa.html" \
1539                    "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa_manual)
1540
1541 no_desktop:
1542
1543
1544   # Check if the quick launch bar entries where requested.
1545   !insertmacro MUI_INSTALLOPTIONS_READ $R0 "${W32_SRCDIR}/inst-options.ini" \
1546         "Field 4" "State"
1547   IntCmp $R0 0 no_quick_launch
1548   StrCmp $QUICKLAUNCH $TEMP no_quick_launch
1549
1550     SectionGetFlags ${SEC_gpa} $R0
1551     IntOp $R0 $R0 & ${SF_SELECTED}
1552     IntCmp $R0 ${SF_SELECTED} 0 no_gpa_quicklaunch
1553     CreateShortCut "$QUICKLAUNCH\GPA.lnk" \
1554         "$INSTDIR\bin\launch-gpa.exe" \
1555         "" "" "" SW_SHOWNORMAL "" $(DESC_Menu_gpa)
1556 no_gpa_quicklaunch:
1557
1558
1559 no_quick_launch:
1560
1561
1562 SectionEnd
1563 !endif
1564
1565
1566 #
1567 # Now for the generic parts to end the installation.
1568 #
1569 Var MYTMP
1570
1571 # Last section is a hidden one.
1572 Section
1573   WriteUninstaller "$INSTDIR\gnupg-uninstall.exe"
1574
1575   # Windows Add/Remove Programs support
1576   StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1577   WriteRegExpandStr SHCTX $MYTMP "UninstallString" '"$INSTDIR\gnupg-uninstall.exe"'
1578   WriteRegExpandStr SHCTX $MYTMP "InstallLocation" "$INSTDIR"
1579   WriteRegStr       SHCTX $MYTMP "DisplayName"     "${PRETTY_PACKAGE}"
1580 !ifdef WITH_GUI
1581   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpa.exe,0"
1582 !else
1583   WriteRegStr       SHCTX $MYTMP "DisplayIcon"     "$INSTDIR\bin\gpg.exe,0"
1584 !endif
1585   WriteRegStr       SHCTX $MYTMP "DisplayVersion"  "${VERSION}"
1586   WriteRegStr       SHCTX $MYTMP "Publisher"       "The GnuPG Project"
1587   WriteRegStr       SHCTX $MYTMP "URLInfoAbout"    "https://gnupg.org"
1588   WriteRegDWORD     SHCTX $MYTMP "NoModify"        "1"
1589   WriteRegDWORD     SHCTX $MYTMP "NoRepair"        "1"
1590 SectionEnd
1591
1592 Section Uninstall
1593 !ifdef WITH_GUI
1594   #---------------------------------------------------
1595   # Delete the menu entries and any empty parent menus
1596   #---------------------------------------------------
1597   !insertmacro MUI_STARTMENU_GETFOLDER Application $MYTMP
1598   Delete "$SMPROGRAMS\$MYTMP\GPA.lnk"
1599   Delete "$SMPROGRAMS\$MYTMP\GnuPG Manual.lnk"
1600   Delete "$SMPROGRAMS\$MYTMP\GnuPG README.lnk"
1601   Delete "$SMPROGRAMS\$MYTMP\*.lnk"
1602   StrCpy $MYTMP "$SMPROGRAMS\$MYTMP"
1603   startMenuDeleteLoop:
1604     ClearErrors
1605     RMDir $MYTMP
1606     GetFullPathName $MYTMP "$MYTMP\.."
1607     IfErrors startMenuDeleteLoopDone
1608     StrCmp $MYTMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
1609   startMenuDeleteLoopDone:
1610
1611   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Start Menu Folder"
1612
1613   # Delete Desktop links.
1614   Delete "$DESKTOP\GPA.lnk"
1615   Delete "$DESKTOP\GnuPG Manual.lnk"
1616   Delete "$DESKTOP\GnuPG README.lnk"
1617
1618   # Delete Quick Launch Bar links.
1619   StrCmp $QUICKLAUNCH $TEMP no_quick_launch_uninstall
1620   Delete "$QUICKLAUNCH\GPA.lnk"
1621 no_quick_launch_uninstall:
1622
1623 !endif
1624
1625   Delete "$INSTDIR\gnupg-uninstall.exe"
1626   RMDir "$INSTDIR"
1627
1628   # Clean the registry.
1629   DeleteRegValue SHCTX "Software\GnuPG" "Install Directory"
1630   DeleteRegKey /ifempty SHCTX "Software\GnuPG"
1631   # Remove Windows Add/Remove Programs support.
1632   DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG"
1633 SectionEnd