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