Add dummy manual packages and a very stupid splash screen
[gpg4win.git] / src / installer.nsi
1 # installer.nsi - Installer for GnuPG 4 Windows.    -*- coding: latin-1; -*-
2 # Copyright (C) 2005 g10 Code GmbH
3
4 # This file is part of GPG4Win.
5
6 # GPG4Win 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 2 of the License, or
9 # (at your option) any later version.
10
11 # GPG4Win 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, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19
20 # No servicable parts beyond this line.  Stay clear :)
21
22 !ifdef REQUIRE_W32_NSIS
23 !ifdef PACKAGE_LIBRARY
24 !include "Library.nsh"
25 !endif
26 !else
27 !macro InstallLib libtype shared install localfile destfile tempbasedir
28   File "${localfile}"
29 !macroend
30 !endif
31
32
33 # We use the modern UI.
34 !include "MUI.nsh"
35
36 # Fix some translations
37
38
39
40 # Set the package name.  Note that this name should not be sufficed
41 #  with the version because this would get displayed in the start menu.
42 Name "${PRETTY_PACKAGE}"
43
44
45 # Set the output filename.
46 OutFile "${PACKAGE}-${VERSION}.exe"
47
48
49 # Set the installation directory.
50 !ifndef INSTALL_DIR
51 !define INSTALL_DIR "${PACKAGE}"
52 !endif
53 InstallDir "$PROGRAMFILES\GNU\${INSTALL_DIR}\\" 
54
55
56 InstallDirRegKey HKLM "Software\GNU\${PRETTY_PACKAGE_SHORT}" \
57         "Install Directory"
58
59
60 # Add version information to the file properties.
61 VIProductVersion "${PROD_VERSION}"
62 VIAddVersionKey "ProductName" "${PRETTY_PACKAGE_SHORT} (${VERSION})"
63 !ifdef LICENSE_GPL
64 VIAddVersionKey "Comments" \
65    "${PRETTY_PACKAGE_SHORT} is Free Software; you can redistribute it  \
66     and/or modify it under the terms of the GNU General Public License.  \
67     You should have received a copy of the GNU General Public License  \
68     along with this software; if not, write to the Free Software  \
69     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,  \
70     MA 02110-1301, USA"
71 !else
72 VIAddVersionKey "Comments" \
73    "${PRETTY_PACKAGE_SHORT} is Free Software; you can redistribute it  \
74     and/or modify it under the terms of the GNU Lesser General Public  \
75     License. You should have received a copy of the GNU Lesser General  \
76     Public License along with this software; if not, write to the Free  \
77     Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,  \
78     MA 02110-1301, USA"
79 !endif
80 VIAddVersionKey "CompanyName" "${COMPANY}"
81 VIAddVersionKey "LegalTrademarks" ""
82 VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
83 VIAddVersionKey "FileDescription" "${DESCRIPTION}"
84 VIAddVersionKey "FileVersion" "${PROD_VERSION}"
85
86
87 # Interface Settings
88
89 # !define MUI_ABORTWARNING
90 !define MUI_FINISHPAGE_NOAUTOCLOSE
91 !define MUI_UNFINISHPAGE_NOAUTOCLOSE
92
93 # Remember the installer language
94
95 #!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
96 #!define MUI_LANGDLL_REGISTRY_KEY "Software\GNU\${PRETTY_PACKAGE_SHORT}" 
97 #!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
98
99
100 # The list of wizard pages.
101
102 !define MUI_WELCOMEPAGE_TEXT "$(T_About)"
103 !insertmacro MUI_PAGE_WELCOME
104
105 !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
106 !define MUI_PAGE_HEADER_SUBTEXT "$(T_GPLHeader)"
107 !define MUI_LICENSEPAGE_TEXT_BOTTOM "$(T_GPLShort)"
108 !insertmacro MUI_PAGE_LICENSE "${TOP_SRCDIR}/COPYING"
109
110 !define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning
111 !insertmacro MUI_PAGE_COMPONENTS
112
113 !ifdef HAVE_STARTMENU
114 Var STARTMENU_FOLDER
115 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
116 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GNU\${PRETTY_PACKAGE_SHORT}"
117 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
118
119 !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
120 !endif
121
122 !insertmacro MUI_PAGE_INSTFILES
123
124 !insertmacro MUI_PAGE_FINISH
125
126
127 # Uninstaller pages.
128
129 !insertmacro MUI_UNPAGE_CONFIRM
130 !insertmacro MUI_UNPAGE_INSTFILES
131
132
133 #Page license
134 #Page components
135 #Page directory
136 #Page instfiles
137 #UninstPage uninstConfirm
138 #UninstPage instfiles
139
140
141 # Language support.  This has to be done after defining the pages, but
142 # before defining the translation strings.  Confusing.
143
144 !insertmacro MUI_LANGUAGE "English"
145 !insertmacro MUI_LANGUAGE "German"
146
147 !insertmacro MUI_RESERVEFILE_LANGDLL
148 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
149 ReserveFile "${NSISDIR}/Plugins/advsplash.dll"
150 ReserveFile "${TOP_SRCDIR}/src/gpg4win-splash.bmp"
151 ReserveFile "${TOP_SRCDIR}/src/gpg4win-splash.wav"
152 ReserveFile "${TOP_SRCDIR}/COPYING"
153
154 # Language support
155
156 # The About string as displayed on the first page.
157 LangString T_About ${LANG_ENGLISH} "${ABOUT_ENGLISH}"
158 LangString T_About ${LANG_GERMAN} "${ABOUT_GERMAN}"
159
160 # Startup page
161 LangString T_GPLHeader ${LANG_ENGLISH} \
162   "This software is licensed under the terms of the GNU General Public \
163    License (GPL) which guarantees your freedom to share and change Free \
164    Software."
165 LangString T_GPLHeader ${LANG_GERMAN}} \
166   "Diese Software ist unter der GNU General Public License \
167    (GPL) lizensiert; dies gibt Ihnen die Freiheit, sie \
168    zu ändern und weiterzugeben."
169
170 LangString T_GPLShort ${LANG_ENGLISH} \
171   "In short: You are allowed to run this software for any purpose. \
172    You may distribute it as long as you give the recipients the same \
173    rights you have received."
174 LangString T_GPLShort ${LANG_GERMAN} \
175   "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
176    einzusetzen.  Sie können die Software weitergeben, sofern Sie dem \
177    Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
178
179
180 # Functions
181
182 # PrintNonAdminWarning
183
184 # Check whether the current user is in the Administrator group or an
185 # OS version without the need for an Administrator is in use.  Print a
186 # warning if this is not the case.
187
188 Function PrintNonAdminWarning
189   ClearErrors
190   UserInfo::GetName
191   IfErrors leave
192   Pop $0
193   UserInfo::GetAccountType
194   Pop $1
195   StrCmp $1 "Admin" leave +1
196   MessageBox MB_OK "$(T_AdminNeeded)"
197
198  leave:
199 FunctionEnd
200
201 # From Function PrintNonAdminWarning
202 LangString T_AdminNeeded ${LANG_ENGLISH} \
203    "Warning: Administrator permissions required for a successful installation"
204 LangString T_AdminNeeded ${LANG_GERMAN} \
205    "Warnung: Für eine erfolgreiche Installation werden \
206     Administratorrechte benötigt."
207
208
209 # FIXME: The GetAfterChar function comes from the NSIS wiki.
210 Function un.GetAfterChar
211   Exch $0 ; chop char
212   Exch
213   Exch $1 ; input string
214   Push $2
215   Push $3
216   StrCpy $2 0
217   loop:
218     IntOp $2 $2 - 1
219     StrCpy $3 $1 1 $2
220     StrCmp $3 "" 0 +3
221       StrCpy $0 ""
222       Goto exit2
223     StrCmp $3 $0 exit1
224     Goto loop
225   exit1:
226     IntOp $2 $2 + 1
227     StrCpy $0 $1 "" $2
228   exit2:
229     Pop $3
230     Pop $2
231     Pop $1
232     Exch $0 ; output
233 FunctionEnd
234
235
236 Function un.SourceDelete
237   Push "/"
238   Call un.GetAfterChar
239   Pop $R0
240   Delete "$INSTDIR\$R0"
241 FunctionEnd