]> git.lyx.org Git - features.git/blob - development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-small.nsi
installer:
[features.git] / development / Win32 / packaging / installer / LyXWinInstaller / LyXInstaller-small.nsi
1 # Lyx for Windows, NSIS v2 series installer script
2
3 # File LyXInstaller-small.nsi
4 # This file is part of LyX, the document processor.
5 # http://www.lyx.org/
6 # Licence details can be found in the file COPYING or copy at
7 # http://www.lyx.org/about/license.php3
8
9 # Author Uwe Stöhr based on the work of Angus Leeming and Joost Verburg
10 # Full author contact details are available in file CREDITS or copy at
11 # http://www.lyx.org/about/credits.php
12
13 # This script requires NSIS 2.25 and newer
14 # http://nsis.sourceforge.net/
15 #--------------------------------
16
17 # Do a Cyclic Redundancy Check to make sure the installer
18 # was not corrupted by the download.
19 CRCCheck force
20
21 # Make the installer as small as possible.
22 #SetCompressor lzma
23
24 #--------------------------------
25 # You should need to change only these macros...
26
27 !define INSTALLER_VERSION "Small"
28 !define INSTALLER2_VERSION "Complete"
29 !define INSTALLER3_VERSION "Update"
30 !define INSTALLER_TYPE "NotUpdate"
31
32 # load the settings
33 !include "Settings.nsh"
34
35 #--------------------------------
36 # variables only used in this installer version
37
38 Var DelPythonFiles
39 Var GhostscriptPath
40 Var AiksaurusPath
41 Var AspellPath
42 Var Acrobat
43 Var PSVPath
44 Var EditorPath
45 Var ImageEditorPath
46 Var BibTeXEditorPath
47 Var LangEncoding
48 Var LangSysEncoding
49 Var MissedProg
50 Var LaTeXName
51 Var MiKTeXVersion
52 Var MiKTeXUser
53 Var State
54 # Variables used by all installer versions
55 Var AspellInstallYes
56 Var AspellBaseReg
57 Var AspellMessage
58 Var ImageMagickPath
59 Var JabRefInstalled
60 Var LatexPath
61 Var MiKTeXInstalled
62 Var PythonPath
63 Var Answer
64 Var AppPre
65 Var AppSuff
66 Var AppPath
67 Var CreateDesktopIcon
68 Var CreateFileAssociations
69 Var DictCode
70 Var FileName
71 Var LangCode
72 Var LangCodeSys
73 Var LangName
74 Var LangNameSys
75 Var NewString
76 Var OldString
77 Var PathPrefix
78 Var Pointer
79 Var ProductRootKey
80 Var RunNumber
81 Var StartmenuFolder
82 Var String
83 Var Search
84 Var UserList
85 Var UserName
86
87 #--------------------------------
88 # load some NSIS libraries
89 !include "MUI.nsh"
90 !include "LogicLib.nsh"
91 !include "FileFunc.nsh"
92 !include "StrFunc.nsh"
93
94 # Set of various macros and functions
95 !include "LyXUtils.nsh"
96
97 # Functions to check and configure the LaTeX-system
98 !include "LaTeX.nsh"
99
100 # Function to check if needed programs are missing or not
101 !include "MissingPrograms.nsh"
102
103 # Function for page to manually select LaTeX's installation folder
104 !include "LaTeXFolder.nsh"
105
106 # Functions for page to set installer language
107 # and LyX's menu language
108 !include "LanguageSettings.nsh"
109
110 # Function to configure LyX
111 !include "ConfigLyX.nsh"
112
113 # Function for page to install Aspell dictionaries
114 !include "Aspell.nsh"
115
116 #--------------------------------
117 # Remember the installer language
118 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
119 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
120 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
121
122 !define MUI_ABORTWARNING
123 !define MUI_HEADERIMAGE
124 !define MUI_HEADERIMAGE_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_hi.bmp"
125 !define MUI_ICON "${PRODUCT_DIR}\icons\lyx.ico"
126 !define MUI_UNICON "${PRODUCT_DIR}\icons\lyx.ico"
127 !define MUI_WELCOMEFINISHPAGE_BITMAP "${VERSION_BITMAP}"
128
129 # Welcome page
130 !define MUI_WELCOMEPAGE_TEXT "$(WelcomePageText)"
131 !insertmacro MUI_PAGE_WELCOME
132
133 # Show the license.
134 !insertmacro MUI_PAGE_LICENSE "${PRODUCT_LICENSE_FILE}"
135
136 # Specify the installation directory.
137 !insertmacro MUI_PAGE_DIRECTORY
138
139 # Specify LyX's menu language.
140 Page custom SelectMenuLanguage SelectMenuLanguage_LeaveFunction
141
142 # Define which components to install.
143 !insertmacro MUI_PAGE_COMPONENTS
144
145 # Specify where to install program shortcuts.
146 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_ROOT_KEY}"
147 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
148 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
149 !define MUI_STARTMENUPAGE_DEFAULTFOLDER "LyX ${PRODUCT_VERSION}"
150 !insertmacro MUI_PAGE_STARTMENU ${PRODUCT_NAME} $StartmenuFolder
151
152 # Select latex.exe manually
153 Page custom LatexFolder LatexFolder_LeaveFunction
154
155 # Check for needed programs
156 Page custom MissingProgramsPage MissingProgramsPage_LeaveFunction
157
158 # Watch the components being installed.
159 !insertmacro MUI_PAGE_INSTFILES
160
161 # Finish page
162 !define MUI_FINISHPAGE_RUN 
163 !define MUI_FINISHPAGE_TEXT "$(FinishPageMessage)"
164 !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
165 !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchProduct"
166 !insertmacro MUI_PAGE_FINISH
167
168 # The uninstaller.
169 !insertmacro MUI_UNPAGE_COMPONENTS
170 !insertmacro MUI_UNPAGE_INSTFILES
171
172 #--------------------------------
173 # Languages
174
175 !insertmacro MUI_LANGUAGE "English" # first language is the default language
176 !insertmacro MUI_LANGUAGE "Danish"
177 !insertmacro MUI_LANGUAGE "Dutch"
178 !insertmacro MUI_LANGUAGE "French"
179 !insertmacro MUI_LANGUAGE "German"
180 !insertmacro MUI_LANGUAGE "Galician"
181 !insertmacro MUI_LANGUAGE "Hungarian"
182 !insertmacro MUI_LANGUAGE "Italian"
183 !insertmacro MUI_LANGUAGE "Norwegian"
184 !insertmacro MUI_LANGUAGE "Polish"
185 !insertmacro MUI_LANGUAGE "Portuguese"
186 !insertmacro MUI_LANGUAGE "Slovak"
187 !insertmacro MUI_LANGUAGE "Spanish"
188 !insertmacro MUI_LANGUAGE "Swedish"
189 !insertmacro MUI_LANGUAGE "Turkish"
190
191 !include "lyx_languages\english.nsh"
192 !include "lyx_languages\danish.nsh"
193 !include "lyx_languages\dutch.nsh"
194 !include "lyx_languages\french.nsh"
195 !include "lyx_languages\german.nsh"
196 !include "lyx_languages\galician.nsh"
197 !include "lyx_languages\hungarian.nsh"
198 !include "lyx_languages\italian.nsh"
199 !include "lyx_languages\norwegian.nsh"
200 !include "lyx_languages\polish.nsh"
201 !include "lyx_languages\portuguese.nsh"
202 !include "lyx_languages\slovak.nsh"
203 !include "lyx_languages\spanish.nsh"
204 !include "lyx_languages\swedish.nsh"
205 !include "lyx_languages\turkish.nsh"
206
207 LicenseData "$(LyXLicenseData)"
208
209 #--------------------------------
210 # Reserve Files
211
212 # These files are inserted before other files in the data block
213 !insertmacro MUI_RESERVEFILE_LANGDLL
214 ReserveFile "io_ui_language.ini"
215 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
216
217 #--------------------------------
218 # Installer sections
219
220 Section "!${PRODUCT_NAME}" SecCore
221   SectionIn RO
222 SectionEnd
223 Section "$(SecAllUsersTitle)" SecAllUsers
224   SetShellVarContext all
225   StrCpy $ProductRootKey "HKLM"
226 SectionEnd
227 Section "$(SecFileAssocTitle)" SecFileAssoc
228   StrCpy $CreateFileAssociations "true"
229 SectionEnd
230 Section "$(SecDesktopTitle)" SecDesktop
231   StrCpy $CreateDesktopIcon "true"
232 SectionEnd
233
234 # Section descriptions
235 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
236 !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(SecCoreDescription)"
237 !insertmacro MUI_DESCRIPTION_TEXT ${SecAllUsers} "$(SecAllUsersDescription)"
238 !insertmacro MUI_DESCRIPTION_TEXT ${SecFileAssoc} "$(SecFileAssocDescription)"
239 !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
240 !insertmacro MUI_FUNCTION_DESCRIPTION_END
241
242 # the installation section
243 !include "InstallActions-small.nsh"
244
245 #--------------------------------
246 # This hook function is called internally by NSIS on installer startup
247 Function .onInit
248
249   # set the installer language to the Windows locale language
250   System::Call "kernel32::GetUserDefaultLangID()i.a"
251
252   # check that the installer is not currently running
253   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
254   Pop $R0
255   ${if} $R0 != "0"
256    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
257    Abort
258   ${endif}
259   FindProcDLL::FindProc "${INSTALLER2_EXE}"
260   ${if} $R0 == "1"
261    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
262    Abort
263   ${endif}
264
265   # check if LyX is already installed
266   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "Publisher"
267   ${if} $0 != ""
268    MessageBox MB_OK|MB_ICONSTOP "$(StillInstalled)"
269    Abort
270   ${endif}
271
272   # default settings
273   # these can be reset to "all" in section SecAllUsers
274   SetShellVarContext current
275   StrCpy $ProductRootKey "HKCU"
276
277   # this can be reset to "true" in section SecDesktop
278   StrCpy $CreateDesktopIcon "false"
279   StrCpy $CreateFileAssociations "false"
280
281   # if the user does *not* have administrator privileges, abort
282   StrCpy $Answer ""
283   StrCpy $UserName ""
284   !insertmacro IsUserAdmin $Answer $UserName # macro from LyXUtils.nsh
285   ${if} $Answer == "yes"
286     !define ENABLE 0x00000001
287     SectionGetFlags ${SecAllUsers} $0
288     IntOp $0 $0 | ${ENABLE}
289     SectionSetFlags ${SecAllUsers} $0
290     !undef ENABLE
291   ${else}
292     MessageBox MB_OK|MB_ICONSTOP "$(NotAdmin)"
293     Abort
294   ${endif}
295
296   # check the LaTeX-system
297   Call LaTeXActions # Function from LaTeX.nsh
298
299   # check which programs are installed or not
300   Call MissingPrograms # function from MissingPrograms.nsh
301
302   # used later in the function LatexFolder
303   StrCpy $State "0"
304
305   ClearErrors
306 FunctionEnd
307
308 #--------------------------------
309
310 Function LaunchProduct
311   Exec ${PRODUCT_BAT}
312 FunctionEnd
313
314 #--------------------------------
315 # The Uninstaller
316
317 !include "Uninstall.nsh"
318
319 # eof