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