]> git.lyx.org Git - lyx.git/blob - development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-small.nsi
installer updates
[lyx.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 JabRefVersionVar
61 Var LatexPath
62 Var MiKTeXInstalled
63 Var MiKTeXVersionVar
64 Var PythonPath
65 Var Answer
66 Var AppPre
67 Var AppSuff
68 Var AppPath
69 Var CreateDesktopIcon
70 Var CreateFileAssociations
71 Var DictCode
72 Var FileName
73 Var LangCode
74 Var LangCodeSys
75 Var LangName
76 Var LangNameSys
77 Var NewString
78 Var OldString
79 Var PathPrefix
80 Var Pointer
81 Var ProductRootKey
82 Var RunNumber
83 Var StartmenuFolder
84 Var String
85 Var Search
86 Var UserList
87 Var UserName
88
89 #--------------------------------
90 # load some NSIS libraries
91 !include "MUI.nsh"
92 !include "LogicLib.nsh"
93 !include "FileFunc.nsh"
94 !include "StrFunc.nsh"
95
96 # Set of various macros and functions
97 !include "LyXUtils.nsh"
98
99 # Functions to check and configure the LaTeX-system
100 !include "LaTeX.nsh"
101
102 # Function to check if needed programs are missing or not
103 !include "MissingPrograms.nsh"
104
105 # Function for page to manually select LaTeX's installation folder
106 !include "LaTeXFolder.nsh"
107
108 # Functions for page to set installer language
109 # and LyX's menu language
110 !include "LanguageSettings.nsh"
111
112 # Function to configure LyX
113 !include "ConfigLyX.nsh"
114
115 # Function for page to install Aspell dictionaries
116 !include "Aspell.nsh"
117
118 #--------------------------------
119 # Remember the installer language
120 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
121 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
122 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
123
124 !define MUI_ABORTWARNING
125 !define MUI_HEADERIMAGE
126 !define MUI_HEADERIMAGE_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_hi.bmp"
127 !define MUI_ICON "${PRODUCT_DIR}\icons\lyx.ico"
128 !define MUI_UNICON "${PRODUCT_DIR}\icons\lyx.ico"
129 !define MUI_WELCOMEFINISHPAGE_BITMAP "${VERSION_BITMAP}"
130
131 # Welcome page
132 !define MUI_WELCOMEPAGE_TEXT "$(WelcomePageText)"
133 !insertmacro MUI_PAGE_WELCOME
134
135 # Show the license.
136 !insertmacro MUI_PAGE_LICENSE "${PRODUCT_LICENSE_FILE}"
137
138 # Specify the installation directory.
139 !insertmacro MUI_PAGE_DIRECTORY
140
141 # Specify LyX's menu language.
142 Page custom SelectMenuLanguage SelectMenuLanguage_LeaveFunction
143
144 # Define which components to install.
145 !insertmacro MUI_PAGE_COMPONENTS
146
147 # Specify where to install program shortcuts.
148 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_ROOT_KEY}"
149 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
150 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
151 !define MUI_STARTMENUPAGE_DEFAULTFOLDER "LyX ${PRODUCT_VERSION}"
152 !insertmacro MUI_PAGE_STARTMENU ${PRODUCT_NAME} $StartmenuFolder
153
154 # Select latex.exe manually
155 Page custom LatexFolder LatexFolder_LeaveFunction
156
157 # Check for needed programs
158 Page custom MissingProgramsPage MissingProgramsPage_LeaveFunction
159
160 # Watch the components being installed.
161 !insertmacro MUI_PAGE_INSTFILES
162
163 # Finish page
164 !define MUI_FINISHPAGE_RUN 
165 !define MUI_FINISHPAGE_TEXT "$(FinishPageMessage)"
166 !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
167 !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchProduct"
168 !insertmacro MUI_PAGE_FINISH
169
170 # The uninstaller.
171 !insertmacro MUI_UNPAGE_COMPONENTS
172 !insertmacro MUI_UNPAGE_INSTFILES
173
174 #--------------------------------
175 # Languages
176
177 !insertmacro MUI_LANGUAGE "English" # first language is the default language
178 !insertmacro MUI_LANGUAGE "Danish"
179 !insertmacro MUI_LANGUAGE "Dutch"
180 !insertmacro MUI_LANGUAGE "French"
181 !insertmacro MUI_LANGUAGE "German"
182 !insertmacro MUI_LANGUAGE "Galician"
183 !insertmacro MUI_LANGUAGE "Hungarian"
184 !insertmacro MUI_LANGUAGE "Italian"
185 !insertmacro MUI_LANGUAGE "Norwegian"
186 !insertmacro MUI_LANGUAGE "Polish"
187 !insertmacro MUI_LANGUAGE "Portuguese"
188 !insertmacro MUI_LANGUAGE "Slovak"
189 !insertmacro MUI_LANGUAGE "Spanish"
190 !insertmacro MUI_LANGUAGE "Swedish"
191 !insertmacro MUI_LANGUAGE "Turkish"
192
193 !include "lyx_languages\english.nsh"
194 !include "lyx_languages\danish.nsh"
195 !include "lyx_languages\dutch.nsh"
196 !include "lyx_languages\french.nsh"
197 !include "lyx_languages\german.nsh"
198 !include "lyx_languages\galician.nsh"
199 !include "lyx_languages\hungarian.nsh"
200 !include "lyx_languages\italian.nsh"
201 !include "lyx_languages\norwegian.nsh"
202 !include "lyx_languages\polish.nsh"
203 !include "lyx_languages\portuguese.nsh"
204 !include "lyx_languages\slovak.nsh"
205 !include "lyx_languages\spanish.nsh"
206 !include "lyx_languages\swedish.nsh"
207 !include "lyx_languages\turkish.nsh"
208
209 LicenseData "$(LyXLicenseData)"
210
211 #--------------------------------
212 # Reserve Files
213
214 # These files are inserted before other files in the data block
215 !insertmacro MUI_RESERVEFILE_LANGDLL
216 ReserveFile "io_ui_language.ini"
217 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
218
219 #--------------------------------
220 # Installer sections
221
222 Section "!${PRODUCT_NAME}" SecCore
223   SectionIn RO
224 SectionEnd
225 Section "$(SecAllUsersTitle)" SecAllUsers
226   SetShellVarContext all
227   StrCpy $ProductRootKey "HKLM"
228 SectionEnd
229 Section "$(SecFileAssocTitle)" SecFileAssoc
230   StrCpy $CreateFileAssociations "true"
231 SectionEnd
232 Section "$(SecDesktopTitle)" SecDesktop
233   StrCpy $CreateDesktopIcon "true"
234 SectionEnd
235
236 # Section descriptions
237 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
238 !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(SecCoreDescription)"
239 !insertmacro MUI_DESCRIPTION_TEXT ${SecAllUsers} "$(SecAllUsersDescription)"
240 !insertmacro MUI_DESCRIPTION_TEXT ${SecFileAssoc} "$(SecFileAssocDescription)"
241 !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
242 !insertmacro MUI_FUNCTION_DESCRIPTION_END
243
244 # the installation section
245 !include "InstallActions-small.nsh"
246
247 #--------------------------------
248 # This hook function is called internally by NSIS on installer startup
249 Function .onInit
250
251   # set the installer language to the Windows locale language
252   System::Call "kernel32::GetUserDefaultLangID()i.a"
253
254   # check that the installer is not currently running
255   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
256   Pop $R0
257   ${if} $R0 != "0"
258    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
259    Abort
260   ${endif}
261   FindProcDLL::FindProc "${INSTALLER2_EXE}"
262   ${if} $R0 == "1"
263    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
264    Abort
265   ${endif}
266
267   # check if LyX is already installed
268   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "Publisher"
269   ${if} $0 != ""
270    MessageBox MB_OK|MB_ICONSTOP "$(StillInstalled)"
271    Abort
272   ${endif}
273
274   # default settings
275   # these can be reset to "all" in section SecAllUsers
276   SetShellVarContext current
277   StrCpy $ProductRootKey "HKCU"
278
279   # this can be reset to "true" in section SecDesktop
280   StrCpy $CreateDesktopIcon "false"
281   StrCpy $CreateFileAssociations "false"
282
283   # if the user does *not* have administrator privileges, abort
284   StrCpy $Answer ""
285   StrCpy $UserName ""
286   !insertmacro IsUserAdmin $Answer $UserName # macro from LyXUtils.nsh
287   ${if} $Answer == "yes"
288     !define ENABLE 0x00000001
289     SectionGetFlags ${SecAllUsers} $0
290     IntOp $0 $0 | ${ENABLE}
291     SectionSetFlags ${SecAllUsers} $0
292     !undef ENABLE
293   ${else}
294     MessageBox MB_OK|MB_ICONSTOP "$(NotAdmin)"
295     Abort
296   ${endif}
297
298   # check the LaTeX-system
299   Call LaTeXActions # Function from LaTeX.nsh
300
301   # check which programs are installed or not
302   Call MissingPrograms # function from MissingPrograms.nsh
303
304   # used later in the function LatexFolder
305   StrCpy $State "0"
306
307   ClearErrors
308 FunctionEnd
309
310 #--------------------------------
311
312 Function LaunchProduct
313   Exec ${PRODUCT_BAT}
314 FunctionEnd
315
316 #--------------------------------
317 # The Uninstaller
318
319 !include "Uninstall.nsh"
320
321 # eof