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