2008-03-30 21:37:53 +00:00
/ *
install.nsh
Installation of program files, dictionaries and external components
* /
#--------------------------------
# Program files
2008-05-01 18:33:36 +00:00
Var PythonCompileFile
Var PythonCompileReturn
2011-02-17 19:14:18 +00:00
Var DownloadResult
2008-05-01 18:33:36 +00:00
2008-03-30 21:37:53 +00:00
Section - ProgramFiles SecProgramFiles
# Install and register the core LyX files
2008-05-01 18:33:36 +00:00
# The macros are defined in filelists.nsh
# the parameters are COMMAND DIRECTORY that form command '${COMMAND} "${DIRECTORY}files"
2008-03-30 21:37:53 +00:00
# Initializes the plug-ins dir ($PLUGINSDIR) if not already initialized.
# $PLUGINSDIR is automatically deleted when the installer exits.
InitPluginsDir
2008-05-01 18:33:36 +00:00
# Binaries
2008-03-30 21:37:53 +00:00
SetOutPath " $INSTDIR \bin "
!insertmacro FileListLyXBin File " ${FILES_LYX}\bin\ "
2011-05-23 04:12:10 +00:00
!insertmacro FileListLyXLauncher File " ${FILES_LYX}\bin\ "
2008-03-30 21:37:53 +00:00
!insertmacro FileListQtBin File " ${FILES_QT}\bin\ "
2008-05-01 18:33:36 +00:00
!insertmacro FileListDll File " ${FILES_DEPS}\bin\ "
2011-02-17 17:02:10 +00:00
!insertmacro FileListMSVC File " ${FILES_MSVC}\ "
2008-03-30 21:37:53 +00:00
!insertmacro FileListNetpbmBin File " ${FILES_NETPBM}\ "
!insertmacro FileListDTLBin File " ${FILES_DTL}\ "
2008-03-31 15:31:09 +00:00
!insertmacro FileListDvipostBin File " ${FILES_DVIPOST}\ "
2008-03-30 21:37:53 +00:00
!insertmacro FileListPDFViewBin File " ${FILES_PDFVIEW}\ "
!insertmacro FileListPDFToolsBin File " ${FILES_PDFTOOLS}\ "
2008-05-01 18:33:36 +00:00
!insertmacro FileListMetaFile2EPS File " ${FILES_METAFILE2EPS}\ "
2008-03-30 21:37:53 +00:00
# Resources
SetOutPath " $INSTDIR "
# recursively copy all files under Resources
File /r " ${FILES_LYX}\Resources "
2011-04-26 21:29:32 +00:00
# Python
SetOutPath " $INSTDIR "
# recursively copy all files under Python
File /r " ${FILES_PYTHON} "
# add MSVC runtimes
2011-05-23 04:12:10 +00:00
#SetOutPath "$INSTDIR\python"
#!insertmacro FileListMSVC File "${FILES_MSVC}\"
2011-04-26 21:29:32 +00:00
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
# Compile all Pyton files to byte-code
# The user using the scripts may not have write access
FileOpen $PythonCompileFile " $INSTDIR \compilepy.py " w
FileWrite $PythonCompileFile " import compileall$\r$\n "
FileWrite $PythonCompileFile " compileall.compile_dir('$INSTDIR\python\Lib')$\r$\n "
FileWrite $PythonCompileFile " compileall.compile_dir('$INSTDIR\Resources')$\r$\n "
FileClose $PythonCompileFile
DetailPrint $ ( TEXT_CONFIGURE_PYTHON)
nsExec :: ExecToLog '"$INSTDIR\python\python.exe" "$INSTDIR\compilepy.py"'
Pop $PythonCompileReturn # Return value
Delete " $INSTDIR \compilepy.py "
# Components of ImageMagick
SetOutPath " $INSTDIR \imagemagick "
2011-05-23 04:12:10 +00:00
File /r " ${FILES_IMAGEMAGICK}\ "
2011-02-17 17:02:10 +00:00
!insertmacro FileListMSVC File " ${FILES_MSVC}\ "
2008-05-01 18:33:36 +00:00
# Components of Ghostscript
SetOutPath " $INSTDIR \ghostscript "
2011-05-23 04:12:10 +00:00
File /r " ${FILES_GHOSTSCRIPT}\ "
2011-02-17 17:02:10 +00:00
!insertmacro FileListMSVC File " ${FILES_MSVC}\ "
2008-05-01 18:33:36 +00:00
2011-05-23 04:12:10 +00:00
!if ${SETUPTYPE} == BUNDLE
# extract the GSview, Jabref and MiKTeX installer
File /r " ${FILES_LYX}\external "
# install MiKTeX if not already installed
Call InstallMiKTeX # function from LaTeX.nsh
# install JabRef if not already installed and the user selected it
# if no BibTeX editor is installed
${if} $PathBibTeXEditor == " "
${if} $InstallJabRef == " true "
# launch installer
MessageBox MB_OK | MB_ICONINFORMATION " $(JabRefInfo) "
ExecWait " $INSTDIR \${JabRefInstall} "
# test if JabRef is now installed
StrCpy $PathBibTeXEditor " "
ReadRegStr $PathBibTeXEditor HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\JabRef ${JabRefVersion} " " UninstallString "
${if} $PathBibTeXEditor == " "
MessageBox MB_OK | MB_ICONEXCLAMATION " $(JabRefError) "
${else}
WriteRegStr HKLM " Software\Microsoft\Windows\CurrentVersion\Uninstall\JabRef ${JabRefVersion} " " OnlyWithLyX " " Yes${APP_SERIES_KEY} " # special entry to tell the uninstaller that it was installed with LyX
${endif}
${endif}
${endif}
!endif
# install eLyXer as Python module
ExecWait '"$INSTDIR\python\python.exe" "$INSTDIR\python\setup.py" install'
# install the LaTeX class files that are delivered with LyX
# and enable MiKTeX's automatic package installation
${if} $LaTeXInstalled == " MiKTeX "
Call ConfigureMiKTeX # Function from LaTeX.nsh
${endif}
2008-03-30 21:37:53 +00:00
# Create uninstaller
WriteUninstaller " $INSTDIR \${SETUP_UNINSTALLER} "
SectionEnd
#--------------------------------
# Support code for file downloads
!macro DOWNLOAD_FILE RET ID FILENAME APPEND
2011-02-17 19:14:18 +00:00
# Downloads a file
2008-03-30 21:37:53 +00:00
# RET = Return value (OK if succesful)
# ID = Name of the download in settings.nsh
# FILENAME = Location to store file
# APPEND = Filename to append to server location in settings.nsh
2009-08-21 22:20:41 +00:00
# Try first time
2011-02-17 19:14:18 +00:00
NSISdl :: download " ${DOWNLOAD_${ID}}${APPEND} " " $PLUGINSDIR \${FILENAME} "
2008-03-30 21:37:53 +00:00
Pop ${RET} # Return value (OK if succesful)
${If} ${RET} != " OK "
2009-08-21 22:20:41 +00:00
# Download failed, try again (usally we get a different mirror)
2011-02-17 19:14:18 +00:00
NSISdl :: download " ${DOWNLOAD_${ID}}${APPEND} " " $PLUGINSDIR \${FILENAME} "
2008-03-30 21:37:53 +00:00
Pop ${RET}
${EndIf}
!macroend
#--------------------------------
# Extenral components
Var PathAllUsers
Var PathCurrentUser
!macro EXTERNAL COMPONENT
# Download/Install the component
2008-05-01 18:33:36 +00:00
${If} $Setup ${COMPONENT} == ${TRUE}
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
StrCpy $Path ${COMPONENT} " " ;A new one will be installed
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!ifndef BUNDLESETUP_${COMPONENT}
!insertmacro EXTERNAL_DOWNLOAD ${COMPONENT}
2008-03-30 21:37:53 +00:00
!else
2008-05-01 18:33:36 +00:00
!insertmacro EXTERNAL_INSTALL ${COMPONENT}
2008-03-30 21:37:53 +00:00
!endif
${EndIf}
!macroend
!macro EXTERNAL_RUNINSTALLER COMPONENT
# Run the installer application of the component that does the actual installation.
install_${COMPONENT} :
ExecWait '"$PLUGINSDIR\${COMPONENT}Setup.exe"'
# Updates the path environment variable of the instaler process to the latest system value
ReadRegStr $PathAllUsers HKLM " SYSTEM\CurrentControlSet\Control\Session Manager\Environment " Path
ReadRegStr $PathCurrentUser HKCU " Environment " Path
System :: Call 'kernel32::SetEnvironmentVariableA(t, t) i("Path", "$PathAllUsers;$PathCurrentUser").'
Call Search${COMPONENT}
${If} $Path ${COMPONENT} == " "
MessageBox MB_YESNO | MB_ICONEXCLAMATION $ ( TEXT_NOTINSTALLED_${COMPONENT} ) IDYES install_${COMPONENT}
${EndIf}
Delete " $PLUGINSDIR \${COMPONENT}Setup.exe "
!macroend
2008-05-01 18:33:36 +00:00
!macro EXTERNAL_DOWNLOAD COMPONENT
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
download_${COMPONENT} :
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!insertmacro DOWNLOAD_FILE $DownloadResult " ${COMPONENT} " " ${COMPONENT}Setup.exe " " "
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
${If} $DownloadResult != " OK "
# Download failed
MessageBox MB_YESNO | MB_ICONEXCLAMATION " $(TEXT_DOWNLOAD_FAILED_${COMPONENT}) ($DownloadResult) " IDYES download_${COMPONENT}
Goto noinstall_${COMPONENT}
${EndIf}
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!insertmacro EXTERNAL_RUNINSTALLER ${COMPONENT}
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
noinstall_${COMPONENT} :
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!macroend
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!macro EXTERNAL_INSTALL COMPONENT
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
# Extract
File /oname = $PLUGINSDIR \ ${COMPONENT} Setup.exe ${FILES_BUNDLE} \ $ { INSTALL_${COMPONENT} }
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!insertmacro EXTERNAL_RUNINSTALLER ${COMPONENT}
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
!macroend
2008-03-30 21:37:53 +00:00
# Sections for external components
2011-05-23 04:12:10 +00:00
#Section -LaTeX ExternalLaTeX
# !insertmacro EXTERNAL LaTeX
#SectionEnd
2008-03-30 21:37:53 +00:00
2011-05-23 04:12:10 +00:00
/ * Function InitExternal
2008-03-30 21:37:53 +00:00
# Get sizes of external component installers
2011-05-23 04:12:10 +00:00
#SectionGetSize ${ExternalLaTeX} $SizeLaTeX
2008-03-30 21:37:53 +00:00
2008-05-01 18:33:36 +00:00
# Add download size
!ifndef BUNDLESETUP_MIKTEX
2008-03-30 21:37:53 +00:00
IntOp $SizeLaTeX $SizeLaTeX + ${SIZE_DOWNLOAD_LATEX}
2008-05-01 18:33:36 +00:00
!endif
2011-05-23 04:12:10 +00:00
FunctionEnd * /