]> git.lyx.org Git - lyx.git/blob - development/Win32/packaging/AltInstaller/LyXInstaller-update.nsi
installer updates
[lyx.git] / development / Win32 / packaging / AltInstaller / LyXInstaller-update.nsi
1 # Lyx for Windows, NSIS v2 series installer script
2
3 # File LyXInstaller-update.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
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 "Update"
28 !define INSTALLER2_VERSION "Small"
29 !define INSTALLER3_VERSION "Complete"
30 !define INSTALLER_TYPE "Update"
31
32 # load the settings
33 !include "Settings.nsh"
34
35 #--------------------------------
36 # variables only used in this installer version
37
38 Var INSTDIR_NEW
39 Var INSTDIR_OLD
40 # Variables used by all installer versions
41 Var AspellInstallYes
42 Var AspellBaseReg
43 Var AspellMessage
44 Var ImageMagickPath
45 Var JabRefInstalled
46 Var LatexPath
47 Var MiKTeXInstalled
48 Var PythonPath
49 Var Answer
50 Var AppPre
51 Var AppSuff
52 Var AppPath
53 Var CreateDesktopIcon
54 Var CreateFileAssociations
55 Var DictCode
56 Var FileName
57 Var LangCode
58 Var LangCodeSys
59 Var LangName
60 Var LangNameSys
61 Var NewString
62 Var OldString
63 Var PathPrefix
64 Var Pointer
65 Var ProductRootKey
66 Var RunNumber
67 Var StartmenuFolder
68 Var String
69 Var Search
70 Var UserList
71 Var UserName
72
73 #--------------------------------
74 # load some NSIS libraries
75 !include "MUI.nsh"
76 !include "LogicLib.nsh"
77 !include "FileFunc.nsh"
78 !include "StrFunc.nsh"
79 !include "TextFunc.nsh"
80 !insertmacro LineFind
81 !include "WordFunc.nsh"
82 !insertmacro WordReplace
83
84 # Set of various macros and functions
85 !include "LyXUtils.nsh"
86
87 # list with modified files
88 !include "Updated.nsh"
89
90 # list with deleted files
91 !include "Deleted.nsh"
92
93 # Function for page to install Aspell dictionaries
94 !include "Aspell.nsh"
95
96 #--------------------------------
97
98 # Remember the installer language
99 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
100 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
101 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
102
103 !define MUI_ABORTWARNING
104 !define MUI_HEADERIMAGE
105 !define MUI_HEADERIMAGE_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_hi.bmp"
106 !define MUI_ICON "${PRODUCT_DIR}\icons\lyx.ico"
107 !define MUI_UNICON "${PRODUCT_DIR}\icons\lyx.ico"
108 !define MUI_WELCOMEFINISHPAGE_BITMAP "${VERSION_BITMAP}"
109
110 # Welcome page
111 !define MUI_WELCOMEPAGE_TEXT "$(WelcomePageText)"
112 !insertmacro MUI_PAGE_WELCOME
113
114 # Show the license.
115 !insertmacro MUI_PAGE_LICENSE "${PRODUCT_LICENSE_FILE}"
116
117 # Define which components to install.
118 !insertmacro MUI_PAGE_COMPONENTS
119
120 # Specify where to install program shortcuts.
121 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
122 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
123 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
124 !define MUI_STARTMENUPAGE_DEFAULTFOLDER "LyX ${PRODUCT_VERSION}"
125 !insertmacro MUI_PAGE_STARTMENU ${PRODUCT_NAME} $StartmenuFolder
126
127 # Watch the components being installed.
128 !insertmacro MUI_PAGE_INSTFILES
129
130 # Finish page
131 !define MUI_FINISHPAGE_RUN 
132 !define MUI_FINISHPAGE_TEXT "$(FinishPageMessage)"
133 !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
134 !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchProduct"
135 !insertmacro MUI_PAGE_FINISH
136
137 # The uninstaller.
138 !insertmacro MUI_UNPAGE_COMPONENTS
139 !insertmacro MUI_UNPAGE_INSTFILES
140
141 #--------------------------------
142 # Languages
143
144 !insertmacro MUI_LANGUAGE "English" # first language is the default language
145 !insertmacro MUI_LANGUAGE "Czech"
146 !insertmacro MUI_LANGUAGE "Danish"
147 !insertmacro MUI_LANGUAGE "Dutch"
148 !insertmacro MUI_LANGUAGE "French"
149 !insertmacro MUI_LANGUAGE "German"
150 !insertmacro MUI_LANGUAGE "Galician"
151 !insertmacro MUI_LANGUAGE "Hungarian"
152 !insertmacro MUI_LANGUAGE "Italian"
153 !insertmacro MUI_LANGUAGE "Norwegian"
154 !insertmacro MUI_LANGUAGE "Polish"
155 !insertmacro MUI_LANGUAGE "Portuguese"
156 !insertmacro MUI_LANGUAGE "Slovak"
157 !insertmacro MUI_LANGUAGE "Spanish"
158 !insertmacro MUI_LANGUAGE "Swedish"
159 !insertmacro MUI_LANGUAGE "Turkish"
160
161 !include "lyx_languages\english.nsh"
162 !include "lyx_languages\czech.nsh"
163 !include "lyx_languages\danish.nsh"
164 !include "lyx_languages\dutch.nsh"
165 !include "lyx_languages\french.nsh"
166 !include "lyx_languages\german.nsh"
167 !include "lyx_languages\galician.nsh"
168 !include "lyx_languages\hungarian.nsh"
169 !include "lyx_languages\italian.nsh"
170 !include "lyx_languages\norwegian.nsh"
171 !include "lyx_languages\polish.nsh"
172 !include "lyx_languages\portuguese.nsh"
173 !include "lyx_languages\slovak.nsh"
174 !include "lyx_languages\spanish.nsh"
175 !include "lyx_languages\swedish.nsh"
176 !include "lyx_languages\turkish.nsh"
177
178 LicenseData "$(LyXLicenseData)"
179
180 #--------------------------------
181 # Reserve Files
182
183 # These files are inserted before other files in the data block
184 !insertmacro MUI_RESERVEFILE_LANGDLL
185 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
186
187 #--------------------------------
188 # Installer sections
189
190 Section "!${PRODUCT_NAME}" SecCore
191   SectionIn RO
192 SectionEnd
193 Section "$(SecFileAssocTitle)" SecFileAssoc
194   StrCpy $CreateFileAssociations "true"
195 SectionEnd
196 Section "$(SecDesktopTitle)" SecDesktop
197   StrCpy $CreateDesktopIcon "true"
198 SectionEnd
199
200 # Section descriptions
201 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
202 !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(SecCoreDescription)"
203 !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
204 !insertmacro MUI_FUNCTION_DESCRIPTION_END
205
206 # the installation section
207 !include "InstallActions-update.nsh"
208
209 #--------------------------------
210 # This hook function is called internally by NSIS on installer startup
211 Function .onInit
212
213   # Check that LyX is not currently running
214   FindProcDLL::FindProc "lyx.exe"
215   ${if} $R0 == "1"
216    MessageBox MB_OK|MB_ICONSTOP "$(UnInstallRunning)"
217    Abort
218   ${endif}
219   
220   # set the installer language to the Windows locale language
221   System::Call "kernel32::GetUserDefaultLangID()i.a"
222   
223   # Check that the installer is not currently running
224   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
225   Pop $R0
226   ${if} $R0 != "0"
227    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
228    Abort
229   ${endif}
230   FindProcDLL::FindProc "${INSTALLER2_EXE}"
231   ${if} $R0 == "1"
232    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
233    Abort
234   ${endif}
235   FindProcDLL::FindProc "${INSTALLER3_EXE}"
236   ${if} $R0 == "1"
237    MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
238    Abort
239   ${endif}
240   
241   # check where LyX is installed
242   ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY_OLD}" "DisplayIcon"
243   ${if} $0 != ""
244     SetShellVarContext all
245     StrCpy $ProductRootKey "HKLM"
246   ${endif}
247   ${if} $0 == ""
248    ReadRegStr $0 HKCU "${PRODUCT_UNINST_KEY_OLD}" "DisplayIcon"
249    ${if} $0 != ""
250     SetShellVarContext current
251     StrCpy $ProductRootKey "HKCU"
252    ${endif}
253    ${if} $0 == ""
254     MessageBox MB_OK|MB_ICONSTOP "$(UpdateNotAllowed)"
255     Abort
256    ${endif}
257   ${endif} # end if $0 == 0
258   ${if} $0 != "" # if it is found
259    StrCpy $INSTDIR $0
260    StrCpy $INSTDIR $INSTDIR -12 # delete the string "\bin\lyx.exe" or "\bin\lyx.bat"
261   ${endif}
262   
263   # abort if the user doesn't have administrator privileges but LyX was installed as admin
264   StrCpy $Answer ""
265   StrCpy $UserName ""
266   !insertmacro IsUserAdmin $Answer $UserName # macro from LyXUtils.nsh
267   ${if} $Answer != "yes"
268   ${andif} $ProductRootKey == "HKLM"
269     MessageBox MB_OK|MB_ICONSTOP "$(NotAdmin)"
270     Abort
271   ${endif}
272   
273   # This can be reset to "true" in section SecDesktop.
274   StrCpy $CreateDesktopIcon "false"
275   
276   ClearErrors
277 FunctionEnd
278
279 #--------------------------------
280
281 Function LaunchProduct
282   Exec ${PRODUCT_BAT}
283 FunctionEnd
284
285 #--------------------------------
286 # The Uninstaller
287
288  !include "Uninstall.nsh"
289   
290
291 # eof