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