MSI: Fix possible use of unintialized variable
[gpg4win.git] / src / gpg4win.nsi
1 # gpg4win.nsi - Installer for GnuPG 4 Windows.        -*- coding: latin-1; -*-
2 # Copyright (C) 2005, 2007, 2008 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 !cd "${BUILD_DIR}"
21 !addincludedir "${TOP_SRCDIR}"
22 !addincludedir "${TOP_SRCDIR}/po"
23 !addincludedir "${SRCDIR}"
24 !addplugindir "${BUILD_DIR}"
25 !include "config.nsi"
26
27 # For the "light" version of the package, we explicitely disable some
28 # of the packages right after including config.nsi.
29 !ifdef GPG4WIN_LIGHT
30 !ifdef HAVE_PKG_COMPENDIUM
31 !undef HAVE_PKG_COMPENDIUM
32 !endif
33 !ifdef HAVE_PKG_KLEOPATRA
34 !undef HAVE_PKG_KLEOPATRA
35 !endif
36 !ifdef HAVE_PKG_OXYGEN_ICONS
37 !undef HAVE_PKG_OXYGEN_ICONS
38 !endif
39 !ifdef HAVE_PKG_QTBASE
40 !undef HAVE_PKG_QTBASE
41 !endif
42 !endif
43
44 # For the "vanilla" version of the package, we explicitely disable most
45 # of the packages right after including config.nsi.
46 !ifdef GPG4WIN_VANILLA
47 !ifdef HAVE_PKG_GPGOL
48 !undef HAVE_PKG_GPGOL
49 !endif
50 !ifdef HAVE_PKG_GPGEX
51 !undef HAVE_PKG_GPGEX
52 !endif
53 !ifdef HAVE_PKG_GPA
54 !undef HAVE_PKG_GPA
55 !endif
56 !ifdef HAVE_PKG_LIBGSASL
57 !undef HAVE_PKG_LIBGSASL
58 !endif
59 ;!ifdef HAVE_PKG_LIBTASN1
60 ;!undef HAVE_PKG_LIBTASN1
61 ;!endif
62 ;!ifdef HAVE_PKG_GNUTLS
63 ;!undef HAVE_PKG_GNUTLS
64 ;!endif
65 !ifdef HAVE_PKG_LIBPNG
66 !undef HAVE_PKG_LIBPNG
67 !endif
68 !ifdef HAVE_PKG_PKGCONFIG
69 !undef HAVE_PKG_PKGCONFIG
70 !endif
71 !ifdef HAVE_PKG_GLIB
72 !undef HAVE_PKG_GLIB
73 !endif
74 !ifdef HAVE_PKG_ATK
75 !undef HAVE_PKG_ATK
76 !endif
77 !ifdef HAVE_PKG_EXPAT
78 !undef HAVE_PKG_EXPAT
79 !endif
80 !ifdef HAVE_PKG_FREETYPE
81 !undef HAVE_PKG_FREETYPE
82 !endif
83 !ifdef HAVE_PKG_FONTCONFIG
84 !undef HAVE_PKG_FONTCONFIG
85 !endif
86 !ifdef HAVE_PKG_CAIRO
87 !undef HAVE_PKG_CAIRO
88 !endif
89 !ifdef HAVE_PKG_PANGO
90 !undef HAVE_PKG_PANGO
91 !endif
92 !ifdef HAVE_PKG_GTK_
93 !undef HAVE_PKG_GTK_
94 !endif
95 !ifdef HAVE_PKG_DBUS
96 !undef HAVE_PKG_DBUS
97 !endif
98 !ifdef HAVE_PKG_QTBASE
99 !undef HAVE_PKG_QTBASE
100 !endif
101 !ifdef HAVE_PKG_OXYGEN_ICONS
102 !undef HAVE_PKG_OXYGEN_ICONS
103 !endif
104 !ifdef HAVE_PKG_KLEOPATRA
105 !undef HAVE_PKG_KLEOPATRA
106 !endif
107 !ifdef HAVE_PKG_COMPENDIUM
108 !undef HAVE_PKG_COMPENDIUM
109 !endif
110 !endif
111
112 # Define this early automatically it is only defined after
113 # MUI_LANGUAGE has been called.
114 !define LANG_ENGLISH 1033
115
116 # The package name and version.  PRETTY_PACKAGE is a user visible name
117 # only while PACKAGE is useful for filenames etc.  PROD_VERSION is the
118 # product version and needs to be in the format "MAJ.MIN.MIC.BUILDNR".
119 # NOTE: Please keep the capitalization of PRETTY_PACKAGE_SHORT as it is
120 # used as registry key.
121 !define PACKAGE "${_PACKAGE}"
122 !define PRETTY_PACKAGE "Gpg4win"
123 !define PRETTY_PACKAGE_SHORT "Gpg4win"
124 !define VERSION "${_VERSION}"
125 !define PROD_VERSION "${_BUILD_FILEVERSION}"
126 !define COMPANY "Intevation GmbH"
127 !define COPYRIGHT "Copyright (C) 2017 Intevation GmbH"
128 !define DESCRIPTION "Gpg4win: The GNU Privacy Guard and Tools for Windows"
129
130 !define INSTALL_DIR "Gpg4win"
131
132 !define WELCOME_TITLE_STR "$(T_WelcomeTitleGpg4win)"
133
134 !define ABOUT_STR "$(T_AboutGpg4win) \
135         $\r$\n$\r$\n$\r$\n$_CLICK $\r$\n$\r$\n$\r$\n$\r$\n$\r$\n\
136         $(T_AboutGpg4winVersion) $\r$\n$(T_AboutGpg4winReleaseDate)"
137
138 # The copyright license of the package.  Define only one of these.
139 !define LICENSE_GPL
140
141 # Select the best compression algorithm available.  The dictionary
142 # size is the default (8 MB).
143 !ifndef DISABLE_LZMA
144 !ifndef SOURCES
145 SetCompressor /SOLID lzma
146 # SetCompressorDictSize 8
147 !endif
148 !endif
149
150 # We support user mode installation but prefer system wide
151 !define MULTIUSER_EXECUTIONLEVEL Highest
152 !define MULTIUSER_MUI
153 !define MULTIUSER_INSTALLMODE_COMMANDLINE
154 !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\${PRETTY_PACKAGE_SHORT}"
155 !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME ""
156 !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\${PRETTY_PACKAGE_SHORT}"
157 !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "Install Directory"
158 !define MULTIUSER_INSTALLMODE_INSTDIR "${PRETTY_PACKAGE_SHORT}"
159 !include "MultiUser.nsh"
160 !ifdef DEBUG
161 !undef DEBUG
162 !endif
163
164 # The installation directory.
165 !define ipdir "playground/install/pkgs"
166 !define exipdir "playground/install-ex/pkgs"
167 !define bpdir "playground/build"
168
169 !ifndef GPG4WIN_VANILLA
170 # Claws is a bit special because we installed
171 # it for some time and now remove the old
172 # version we did install during installation
173 # to be part of an update.
174 !include "uninst-claws-mail.nsi"
175 !endif
176
177 # Variables
178 VAR is_minimal
179 VAR with_browser
180 VAR is_update
181
182 # Sections
183 !include "Sections.nsh"
184
185 # We use Memento to remember past installation choices.
186 !include Memento.nsh
187 !define MEMENTO_REGISTRY_ROOT SHCTX
188 !define MEMENTO_REGISTRY_KEY \
189   Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRETTY_PACKAGE_SHORT}
190 # We need to know wether we are installing to 64 bit.
191 !include "x64.nsh"
192
193 # Now include the sections.
194 !define BINARIES
195 !include "inst-sections.nsi"
196
197 # Now include the generic parts.
198 !define HAVE_STARTMENU
199 !include "installer.nsi"
200
201 # The WelcomeTitle is displayed on the first page.
202 LangString T_WelcomeTitleGpg4win ${LANG_ENGLISH} \
203   "Welcome to the installation of Gpg4win"
204
205 # The About string as displayed on the first page.
206 LangString T_AboutGpg4win ${LANG_ENGLISH} \
207  "Gpg4win is an installer package for Windows for EMail and \
208   file encryption using the core component GnuPG for Windows. \
209   Both relevant cryptography standards are supported, OpenPGP \
210   and S/MIME. Gpg4win and the software included with Gpg4win \
211   is Free Software."
212
213 LangString T_AboutGpg4winVersion ${LANG_ENGLISH} \
214  "This is Gpg4win version ${VERSION}"
215
216 LangString T_AboutGpg4winFileVersion ${LANG_ENGLISH} \
217  "file version ${PROD_VERSION}"
218
219 LangString T_AboutGpg4winReleaseDate ${LANG_ENGLISH} \
220  "Release date ${_BUILD_ISODATE}"
221
222 # At long last, include all the translations.
223 !include "../po/catalogs.nsi"
224
225 # Now include the generic parts to end the installation.
226 !include "installer-finish.nsi"