* g10.c (i18n_init) [W32]: Pass registry key to gettext
[gnupg.git] / scripts / w32installer.nsi
1 ; w32installer.nsi                         -*- mode: lisp; coding: latin-1; -*-
2 ;                   W32 Installer script
3 ; Copyright (C) 2005 Free Software Foundation, Inc.
4 ;
5 ; This file is free software; as a special exception the author gives
6 ; unlimited permission to copy and/or distribute it, with or without
7 ; modifications, as long as this notice is preserved.
8 ;
9 ; This program is distributed in the hope that it will be useful, but
10 ; WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
11 ; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13 ;----------------------------------------------------------------------
14 ; This is an installer script used to create a W32 installer "exe" file
15 ; using NSIS.  It is usually used by the mk-w32-dist script.
16 ;----------------------------------------------------------------------
17
18 ; TODO:
19 ; - Display credit for the installer
20 ; - Provide the location of the corresponding source
21 ; - Translate all strings
22
23
24 ; We use the modern UI.
25 !include "MUI.nsh"
26
27 ; -------------
28 ; General stuff
29 ; -------------
30 Name "GNU Privacy Guard"
31
32 OutFile "gnupg-w32cli-${VERSION}.exe"
33
34 InstallDir "$PROGRAMFILES\GNU\GnuPG"
35
36 InstallDirRegKey HKLM "Software\GNU\GnuPG" "Install Directory"
37
38 SetCompressor lzma
39
40
41 VIProductVersion "${PROD_VERSION}"
42 VIAddVersionKey "ProductName" "GNU Privacy Guard (${VERSION})"
43 VIAddVersionKey "Comments" \
44    "GnuPG is Free Software; you can redistribute it and/or modify  \
45     it under the terms of the GNU General Public License. You should  \
46     have received a copy of the GNU General Public License along with  \
47     this software; if not, write to the Free Software Foundation, Inc.,  \
48     59 Temple Place - Suite 330, Boston, MA 02111-1307, USA"
49 VIAddVersionKey "CompanyName" "Free Software Foundation"
50 VIAddVersionKey "LegalTrademarks" ""
51 VIAddVersionKey "LegalCopyright" \
52     "Copyright (C) 2005 Free Software Foundation, Inc."
53 VIAddVersionKey "FileDescription" \
54     "GnuPG: Encryption and digital signature tool"
55 VIAddVersionKey "FileVersion" "${PROD_VERSION}"
56
57
58 ; ------------------
59 ; Interface Settings
60 ; ------------------
61
62 ;;;!define MUI_ABORTWARNING
63 !define MUI_FINISHPAGE_NOAUTOCLOSE
64 !define MUI_UNFINISHPAGE_NOAUTOCLOSE
65
66 ; Remember the installer language
67 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
68 !define MUI_LANGDLL_REGISTRY_KEY "Software\GNU\GnuPG" 
69 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
70
71
72 ; -----
73 ; Pages      
74 ; -----
75
76 !define MUI_WELCOMEPAGE_TEXT "$(T_About)"
77
78 !insertmacro MUI_PAGE_WELCOME
79
80
81 !define MUI_PAGE_HEADER_SUBTEXT \
82   "This software is licensed under the terms of the GNU General Public \
83    License (GPL) which guarantees your freedom to share and change Free \
84    Software."
85
86 !define MUI_LICENSEPAGE_TEXT_BOTTOM \
87   "In short: You are allowed to run this software for any purpose. \
88    You may distribute it as long as you give the recipients the same \
89    rights you have received."
90
91 !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
92
93 !insertmacro MUI_PAGE_LICENSE "COPYING.txt"
94
95 ;;Page custom PageSelectOptions
96
97 !insertmacro MUI_PAGE_COMPONENTS
98
99 !insertmacro MUI_PAGE_DIRECTORY
100 !insertmacro MUI_PAGE_INSTFILES
101
102 !define MUI_FINISHPAGE_SHOWREADME "README.txt"
103 !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)"
104 !define MUI_FINISHPAGE_LINK \
105   "Visit the GnuPG website for latest news and support"
106 !define MUI_FINISHPAGE_LINK_LOCATION "http://www.gnupg.org/"
107 !insertmacro MUI_PAGE_FINISH
108
109   
110 !insertmacro MUI_UNPAGE_CONFIRM
111 !insertmacro MUI_UNPAGE_INSTFILES
112
113
114 ; -----------------
115 ; i18n Declarations
116 ; -----------------
117
118 !insertmacro MUI_LANGUAGE "English"
119 !insertmacro MUI_LANGUAGE "German"
120
121 ; ------------------
122 ; Installer Sections
123 ; ------------------
124
125
126
127 ;InstType "full"
128 ;InstType "minimal"
129
130 !insertmacro MUI_RESERVEFILE_LANGDLL
131 ;;!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
132 ;;ReserveFile "w32inst-opt.ini" 
133 ReserveFile "COPYING.txt"
134
135
136 ;----------------------
137 Section "Base" SecBase
138 ;  SectionIn 1 2 RO
139   SectionIn RO
140
141   SetOutPath "$INSTDIR"
142
143   File "gpg.exe"
144   File "gpgkeys_finger.exe"
145   File "gpgkeys_hkp.exe"
146   File "gpgkeys_http.exe"
147   File "gpgkeys_ldap.exe"
148
149   SetOutPath "$INSTDIR\Doc"
150
151   File "README.txt"
152   File "README.W32"
153   File "COPYING.txt"
154
155   Call InstallIconv
156
157   WriteRegStr HKLM "Software\GNU\GnuPG" "Install Directory" $INSTDIR
158
159   WriteUninstaller "$INSTDIR\Uninstall.exe"
160   
161 SectionEnd ; Section Base
162
163 ;----------------------
164 Section "NLS" SecNLS
165 ;  SectionIn 1
166
167   SetOutPath "$INSTDIR\gnupg.nls"
168
169   File "*.mo"
170
171 SectionEnd ; Section NLS
172
173 ;------------------------
174 Section "Tools" SecTools
175 ;  SectionIn 1
176
177   SetOutPath "$INSTDIR"
178   File "gpgsplit.exe"
179   File "gpgv.exe"
180
181 SectionEnd ; Section Tools
182
183 ;----------------------
184 Section "Documentation" SecDoc
185 ;  SectionIn 1
186
187   SetOutPath "$INSTDIR\Doc"
188
189   File "gnupg.man"
190   File "gpg.man"
191   File "gpgv.man"
192   File "NEWS.txt"
193   File "FAQ.txt"
194
195 SectionEnd ; Section Documentation
196
197
198 ;------------------
199 !ifdef WITH_SOURCE
200 Section "Source" SecSource
201
202   SetOutPath "$INSTDIR\Src"
203
204   ; Note that we include the uncompressed tarball because this allows
205   ; far better compression results for the distribution.  We might
206   ; want to compress it again after installation.
207   File "gnupg-1.4.0.tar"
208
209 SectionEnd ; Section Source
210 !endif
211
212
213 ;------------------
214 Section "Uninstall"
215
216   Delete "$INSTDIR\gpg.exe"
217   Delete "$INSTDIR\gpgkeys_finger.exe"
218   Delete "$INSTDIR\gpgkeys_hkp.exe"
219   Delete "$INSTDIR\gpgkeys_http.exe"
220   Delete "$INSTDIR\gpgkeys_ldap.exe"
221
222   Delete "$INSTDIR\Doc\README.txt"
223   Delete "$INSTDIR\Doc\README.W32"
224   Delete "$INSTDIR\Doc\COPYING.txt"
225
226   Delete "$INSTDIR\iconv.dll"
227
228   Delete "$INSTDIR\gnupg.nls\*.mo"
229
230   Delete "$INSTDIR\gpgsplit.exe"
231   Delete "$INSTDIR\gpgv.exe"
232
233   Delete "$INSTDIR\Doc\gnupg.man"
234   Delete "$INSTDIR\Doc\gpg.man"
235   Delete "$INSTDIR\Doc\gpgv.man"
236   Delete "$INSTDIR\Doc\NEWS.txt"
237   Delete "$INSTDIR\Doc\FAQ.txt"
238
239   Delete "$INSTDIR\Uninstall.exe"
240
241   RMDir "$INSTDIR\Doc"
242   RMDir "$INSTDIR\Src"
243   RMDir "$INSTDIR\gnupg.nls"
244   RMDir "$INSTDIR"
245
246   DeleteRegValue HKLM "Software\GNU\GnuPG" "Install Directory"
247   DeleteRegKey /ifempty HKLM "Software\GNU\GnuPG"
248
249 SectionEnd ; Uninstall
250
251
252 ; ---------
253 ; Functions
254 ; ---------
255
256 Function .onInit
257
258   !insertmacro MUI_LANGDLL_DISPLAY
259
260 ;  !insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS \
261 ;               "${GNUPG_SRCDIR}/scripts/w32inst-opt.ini" "w32inst-opt.ini"
262
263 FunctionEnd 
264
265
266 Function un.onInit
267
268   !insertmacro MUI_UNGETLANGUAGE
269   
270 FunctionEnd
271
272
273 ;;Function PageSelectOptions
274 ;;
275 ;;  ; Setup a default for the langage to install.  Take it form the registry 
276 ;;
277 ;;  !insertmacro MUI_HEADER_TEXT "Install Options" "Languages"
278 ;;  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "w32inst-opt.ini"
279 ;;
280 ;;  ; Save away the language to install
281 ;;
282 ;;FunctionEnd
283 ;;
284
285
286 ; Install iconv.dll if it has not been installed on the system.
287 Function InstallIconv
288
289   ; First delete a iconv DLL already installed in the target directory.
290   ; This is required to detect a meanwhile globally installed dll.
291   Delete "$INSTDIR\iconv.dll"
292   ClearErrors
293   GetDllVersion "iconv.dll" $R0 $R1
294   IfErrors 0 +3
295     DetailPrint "iconv.dll is not installed."
296     goto InstallIconv
297
298   IntOp $R2 $R0 / 0x00010000
299   IntOp $R3 $R0 & 0x0000FFFF
300   IntOp $R4 $R1 / 0x00010000
301   IntOp $R5 $R1 & 0x0000FFFF
302   StrCpy $0 "$R2.$R3.$R4.$R5"
303
304   DetailPrint "iconv.dll version is $0"
305
306   IntCmp $R2 1 0 IconvTooOld
307   IntCmp $R3 9 0 IconvTooOld
308   return
309
310  IconvTooOld:
311     DetailPrint "The installed iconv.dll is too old."
312
313  InstallIconv:
314   SetOutPath "$INSTDIR"
315   File "iconv.dll"
316
317 FunctionEnd
318
319
320 ; ------------
321 ; Descriptions
322 ; ------------
323
324
325 LangString T_About ${LANG_ENGLISH} \
326   "GnuPG is GNU's tool for secure communication and data storage. \
327   It can be used to encrypt data and to create digital signatures. \
328   It includes an advanced key management facility and is compliant \
329   with the proposed OpenPGP Internet standard as described in RFC2440. \
330   \r\n\r\nThis is GnuPG version ${VERSION}"
331 LangString T_About ${LANG_GERMAN} \
332   "GnuPG is das Werzeug aus dem GNU Projekt zur sicheren Kommunikation \
333    sowie zum sicheren Speichern von Daten. \
334    \r\n\r\nThis is GnuPG version ${VERSION}"
335 LangString T_ShowReadme ${LANG_ENGLISH} "Show the README file"
336 LangString T_ShowReadme ${LANG_GERMAN} "Die README Datei anzeigen"
337
338
339 LangString DESC_SecBase ${LANG_ENGLISH} \
340       "The basic files used for the standard OpenPGP protocol"
341 LangString DESC_SecBase ${LANG_GERMAN} \
342       "Die Basis Dateien zur Benutzung des OpenPGP Protokolls"
343
344 Langstring DESC_SecNLS ${LANG_ENGLISH} \
345       "Support for languages other than English"
346 LangString DESC_SecNLS ${LANG_GERMAN} \
347       "Unterstützung für weitere Sprachen neben Englisch"
348
349 LangString DESC_SecTools ${LANG_ENGLISH} \
350       "Extra tools like gpgv and gpgsplit"
351 LangString DESC_SecTools ${LANG_GERMAN} \
352       "Weitere Tools wie gpgv und gpgsplit"
353
354 LangString DESC_SecDoc ${LANG_ENGLISH} \
355       "Manual pages and a FAQ"
356 LangString DESC_SecDoc ${LANG_GERMAN} \
357       "Handbuchseiten und eine FAQ"
358
359 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
360   !insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase)
361   !insertmacro MUI_DESCRIPTION_TEXT ${SecNLS} $(DESC_SecNLS)
362   !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools)
363   !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc)
364 !insertmacro MUI_FUNCTION_DESCRIPTION_END
365