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