1 # Lyx for Windows, NSIS v2 series installer script
3 # File LyXInstaller-update.nsi
4 # This file is part of LyX, the document processor.
6 # Licence details can be found in the file COPYING or copy at
7 # http://www.lyx.org/about/license.php3
10 # Full author contact details are available in file CREDITS or copy at
11 # http://www.lyx.org/about/credits.php
13 # This script requires NSIS 2.30 or newer
14 # http://nsis.sourceforge.net/
15 #--------------------------------
17 # Do a Cyclic Redundancy Check to make sure the installer
18 # was not corrupted by the download.
21 # Make the installer as small as possible.
24 #--------------------------------
25 # You should need to change only these macros...
27 !define INSTALLER_VERSION "Update"
28 !define INSTALLER2_VERSION "Small"
29 !define INSTALLER3_VERSION "Complete"
30 !define INSTALLER_TYPE "Update"
33 !include "Settings.nsh"
35 #--------------------------------
36 # variables only used in this installer version
40 # Variables used by all installer versions
54 Var CreateFileAssociations
73 #--------------------------------
74 # load some NSIS libraries
76 !include "LogicLib.nsh"
77 !include "FileFunc.nsh"
78 !include "StrFunc.nsh"
79 !include "TextFunc.nsh"
81 !include "WordFunc.nsh"
82 !insertmacro WordReplace
83 !include "registry.nsh"
84 !insertmacro COPY_REGISTRY_KEY
86 # Set of various macros and functions
87 !include "LyXUtils.nsh"
89 # list with modified files
90 !include "Updated.nsh"
92 # list with deleted files
93 !include "Deleted.nsh"
95 # Function for page to install Aspell dictionaries
98 #--------------------------------
100 # Remember the installer language
101 !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
102 !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
103 !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
105 !define MUI_ABORTWARNING
106 !define MUI_HEADERIMAGE
107 !define MUI_HEADERIMAGE_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_hi.bmp"
108 !define MUI_ICON "${PRODUCT_DIR}\icons\lyx.ico"
109 !define MUI_UNICON "${PRODUCT_DIR}\icons\lyx.ico"
110 !define MUI_WELCOMEFINISHPAGE_BITMAP "${VERSION_BITMAP}"
113 !define MUI_WELCOMEPAGE_TEXT "$(WelcomePageText)"
114 !insertmacro MUI_PAGE_WELCOME
117 !insertmacro MUI_PAGE_LICENSE "${PRODUCT_LICENSE_FILE}"
119 # Define which components to install.
120 !insertmacro MUI_PAGE_COMPONENTS
122 # Specify where to install program shortcuts.
123 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
124 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
125 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
126 !define MUI_STARTMENUPAGE_DEFAULTFOLDER "LyX ${PRODUCT_VERSION}"
127 !insertmacro MUI_PAGE_STARTMENU ${PRODUCT_NAME} $StartmenuFolder
129 # Watch the components being installed.
130 !insertmacro MUI_PAGE_INSTFILES
133 !define MUI_FINISHPAGE_RUN
134 !define MUI_FINISHPAGE_TEXT "$(FinishPageMessage)"
135 !define MUI_FINISHPAGE_RUN_TEXT "$(FinishPageRun)"
136 !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchProduct"
137 !insertmacro MUI_PAGE_FINISH
140 !insertmacro MUI_UNPAGE_COMPONENTS
141 !insertmacro MUI_UNPAGE_INSTFILES
143 #--------------------------------
146 !insertmacro MUI_LANGUAGE "English" # first language is the default language
147 !insertmacro MUI_LANGUAGE "Czech"
148 !insertmacro MUI_LANGUAGE "Danish"
149 !insertmacro MUI_LANGUAGE "Dutch"
150 !insertmacro MUI_LANGUAGE "French"
151 !insertmacro MUI_LANGUAGE "German"
152 !insertmacro MUI_LANGUAGE "Galician"
153 !insertmacro MUI_LANGUAGE "Hungarian"
154 !insertmacro MUI_LANGUAGE "Italian"
155 !insertmacro MUI_LANGUAGE "Norwegian"
156 !insertmacro MUI_LANGUAGE "Polish"
157 !insertmacro MUI_LANGUAGE "Portuguese"
158 !insertmacro MUI_LANGUAGE "Slovak"
159 !insertmacro MUI_LANGUAGE "Spanish"
160 !insertmacro MUI_LANGUAGE "Swedish"
161 !insertmacro MUI_LANGUAGE "Turkish"
163 !include "lyx_languages\english.nsh"
164 !include "lyx_languages\czech.nsh"
165 !include "lyx_languages\danish.nsh"
166 !include "lyx_languages\dutch.nsh"
167 !include "lyx_languages\french.nsh"
168 !include "lyx_languages\german.nsh"
169 !include "lyx_languages\galician.nsh"
170 !include "lyx_languages\hungarian.nsh"
171 !include "lyx_languages\italian.nsh"
172 !include "lyx_languages\norwegian.nsh"
173 !include "lyx_languages\polish.nsh"
174 !include "lyx_languages\portuguese.nsh"
175 !include "lyx_languages\slovak.nsh"
176 !include "lyx_languages\spanish.nsh"
177 !include "lyx_languages\swedish.nsh"
178 !include "lyx_languages\turkish.nsh"
180 LicenseData "$(LyXLicenseData)"
182 #--------------------------------
185 # These files are inserted before other files in the data block
186 !insertmacro MUI_RESERVEFILE_LANGDLL
187 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
189 #--------------------------------
192 Section "!${PRODUCT_NAME}" SecCore
195 Section "$(SecFileAssocTitle)" SecFileAssoc
196 StrCpy $CreateFileAssociations "true"
198 Section "$(SecDesktopTitle)" SecDesktop
199 StrCpy $CreateDesktopIcon "true"
202 # Section descriptions
203 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
204 !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(SecCoreDescription)"
205 !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(SecDesktopDescription)"
206 !insertmacro MUI_FUNCTION_DESCRIPTION_END
208 # the installation section
209 !include "InstallActions-update.nsh"
211 #--------------------------------
212 # This hook function is called internally by NSIS on installer startup
215 # Check that LyX is not currently running
216 FindProcDLL::FindProc "lyx.exe"
218 MessageBox MB_OK|MB_ICONSTOP "$(UnInstallRunning)"
222 # set the installer language to the Windows locale language
223 System::Call "kernel32::GetUserDefaultLangID()i.a"
225 # Check that the installer is not currently running
226 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${INSTALLER_EXE}.Instance") i .r1 ?e'
229 MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
232 FindProcDLL::FindProc "${INSTALLER2_EXE}"
234 MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
237 FindProcDLL::FindProc "${INSTALLER3_EXE}"
239 MessageBox MB_OK|MB_ICONSTOP "$(InstallRunning)"
243 # check where LyX is installed
244 ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY_OLD}" "DisplayIcon"
246 SetShellVarContext all
247 StrCpy $ProductRootKey "HKLM"
250 ReadRegStr $0 HKCU "${PRODUCT_UNINST_KEY_OLD}" "DisplayIcon"
252 SetShellVarContext current
253 StrCpy $ProductRootKey "HKCU"
256 MessageBox MB_OK|MB_ICONSTOP "$(UpdateNotAllowed)"
259 ${endif} # end if $0 == 0
260 ${if} $0 != "" # if it is found
262 StrCpy $INSTDIR $INSTDIR -12 # delete the string "\bin\lyx.exe" or "\bin\lyx.bat"
265 # abort if the user doesn't have administrator privileges but LyX was installed as admin
268 !insertmacro IsUserAdmin $Answer $UserName # macro from LyXUtils.nsh
269 ${if} $Answer != "yes"
270 ${andif} $ProductRootKey == "HKLM"
271 MessageBox MB_OK|MB_ICONSTOP "$(NotAdmin)"
275 # This can be reset to "true" in section SecDesktop.
276 StrCpy $CreateDesktopIcon "false"
281 #--------------------------------
283 Function LaunchProduct
287 #--------------------------------
290 !include "Uninstall.nsh"