lyx_mirror/development/Win32/packaging/installer/setup/install.nsh
Richard Kimberly Heck da7d927f4f Windows packaging updates.
The main change here is that we need to delete LyX2.3.exe and
tex2lyx2.3.exe from the install directory, so they are not left
there (from previous, versioned installs).

(cherry picked from commit 0cbde8a834)
2018-09-28 21:56:19 -04:00

167 lines
6.5 KiB
Plaintext

/*
install.nsh
Installation of program files, dictionaries and external components
*/
#--------------------------------
# Program files
Var PythonCompileFile
Var PythonCompileReturn
Section -ProgramFiles SecProgramFiles
# if the $INSTDIR does not contain "LyX" we must add a subfolder to avoid that LyX will e.g.
# be installed directly to C:\programs - the uninstaller will then delete the whole
# C:\programs directory
StrCpy $String $INSTDIR
StrCpy $Search "LyX"
Call StrPoint # function from LyXUtils.nsh
${if} $Pointer == "-1"
StrCpy $INSTDIR "$INSTDIR\${APP_DIR}"
${endif}
!if ${SETUPTYPE} != BUNDLE
# abort the installation if no LaTeX was found but should be used
${if} $PathLaTeX == ""
${andif} $State == "0"
SetOutPath $TEMP # to be able to delete the $INSTDIR
RMDir /r $INSTDIR
Abort
${endif}
!endif # end if != BUNDLE
# Install and register the core LyX files
# The macros are defined in filelists.nsh
# the parameters are COMMAND DIRECTORY that form command '${COMMAND} "${DIRECTORY}files"
# Initializes the plug-ins dir ($PLUGINSDIR) if not already initialized.
# $PLUGINSDIR is automatically deleted when the installer exits.
InitPluginsDir
# Binaries
SetOutPath "$INSTDIR\bin"
!insertmacro FileListLyXBin File "${FILES_LYX}\bin\"
# The 2.3.0 and early 2.3.1 installers used a version suffix
# We need to remove the old binaries if we're installing into the same directory
Delete "$INSTDIR\bin\LyX2.3.exe"
Delete "$INSTDIR\bin\tex2lyx2.3.exe"
!insertmacro FileListQtBin File "${FILES_QT}\bin\"
!insertmacro FileListMSVC File "${FILES_MSVC}\"
!insertmacro FileListNetpbmBin File "${FILES_NETPBM}\"
!insertmacro FileListDTLBin File "${FILES_DTL}\"
!insertmacro FileListRsvg File "${FILES_RSVG}\"
!insertmacro FileListDvipostBin File "${FILES_DVIPOST}\"
!insertmacro FileListPDFViewBin File "${FILES_PDFVIEW}\"
# Qt plugin DLLs
SetOutPath "$INSTDIR\bin\imageformats"
!insertmacro FileListQtImageformats File "${FILES_QT}\plugins\imageformats\"
SetOutPath "$INSTDIR\bin\iconengines"
!insertmacro FileListQtIconengines File "${FILES_QT}\plugins\iconengines\"
SetOutPath "$INSTDIR\bin\platforms"
!insertmacro FileListQtPlatforms File "${FILES_QT}\plugins\platforms\"
# Resources
SetOutPath "$INSTDIR"
# recursively copy all files under Resources
File /r "${FILES_LYX}\Resources"
!if ${SETUPTYPE} == BUNDLE
# extract the MiKTeX installer
File /r "${FILES_LYX}\external"
# install MiKTeX if not already installed
Call InstallMiKTeX # function from LaTeX.nsh
!endif # end if BUNDLE
# Python
SetOutPath "$INSTDIR"
# recursively copy all files under Python
File /r "${FILES_PYTHON}"
# register .py files if necessary
ReadRegStr $0 SHCTX "Software\Classes\Python.File\shell\open\command" ""
${if} $0 == "" # if nothing was found
WriteRegStr SHCTX "Software\Classes\Python.File\shell\open\command" "" '"$INSTDIR\Python\python.exe" "%1" %*'
WriteRegStr SHCTX "Software\Classes\Python.File\DefaultIcon" "" "$INSTDIR\Python\DLLs\py.ico"
WriteRegStr SHCTX "Software\Classes\.py" "" "Python.File"
WriteRegStr SHCTX "Software\Classes\Python.File" "OnlyWithLyX" "Yes${APP_SERIES_KEY}" # special entry to test if they were registered by this LyX version
${endif}
# 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"
File /r "${FILES_IMAGEMAGICK}\"
!insertmacro FileListMSVC File "${FILES_MSVC}\"
# register ImageMagick
WriteRegStr SHCTX "SOFTWARE\ImageMagick\${ImageMagickVersion}\Q:16" "BinPath" "$INSTDIR\imagemagick"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\${ImageMagickVersion}\Q:16" "CoderModulesPath" "$INSTDIR\imagemagick\modules\coders"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\${ImageMagickVersion}\Q:16" "ConfigurePath" "$INSTDIR\imagemagick"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\${ImageMagickVersion}\Q:16" "FilterModulesPath" "$INSTDIR\imagemagick\modules\filters"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\${ImageMagickVersion}\Q:16" "LibPath" "$INSTDIR\imagemagick"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "BinPath" "$INSTDIR\imagemagick"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "CoderModulesPath" "$INSTDIR\imagemagick\modules\coders"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "ConfigurePath" "$INSTDIR\imagemagick"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "FilterModulesPath" "$INSTDIR\imagemagick\modules\filters"
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "LibPath" "$INSTDIR\imagemagick"
WriteRegDWORD SHCTX "SOFTWARE\ImageMagick\Current" "QuantumDepth" 0x00000010
WriteRegStr SHCTX "SOFTWARE\ImageMagick\Current" "Version" "${ImageMagickVersion}"
WriteRegStr SHCTX "SOFTWARE\ImageMagick" "OnlyWithLyX" "Yes${APP_SERIES_KEY}"
# Components of Ghostscript
${if} $GhostscriptPath == ""
SetOutPath "$INSTDIR\ghostscript"
File /r "${FILES_GHOSTSCRIPT}\"
!insertmacro FileListMSVC File "${FILES_MSVC}\"
StrCpy $GhostscriptPath "$INSTDIR\ghostscript\bin"
${endif}
# install eLyXer
SetOutPath "$INSTDIR\Python\Lib"
!insertmacro FileListeLyXer File "${FILES_ELYXER}\"
# install unoconv
SetOutPath "$INSTDIR\Python\Lib"
!insertmacro FileListUnoConv File "${FILES_UNOCONV}\"
# install the LaTeX class files that are delivered with LyX to MiKTeX
${if} $LaTeXInstalled == "MiKTeX"
Call ConfigureMiKTeX # Function from LaTeX.nsh
${endif}
# install the LaTeX class files that are delivered with LyX to TeXLive
${if} $LaTeXInstalled == "TeXLive"
Call ConfigureTeXLive # Function from LaTeX.nsh
${endif}
# download dictionaries and thesaurus
${if} $DictCodes != ""
Call InstallHunspellDictionaries # Function from dictionaries.nsh
${endif}
${if} $ThesCodes != ""
Call InstallThesaurusDictionaries # Function from dictionaries.nsh
${endif}
# finally delete the list of mirrors
Delete "$INSTDIR\Resources\DictionaryMirrors.txt"
# Create uninstaller
WriteUninstaller "$INSTDIR\${SETUP_UNINSTALLER}"
SectionEnd