From 8afe26e9a07bf6c778b5444b3c655f81b6066fbc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Tue, 24 Apr 2007 22:08:27 +0000 Subject: [PATCH] More installer infrastructure changes according to Christian's suggestions. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17958 a592a061-630c-0410-9148-cb99ea01b6c8 --- .../installer/LyXWinInstaller/Editors.nsh | 88 --------- .../InstallActions-complete.nsh | 182 ++++++++++++------ .../LyXWinInstaller/InstallActions-small.nsh | 153 +++++++++------ .../LyXWinInstaller/InstallerStructure.odg | Bin 14484 -> 14587 bytes .../LyXWinInstaller/InstallerStructure.pdf | Bin 28358 -> 29071 bytes ...Complete.nsi => LyXInstaller-complete.nsi} | 86 +-------- ...aller-Small.nsi => LyXInstaller-small.nsi} | 86 +-------- ...ler-Update.nsi => LyXInstaller-update.nsi} | 62 +----- .../LyXWinInstaller/MissingPrograms.nsh | 102 +++++++++- .../installer/LyXWinInstaller/Settings.nsh | 85 ++++++++ 10 files changed, 426 insertions(+), 418 deletions(-) delete mode 100644 development/Win32/packaging/installer/LyXWinInstaller/Editors.nsh rename development/Win32/packaging/installer/LyXWinInstaller/{LyX-Installer-Complete.nsi => LyXInstaller-complete.nsi} (75%) rename development/Win32/packaging/installer/LyXWinInstaller/{LyX-Installer-Small.nsi => LyXInstaller-small.nsi} (74%) rename development/Win32/packaging/installer/LyXWinInstaller/{LyX-Installer-Update.nsi => LyXInstaller-update.nsi} (83%) create mode 100644 development/Win32/packaging/installer/LyXWinInstaller/Settings.nsh diff --git a/development/Win32/packaging/installer/LyXWinInstaller/Editors.nsh b/development/Win32/packaging/installer/LyXWinInstaller/Editors.nsh deleted file mode 100644 index 031f74507d..0000000000 --- a/development/Win32/packaging/installer/LyXWinInstaller/Editors.nsh +++ /dev/null @@ -1,88 +0,0 @@ -Function EditorCheck - - ; test if an editor with syntax-highlighting for LaTeX-files is installed - ; (check for jEdit, PSPad, WinShell, ConTEXT, Crimson Editor, Vim, TeXnicCenter, LaTeXEditor, WinEdt, LEd, WinTeX) - StrCpy $EditorPath "" - StrCpy $0 "" - ; check for jEdit - ReadRegStr $EditorPath HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\jEdit_is1" "InstallLocation" - ${if} $EditorPath != "" - StrCpy $EditorPath $EditorPath -1 ; remove "\" from the end of the string - ${endif} - ; check for PSPad - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PSPad editor_is1" "InstallLocation" - ${if} $0 != "" - StrCpy $0 $0 -1 - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for WinShell - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinShell_is1" "InstallLocation" - ${if} $0 != "" - StrCpy $0 $0 -1 - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for ConTEXT - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ConTEXTEditor_is1" "InstallLocation" - ${if} $0 != "" - StrCpy $0 $0 -1 - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for Crimson Editor - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Crimson Editor" "UninstallString" - ${if} $0 != "" - StrCpy $0 $0 -14 ; remove "\uninstall.exe" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for Vim 6.x - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Classes\Applications\gvim.exe\shell\edit\command" "" - ${if} $0 != "" - StrCpy $0 $0 -13 ; remove "gvim.exe "%1"" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for Vim 7.0 - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0" "UninstallString" - ${if} $0 != "" - StrCpy $0 $0 -18 ; remove "\uninstall-gui.exe" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for TeXnicCenter - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TeXnicCenter_is1" "Inno Setup: App Path" - ${if} $0 != "" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for LaTeXEditor - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LaTeX Editor" "InstallLocation" - ${if} $0 != "" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for WinEdt - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinEdt_is1" "InstallLocation" - ${if} $0 != "" - StrCpy $0 $0 -1 - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for LEd - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LEd_is1" "InstallLocation" - ${if} $0 != "" - StrCpy $0 $0 -1 - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - ; check for WinTeX - StrCpy $0 "" - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinTeX XP" "DisplayIcon" - ${if} $0 != "" - StrCpy $0 $0 -11 ; remove "\wintex.exe" - StrCpy $EditorPath "$EditorPath;$0" - ${endif} - -FunctionEnd diff --git a/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-complete.nsh b/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-complete.nsh index a7c02ac324..27eb357ef5 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-complete.nsh +++ b/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-complete.nsh @@ -11,6 +11,87 @@ Section "-Installation actions" SecInstallation File /r "${PRODUCT_SOURCEDIR}\external" ; install MiKTeX if not already installed + Call MiKTeX + + Call Ghostscript + + Call ImageMagick + + Call Aspell + + Call Aiksaurus + + Call PostScript + + Call BibTeX + + ; install the LaTeX class files that are delivered with LyX + ; and enable MiKTeX's automatic package installation + Call ConfigureMiKTeX ; Function from LaTeX.nsh + + ; install Aspell dictionaries + ${if} $LangCode == "nb_NO" + StrCpy $LangCode "no_NO" ; we only have a norwegian dictionary available + ${endif} + Call InstallAspellDictionary ; function from Aspell.nsh + + ; configure LyX + Call ConfigureLyX ; Function from ConfigLyX.nsh + + ; delete unnecessary files + ${if} $DelPythonFiles == "True" + Delete $INSTDIR\bin\python.exe + Delete $INSTDIR\bin\python25.dll + Delete $INSTDIR\bin\Python-License.txt + RMDir /r $INSTDIR\bin\Lib + RMDir /r $INSTDIR\bin\DLLs + ${endif} + RMDir /r $INSTDIR\external + + ; create Uninstaller + WriteUninstaller "${PRODUCT_UNINSTALL_EXE}" + + ; run LyX's configure script + ; create a bat-file to start configure in a console window so that the user see the progress + ; of the configuration and to have a signal when the configuration is ready to start LyX + ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first + ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes + ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"' + ; creates the config files in $PythonPath + ${if} $PythonPath == "" + StrCpy $PythonPath "$INSTDIR\bin" + ${endif} + StrCpy $1 $INSTDIR 2 ; get drive letter + FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w + FileWrite $R1 '$1$\r$\n\ + cd $INSTDIR\Resources\$\r$\n\ + "$PythonPath\python.exe" configure.py' + FileClose $R1 + MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)" + ExecWait '"$INSTDIR\Resources\configLyX.bat"' + Delete "$INSTDIR\Resources\configLyX.bat" + + ; ask to update MiKTeX + ${if} $MiKTeXInstalled == "yes" + MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" IDYES UpdateNow IDNO UpdateLater + UpdateNow: + StrCpy $0 $LaTeXPath -4 ; remove "\bin" + ExecWait '"$LaTeXPath\copystart.exe" "$0\config\update.dat"' ; run MiKTeX's update wizard + UpdateLater: + ${endif} + + ; save MiKTeX's install path to be able to remove LyX's LaTeX-files in the uninstaller + FileOpen $R1 "$INSTDIR\Resources\uninstallPaths.dat" w + FileWrite $R1 '$LaTeXPath' + FileClose $R1 + +SectionEnd + +; ------------------------------------------- + +Function MiKTeX + +; install MiKTeX if not already installed ${if} $LatexPath == "" ; launch MiKTeX's installer MessageBox MB_OK|MB_ICONINFORMATION "$(LatexInfo)" @@ -41,6 +122,12 @@ Section "-Installation actions" SecInstallation ${endif} ; endif $LatexPath != "" ${endif} +FunctionEnd + +; ------------------------------------------- + +Function Ghostscript + ; if GhostScript is not installed ${if} $GhostscriptPath == "" ; register Ghostscript @@ -54,6 +141,12 @@ Section "-Installation actions" SecInstallation RMDir /r ${GhostscriptDir} ${endif} +FunctionEnd + +; ------------------------------------------- + +Function ImageMagick + ; if ImageMagick is not installed ${if} $ImageMagickPath == "" ; register ImageMagick @@ -79,6 +172,12 @@ Section "-Installation actions" SecInstallation RMDir /r ${ImageMagickDir} ${endif} +FunctionEnd + +; ------------------------------------------- + +Function Aspell + ; if Aspell is not installed ${if} $AspellPath == "" ; extract Aspell's program files @@ -99,6 +198,12 @@ Section "-Installation actions" SecInstallation WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Aspell" "UninstallString" "${AspellDir}\${AspellUninstall}" ${endif} +FunctionEnd + +; ------------------------------------------- + +Function Aiksaurus + ; if Aiksaurus is not installed ${if} $AiksaurusPath == "" ; extract Aiksaurus' program files @@ -110,7 +215,13 @@ Section "-Installation actions" SecInstallation ; WriteRegStr HKLM "Software\Aiksaurus" "Data Path" "${AiksaurusDir}" ${endif} - ; if no PostScript viewer is installed +FunctionEnd + +; ------------------------------------------- + +Function PostScript + +; if no PostScript viewer is installed ${if} $PSVPath == "" ${if} $InstallGSview == "true" ; launch installer @@ -125,7 +236,13 @@ Section "-Installation actions" SecInstallation ${endif} ${endif} - ; if no BibTeX editor is installed +FunctionEnd + +; ------------------------------------------- + +Function BibTeX + +; if no BibTeX editor is installed ${if} $BibTeXEditorPath == "" ${if} $InstallJabRef == "true" ; launch installer @@ -142,64 +259,5 @@ Section "-Installation actions" SecInstallation ${endif} ${endif} - ; install the LaTeX class files that are delivered with LyX - ; and enable MiKTeX's automatic package installation - Call ConfigureMiKTeX ; Function from LaTeX.nsh - - ; install Aspell dictionaries - ${if} $LangCode == "nb_NO" - StrCpy $LangCode "no_NO" ; we only have a norwegian dictionary available - ${endif} - Call InstallAspellDictionary ; function from Aspell.nsh - - ; configure LyX - Call ConfigureLyX ; Function from ConfigLyX.nsh - - ; delete unnecessary files - ${if} $DelPythonFiles == "True" - Delete $INSTDIR\bin\python.exe - Delete $INSTDIR\bin\python25.dll - Delete $INSTDIR\bin\Python-License.txt - RMDir /r $INSTDIR\bin\Lib - RMDir /r $INSTDIR\bin\DLLs - ${endif} - RMDir /r $INSTDIR\external - - ; create Uninstaller - WriteUninstaller "${PRODUCT_UNINSTALL_EXE}" - - ; run LyX's configure script - ; create a bat-file to start configure in a console window so that the user see the progress - ; of the configuration and to have a signal when the configuration is ready to start LyX - ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first - ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes - ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"' - ; creates the config files in $PythonPath - ${if} $PythonPath == "" - StrCpy $PythonPath "$INSTDIR\bin" - ${endif} - StrCpy $1 $INSTDIR 2 ; get drive letter - FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w - FileWrite $R1 '$1$\r$\n\ - cd $INSTDIR\Resources\$\r$\n\ - "$PythonPath\python.exe" configure.py' - FileClose $R1 - MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)" - ExecWait '"$INSTDIR\Resources\configLyX.bat"' - Delete "$INSTDIR\Resources\configLyX.bat" - - ; ask to update MiKTeX - ${if} $MiKTeXInstalled == "yes" - MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" IDYES UpdateNow IDNO UpdateLater - UpdateNow: - StrCpy $0 $LaTeXPath -4 ; remove "\bin" - ExecWait '"$LaTeXPath\copystart.exe" "$0\config\update.dat"' ; run MiKTeX's update wizard - UpdateLater: - ${endif} - - ; save MiKTeX's install path to be able to remove LyX's LaTeX-files in the uninstaller - FileOpen $R1 "$INSTDIR\Resources\uninstallPaths.dat" w - FileWrite $R1 '$LaTeXPath' - FileClose $R1 +FunctionEnd -SectionEnd diff --git a/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-small.nsh b/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-small.nsh index 5b332b905c..c9f2c4372e 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-small.nsh +++ b/development/Win32/packaging/installer/LyXWinInstaller/InstallActions-small.nsh @@ -9,6 +9,80 @@ Section "-Installation actions" SecInstallation File /r "${PRODUCT_SOURCEDIR}\etc" File /r "${PRODUCT_SOURCEDIR}\Resources" + Call Ghostscript + + Call ImageMagick + + Call Aspell + + Call Aiksaurus + + ; install the LaTeX class files that are delivered with LyX + ; and enable MiKTeX's automatic package installation + Call ConfigureMiKTeX ; Function from LaTeX.nsh + + ; install Aspell dictionaries + ${if} $LangCode == "nb_NO" + StrCpy $LangCode "no_NO" ; we only have a norwegian dictionary available + ${endif} + Call InstallAspellDictionary ; function from Aspell.nsh + + ; configure LyX + Call ConfigureLyX ; Function from ConfigLyX.nsh + + ; delete unnecessary files + ${if} $DelPythonFiles == "True" + Delete $INSTDIR\bin\python.exe + Delete $INSTDIR\bin\python25.dll + Delete $INSTDIR\bin\Python-License.txt + RMDir /r $INSTDIR\bin\Lib + RMDir /r $INSTDIR\bin\DLLs + ${endif} + RMDir /r $INSTDIR\external + + ; create Uninstaller + WriteUninstaller "${PRODUCT_UNINSTALL_EXE}" + + ; run LyX's configure script + ; create a bat-file to start configure in a console window so that the user see the progress + ; of the configuration and to have a signal when the configuration is ready to start LyX + ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first + ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes + ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"' + ; creates the config files in $PythonPath + ${if} $PythonPath == "" + StrCpy $PythonPath "$INSTDIR\bin" + ${endif} + StrCpy $1 $INSTDIR 2 ; get drive letter + FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w + FileWrite $R1 '$1$\r$\n\ + cd $INSTDIR\Resources\$\r$\n\ + "$PythonPath\python.exe" configure.py' + FileClose $R1 + MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)" + ExecWait '"$INSTDIR\Resources\configLyX.bat"' + Delete "$INSTDIR\Resources\configLyX.bat" + + ; ask to update MiKTeX + ${if} $MiKTeXInstalled == "yes" + MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" IDYES UpdateNow IDNO UpdateLater + UpdateNow: + StrCpy $0 $LaTeXPath -4 ; remove "\bin" + ExecWait '"$LaTeXPath\copystart.exe" "$0\config\update.dat"' ; run MiKTeX's update wizard + UpdateLater: + ${endif} + + ; save MiKTeX's install path to be able to remove LyX's LaTeX-files in the uninstaller + FileOpen $R1 "$INSTDIR\Resources\uninstallPaths.dat" w + FileWrite $R1 '$LaTeXPath' + FileClose $R1 + +SectionEnd + +; ------------------------------------------- + +Function Ghostscript + ; if GhostScript is not installed ${if} $GhostscriptPath == "" ; register Ghostscript @@ -22,6 +96,12 @@ Section "-Installation actions" SecInstallation RMDir /r ${GhostscriptDir} ${endif} +FunctionEnd + +; ------------------------------------------- + +Function ImageMagick + ; if ImageMagick is not installed ${if} $ImageMagickPath == "" ; register ImageMagick @@ -47,6 +127,12 @@ Section "-Installation actions" SecInstallation RMDir /r ${ImageMagickDir} ${endif} +FunctionEnd + +; ------------------------------------------- + +Function Aspell + ; if Aspell is not installed ${if} $AspellPath == "" ; extract Aspell's program files @@ -67,6 +153,12 @@ Section "-Installation actions" SecInstallation WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Aspell" "UninstallString" "${AspellDir}\${AspellUninstall}" ${endif} +FunctionEnd + +; ------------------------------------------- + +Function Aiksaurus + ; if Aiksaurus is not installed ${if} $AiksaurusPath == "" ; extract Aiksaurus' program files @@ -78,64 +170,5 @@ Section "-Installation actions" SecInstallation ; WriteRegStr HKLM "Software\Aiksaurus" "Data Path" "${AiksaurusDir}" ${endif} - ; install the LaTeX class files that are delivered with LyX - ; and enable MiKTeX's automatic package installation - Call ConfigureMiKTeX ; Function from LaTeX.nsh - - ; install Aspell dictionaries - ${if} $LangCode == "nb_NO" - StrCpy $LangCode "no_NO" ; we only have a norwegian dictionary available - ${endif} - Call InstallAspellDictionary ; function from Aspell.nsh - - ; configure LyX - Call ConfigureLyX ; Function from ConfigLyX.nsh - - ; delete unnecessary files - ${if} $DelPythonFiles == "True" - Delete $INSTDIR\bin\python.exe - Delete $INSTDIR\bin\python25.dll - Delete $INSTDIR\bin\Python-License.txt - RMDir /r $INSTDIR\bin\Lib - RMDir /r $INSTDIR\bin\DLLs - ${endif} - RMDir /r $INSTDIR\external - - ; create Uninstaller - WriteUninstaller "${PRODUCT_UNINSTALL_EXE}" - - ; run LyX's configure script - ; create a bat-file to start configure in a console window so that the user see the progress - ; of the configuration and to have a signal when the configuration is ready to start LyX - ; this is important when LyX is installed together with MiKTeX or when LyX is installed for the first - ; time on a computer, because the installation of missing LaTeX-files required by LyX could last minutes - ; a batch file is needed because simply calling ExecWait '"$PythonPath\python.exe" "$INSTDIR\Resources\configure.py"' - ; creates the config files in $PythonPath - ${if} $PythonPath == "" - StrCpy $PythonPath "$INSTDIR\bin" - ${endif} - StrCpy $1 $INSTDIR 2 ; get drive letter - FileOpen $R1 "$INSTDIR\Resources\configLyX.bat" w - FileWrite $R1 '$1$\r$\n\ - cd $INSTDIR\Resources\$\r$\n\ - "$PythonPath\python.exe" configure.py' - FileClose $R1 - MessageBox MB_OK|MB_ICONINFORMATION "$(LatexConfigInfo)" - ExecWait '"$INSTDIR\Resources\configLyX.bat"' - Delete "$INSTDIR\Resources\configLyX.bat" - - ; ask to update MiKTeX - ${if} $MiKTeXInstalled == "yes" - MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" IDYES UpdateNow IDNO UpdateLater - UpdateNow: - StrCpy $0 $LaTeXPath -4 ; remove "\bin" - ExecWait '"$LaTeXPath\copystart.exe" "$0\config\update.dat"' ; run MiKTeX's update wizard - UpdateLater: - ${endif} - - ; save MiKTeX's install path to be able to remove LyX's LaTeX-files in the uninstaller - FileOpen $R1 "$INSTDIR\Resources\uninstallPaths.dat" w - FileWrite $R1 '$LaTeXPath' - FileClose $R1 +FunctionEnd -SectionEnd diff --git a/development/Win32/packaging/installer/LyXWinInstaller/InstallerStructure.odg b/development/Win32/packaging/installer/LyXWinInstaller/InstallerStructure.odg index 44ee6105242e08c937b65e08ab95f84c49501ee4..46afc8e050441853976b7672375f4839fce89969 100644 GIT binary patch delta 10931 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 d|JQg=py$T>`)IP>j{4cQ%@%jJ& delta 10877 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 Y;lu%jV~LMu!H7TLM1qK6{d@NR0I2Nt0{{R3 diff --git a/development/Win32/packaging/installer/LyXWinInstaller/InstallerStructure.pdf b/development/Win32/packaging/installer/LyXWinInstaller/InstallerStructure.pdf index a152f89767fbf5a0ea277ba5f501d1e88bc86fb6..1bc60af6520c42e53a736110fd94292d880eca71 100644 GIT binary patch literal 29071 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 F{U7N%YL5T_ literal 28358 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

e2N<&hfkUD&{{-;( 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 CiA?YS diff --git a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Complete.nsi b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-complete.nsi similarity index 75% rename from development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Complete.nsi rename to development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-complete.nsi index c14e605247..ff499f0670 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Complete.nsi +++ b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-complete.nsi @@ -1,6 +1,6 @@ ; Lyx for Windows, NSIS v2 series installer script -; File LyXWinInstaller.nsi +; File LyXInstaller-complete.nsi ; This file is part of LyX, the document processor. ; http://www.lyx.org/ ; Licence details can be found in the file COPYING or copy at @@ -19,82 +19,30 @@ CRCCheck force ; Make the installer as small as possible. -SetCompressor lzma +;SetCompressor lzma ;-------------------------------- ; You should need to change only these macros... -!define PRODUCT_DIR "D:\LyXPackage1.5" -!define PRODUCT_NAME "LyX" -!define PRODUCT_VERSION "1.5beta2-21-04-2007" -!define PRODUCT_VERSION_SHORT "150svn" -!define PRODUCT_SUBFOLDER "lyx15" -!define PRODUCT_LICENSE_FILE "${PRODUCT_DIR}\License.txt" -!define PRODUCT_SOURCEDIR "${PRODUCT_DIR}\LyX" -!define PRODUCT_EXE "$INSTDIR\bin\lyx.exe" -!define PRODUCT_BAT "$INSTDIR\bin\lyx.bat" -!define PRODUCT_EXT ".lyx" -!define PRODUCT_MIME_TYPE "application/lyx" -!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall.exe" -!define PRODUCT_HELP_LINK "http://www.lyx.org/internet/mailing.php" -!define PRODUCT_ABOUT_URL "http://www.lyx.org/about/" -!define PRODUCT_INFO_URL "http://www.lyx.org/" - -BrandingText "LyXWinInstaller v3.13 - Complete" !define INSTALLER_VERSION "Complete" -!define INSTALLER_EXE "LyXWin150svnComplete-3-13.exe" -!define INSTALLER2_EXE "LyXWin150svnSmall-3-13.exe" ; to check later if this installer version is running at the same time -!define VERSION_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_vert${PRODUCT_VERSION_SHORT}.bmp" - -; Replaced by HKLM or HKCU depending on SetShellVarContext. -!define PRODUCT_ROOT_KEY "SHCTX" - -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\lyx.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX${PRODUCT_VERSION_SHORT}" - -!define ClassFileDir "${PRODUCT_SOURCEDIR}\Resources\tex" - -!define ImageMagickVersion "6.3.3" -!define ImageMagickDir "$INSTDIR\etc\ImageMagick" ; for some odd reason the ImageMagick folder may not be a subfolder of $INSTDIR\bin! -!define GhostscriptDir "$INSTDIR\etc\Ghostscript" -!define GhostscriptVersion "8.56" -!define AiksaurusDir "$APPDATA\Aiksaurus" -!define AiksaurusInstall "external\Aiksaurus" -!define AspellDir "$APPDATA\Aspell" -!define AspellDisplay "Aspell 0.60.4 Data" -!define AspellInstall "external\Aspell" -!define AspellUninstall "Uninstall-AspellData.exe" -!define AspellDictPath "${AspellDir}\Dictionaries" -!define AspellPersonalPath "${AspellDir}\Personal" -!define AspellLocationExact "http://developer.berlios.de/project/showfiles.php?group_id=5117&release_id=9651" -!define AspellLocation "http://developer.berlios.de/projects/lyxwininstall/" +!define INSTALLER2_VERSION "Small" +!define INSTALLER3_VERSION "Update" + +; load the settings +!include "Settings.nsh" + !define GSviewInstall "external\gsv48w32.exe" !define JabRefInstall "external\JabRef-2.2-Setup.exe" !define JabRefVersion "JabRef 2.2" -!define DVIPostFileDir "${PRODUCT_SOURCEDIR}\external\dvipost" -; the following variable is needed for a possible CD-version, see InstallActions.nsh, around line 213 -;!define LaTeXPackagesDir "${PRODUCT_SOURCEDIR}\latex" -!define MiKTeXRepo "ftp://ftp.tu-chemnitz.de/pub/tex/systems/win32/miktex/tm/packages/" -!define MiKTeXConfigFolder "MiKTeX\2.5\miktex\config" !define MiKTeXDeliveredVersion "MiKTeX 2.5" !define MiKTeXInstall "$INSTDIR\external\basic-miktex-2.5.2580.exe" !define PRODUCT_VERSION_OLD "none" ; only here to avoid warning message - variable only used in Update installer version ;-------------------------------- -; Make some of the information above available to NSIS. - -Name "${PRODUCT_NAME}" -OutFile "${INSTALLER_EXE}" -InstallDir "$PROGRAMFILES\${PRODUCT_NAME} ${PRODUCT_VERSION}" - -;-------------------------------- -; Variables +; variables only used in this installer version -Var LatexPath -Var PythonPath Var DelPythonFiles Var GhostscriptPath -Var ImageMagickPath Var AiksaurusPath Var AspellPath Var AspellInstallYes @@ -106,9 +54,6 @@ Var EditorPath Var ImageEditorPath Var BibTeXEditorPath Var JabRefInstalled -Var PathPrefix -Var Answer -Var UserName Var LangName Var LangNameSys Var LangCode @@ -125,16 +70,6 @@ Var MiKTeXPath Var InstallGSview Var InstallJabRef Var CreateFileAssociations -Var CreateDesktopIcon -Var StartmenuFolder -Var ProductRootKey -Var AppPre -Var AppSuff -Var AppPath -Var String -Var Search -Var Pointer -Var UserList Var RunNumber ;-------------------------------- @@ -154,9 +89,6 @@ Var RunNumber ; Functions to check and configure the LaTeX-system !include "LaTeX.nsh" -; Function to check installed LaTeX-editors -!include "Editors.nsh" - ; Function to check if needed programs are missing or not !include "MissingPrograms.nsh" diff --git a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Small.nsi b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-small.nsi similarity index 74% rename from development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Small.nsi rename to development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-small.nsi index c423614292..c149358242 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Small.nsi +++ b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-small.nsi @@ -1,6 +1,6 @@ ; Lyx for Windows, NSIS v2 series installer script -; File LyXWinInstaller.nsi +; File LyXInstaller-small.nsi ; This file is part of LyX, the document processor. ; http://www.lyx.org/ ; Licence details can be found in the file COPYING or copy at @@ -19,77 +19,27 @@ CRCCheck force ; Make the installer as small as possible. -SetCompressor lzma +;SetCompressor lzma ;-------------------------------- ; You should need to change only these macros... -!define PRODUCT_DIR "D:\LyXPackage1.5" -!define PRODUCT_NAME "LyX" -!define PRODUCT_VERSION "1.5beta2-21-04-2007" -!define PRODUCT_VERSION_SHORT "150svn" -!define PRODUCT_SUBFOLDER "lyx15" -!define PRODUCT_LICENSE_FILE "${PRODUCT_DIR}\License.txt" -!define PRODUCT_SOURCEDIR "${PRODUCT_DIR}\LyX" -!define PRODUCT_EXE "$INSTDIR\bin\lyx.exe" -!define PRODUCT_BAT "$INSTDIR\bin\lyx.bat" -!define PRODUCT_EXT ".lyx" -!define PRODUCT_MIME_TYPE "application/lyx" -!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall.exe" -!define PRODUCT_HELP_LINK "http://www.lyx.org/internet/mailing.php" -!define PRODUCT_ABOUT_URL "http://www.lyx.org/about/" -!define PRODUCT_INFO_URL "http://www.lyx.org/" - -BrandingText "LyXWinInstaller v3.13 - Small" !define INSTALLER_VERSION "Small" -!define INSTALLER_EXE "LyXWin150svnSmall-3-13.exe" -!define INSTALLER2_EXE "LyXWin150svnComplete-3-13.exe" ; to check later if this installer version is running at the same time -!define VERSION_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_vert${PRODUCT_VERSION_SHORT}.bmp" - -; Replaced by HKLM or HKCU depending on SetShellVarContext. -!define PRODUCT_ROOT_KEY "SHCTX" - -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\lyx.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX${PRODUCT_VERSION_SHORT}" - -!define ClassFileDir "${PRODUCT_SOURCEDIR}\Resources\tex" - -!define ImageMagickVersion "6.3.3" -!define ImageMagickDir "$INSTDIR\etc\ImageMagick" ; for some odd reason the ImageMagick folder may not be a subfolder of $INSTDIR\bin! -!define GhostscriptDir "$INSTDIR\etc\Ghostscript" -!define GhostscriptVersion "8.56" -!define AiksaurusDir "$APPDATA\Aiksaurus" -!define AiksaurusInstall "external\Aiksaurus" -!define AspellDir "$APPDATA\Aspell" -!define AspellDisplay "Aspell 0.60.4 Data" -!define AspellInstall "external\Aspell" -!define AspellUninstall "Uninstall-AspellData.exe" -!define AspellDictPath "${AspellDir}\Dictionaries" -!define AspellPersonalPath "${AspellDir}\Personal" -!define AspellLocationExact "http://developer.berlios.de/project/showfiles.php?group_id=5117&release_id=9651" -!define AspellLocation "http://developer.berlios.de/projects/lyxwininstall/" -!define JabRefVersion "JabRef not included" -!define DVIPostFileDir "${PRODUCT_SOURCEDIR}\external\dvipost" -!define MiKTeXRepo "ftp://ftp.tu-chemnitz.de/pub/tex/systems/win32/miktex/tm/packages/" -!define MiKTeXConfigFolder "MiKTeX\2.5\miktex\config" -!define MiKTeXDeliveredVersion "MiKTeX not included" ; only here to avoid warning message - variable only used in Complete installer version -!define PRODUCT_VERSION_OLD "none" ; only here to avoid warning message - variable only used in Update installer version +!define INSTALLER2_VERSION "Complete" +!define INSTALLER3_VERSION "Update" -;-------------------------------- -; Make some of the information above available to NSIS. +; load the settings +!include "Settings.nsh" -Name "${PRODUCT_NAME}" -OutFile "${INSTALLER_EXE}" -InstallDir "$PROGRAMFILES\${PRODUCT_NAME} ${PRODUCT_VERSION}" +!define JabRefVersion "JabRef not included" ; only here to avoid warning message - variable only used in Complete installer version +!define MiKTeXDeliveredVersion "MiKTeX not included" ; only here to avoid warning message - variable only used in Complete installer version +!define PRODUCT_VERSION_OLD "none" ; only here to avoid warning message - variable only used in Update installer version ;-------------------------------- -; Variables +; variables only used in this installer version -Var LatexPath -Var PythonPath Var DelPythonFiles Var GhostscriptPath -Var ImageMagickPath Var AiksaurusPath Var AspellPath Var AspellInstallYes @@ -101,9 +51,6 @@ Var EditorPath Var ImageEditorPath Var BibTeXEditorPath Var JabRefInstalled -Var PathPrefix -Var Answer -Var UserName Var LangName Var LangNameSys Var LangCode @@ -117,17 +64,7 @@ Var MiKTeXVersion Var MiKTeXInstalled Var MiKTeXUser Var CreateFileAssociations -Var CreateDesktopIcon -Var StartmenuFolder -Var ProductRootKey -Var AppPre -Var AppSuff -Var AppPath Var State -Var String -Var Search -Var Pointer -Var UserList Var RunNumber ;-------------------------------- @@ -147,9 +84,6 @@ Var RunNumber ; Functions to check and configure the LaTeX-system !include "LaTeX.nsh" -; Function to check installed LaTeX-editors -!include "Editors.nsh" - ; Function to check if needed programs are missing or not !include "MissingPrograms.nsh" diff --git a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Update.nsi b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-update.nsi similarity index 83% rename from development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Update.nsi rename to development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-update.nsi index 4a36b571bc..a028e8a715 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/LyX-Installer-Update.nsi +++ b/development/Win32/packaging/installer/LyXWinInstaller/LyXInstaller-update.nsi @@ -1,6 +1,6 @@ ; Lyx for Windows, NSIS v2 series installer script -; File LyX-Installer-Update.nsi +; File LyXInstaller-update.nsi ; This file is part of LyX, the document processor. ; http://www.lyx.org/ ; Licence details can be found in the file COPYING or copy at @@ -24,65 +24,21 @@ SetCompressor lzma ;-------------------------------- ; You should need to change only these macros... -!define PRODUCT_DIR "D:\LyXPackage1.5" -!define PRODUCT_NAME "LyX" -!define PRODUCT_VERSION "1.5beta2-21-04-2007" -!define PRODUCT_VERSION_SHORT "150svn" -!define PRODUCT_SUBFOLDER "lyx15" -!define PRODUCT_LICENSE_FILE "${PRODUCT_DIR}\License.txt" -!define PRODUCT_SOURCEDIR "${PRODUCT_DIR}\LyX" -!define PRODUCT_EXE "$INSTDIR\bin\lyx.exe" -!define PRODUCT_BAT "$INSTDIR\bin\lyx.bat" -!define PRODUCT_EXT ".lyx" -!define PRODUCT_MIME_TYPE "application/lyx" -!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall${PRODUCT_VERSION}.exe" -!define PRODUCT_HELP_LINK "http://www.lyx.org/internet/mailing.php" -!define PRODUCT_ABOUT_URL "http://www.lyx.org/about/" -!define PRODUCT_INFO_URL "http://www.lyx.org/" - -BrandingText "LyXWinInstaller v3.13 - Update" -!define INSTALLER_VERSION "Small" -!define INSTALLER_EXE "LyXWin150svnUpdate-3-13.exe" -!define INSTALLER2_EXE "LyXWin150svnSmall-3-13.exe" ; to check later if this installer version is running at the same time -!define INSTALLER3_EXE "LyXWin150svnComplete-3-13.exe" ; to check later if this installer version is running at the same time -!define VERSION_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_vert${PRODUCT_VERSION_SHORT}.bmp" - -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\lyx.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX${PRODUCT_VERSION_SHORT}" +!define INSTALLER_VERSION "Update" +!define INSTALLER2_VERSION "Small" +!define INSTALLER3_VERSION "Complete" + +; load the settings +!include "Settings.nsh" + !define PRODUCT_UNINST_KEY_OLD "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX150svn" !define PRODUCT_VERSION_OLD "LyX 1.5svn-15-04-2007" !define PRODUCT_UNINSTALL_EXE_OLD "$INSTDIR\LyXWinUninstall.exe" ;-------------------------------- -; Make some of the information above available to NSIS. +; variables only used in this installer version -Name "${PRODUCT_NAME}" -OutFile "${INSTALLER_EXE}" -InstallDir "$PROGRAMFILES\${PRODUCT_NAME} ${PRODUCT_VERSION}" - -;-------------------------------- -; Variables - -Var LatexPath -Var PythonPath -Var ImageMagickPath -Var PathPrefix -Var Answer -Var UserName -Var CreateDesktopIcon -Var StartmenuFolder -Var ProductRootKey -Var AppPre -Var AppSuff -Var AppPath -Var String -Var Search -Var Pointer -Var UserList Var INSTDIR_NEW -Var FileName -Var OldString -Var NewString ;-------------------------------- ; load some NSIS libraries diff --git a/development/Win32/packaging/installer/LyXWinInstaller/MissingPrograms.nsh b/development/Win32/packaging/installer/LyXWinInstaller/MissingPrograms.nsh index bc0544efb5..8f1a80d576 100644 --- a/development/Win32/packaging/installer/LyXWinInstaller/MissingPrograms.nsh +++ b/development/Win32/packaging/installer/LyXWinInstaller/MissingPrograms.nsh @@ -96,8 +96,8 @@ Function MissingPrograms StrCpy $PSVPath "" ReadRegStr $PSVPath HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\gsview32.exe" "Path" - ; test if an editor with syntax-highlighting for LaTeX-files is installed (function in LyXUtils.nsh) - Call EditorCheck ; function from Editors.nsh + ; test if an editor with syntax-highlighting for LaTeX-files is installed + Call EditorCheck ; test if an image editor is installed (due to LyX's bug 2654 first check for GIMP) StrCpy $ImageEditorPath "" @@ -125,6 +125,8 @@ Function MissingPrograms FunctionEnd +; --------------------------------------- + Function MissingProgramsPage ; generate the installer page - re-read empty page first @@ -159,6 +161,102 @@ Function MissingProgramsPage FunctionEnd +; --------------------------------------- + Function MissingProgramsPage_LeaveFunction + ; this function is needed for the installer page + +FunctionEnd + +; --------------------------------------- + +Function EditorCheck + + ; test if an editor with syntax-highlighting for LaTeX-files is installed + ; (check for jEdit, PSPad, WinShell, ConTEXT, Crimson Editor, Vim, TeXnicCenter, LaTeXEditor, WinEdt, LEd, WinTeX) + StrCpy $EditorPath "" + StrCpy $0 "" + ; check for jEdit + ReadRegStr $EditorPath HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\jEdit_is1" "InstallLocation" + ${if} $EditorPath != "" + StrCpy $EditorPath $EditorPath -1 ; remove "\" from the end of the string + ${endif} + ; check for PSPad + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PSPad editor_is1" "InstallLocation" + ${if} $0 != "" + StrCpy $0 $0 -1 + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for WinShell + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinShell_is1" "InstallLocation" + ${if} $0 != "" + StrCpy $0 $0 -1 + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for ConTEXT + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ConTEXTEditor_is1" "InstallLocation" + ${if} $0 != "" + StrCpy $0 $0 -1 + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for Crimson Editor + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Crimson Editor" "UninstallString" + ${if} $0 != "" + StrCpy $0 $0 -14 ; remove "\uninstall.exe" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for Vim 6.x + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Classes\Applications\gvim.exe\shell\edit\command" "" + ${if} $0 != "" + StrCpy $0 $0 -13 ; remove "gvim.exe "%1"" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for Vim 7.0 + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0" "UninstallString" + ${if} $0 != "" + StrCpy $0 $0 -18 ; remove "\uninstall-gui.exe" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for TeXnicCenter + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\TeXnicCenter_is1" "Inno Setup: App Path" + ${if} $0 != "" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for LaTeXEditor + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LaTeX Editor" "InstallLocation" + ${if} $0 != "" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for WinEdt + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinEdt_is1" "InstallLocation" + ${if} $0 != "" + StrCpy $0 $0 -1 + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for LEd + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LEd_is1" "InstallLocation" + ${if} $0 != "" + StrCpy $0 $0 -1 + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + ; check for WinTeX + StrCpy $0 "" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\WinTeX XP" "DisplayIcon" + ${if} $0 != "" + StrCpy $0 $0 -11 ; remove "\wintex.exe" + StrCpy $EditorPath "$EditorPath;$0" + ${endif} + FunctionEnd + diff --git a/development/Win32/packaging/installer/LyXWinInstaller/Settings.nsh b/development/Win32/packaging/installer/LyXWinInstaller/Settings.nsh new file mode 100644 index 0000000000..508c7ff836 --- /dev/null +++ b/development/Win32/packaging/installer/LyXWinInstaller/Settings.nsh @@ -0,0 +1,85 @@ +; installer settings +; You should need to change only these macros for new releases. + +!define PRODUCT_DIR "D:\LyXPackage1.5" +!define PRODUCT_NAME "LyX" +!define PRODUCT_VERSION "1.5svn-xx-04-2007" +!define PRODUCT_VERSION_SHORT "150svn" +!define PRODUCT_SUBFOLDER "lyx15" +!define PRODUCT_LICENSE_FILE "${PRODUCT_DIR}\License.txt" +!define PRODUCT_SOURCEDIR "${PRODUCT_DIR}\LyX" +!define PRODUCT_EXE "$INSTDIR\bin\lyx.exe" +!define PRODUCT_BAT "$INSTDIR\bin\lyx.bat" +!define PRODUCT_EXT ".lyx" +!define PRODUCT_MIME_TYPE "application/lyx" +!define PRODUCT_UNINSTALL_EXE "$INSTDIR\LyXWinUninstall.exe" +!define PRODUCT_HELP_LINK "http://www.lyx.org/internet/mailing.php" +!define PRODUCT_ABOUT_URL "http://www.lyx.org/about/" +!define PRODUCT_INFO_URL "http://www.lyx.org/" + +BrandingText "LyXWinInstaller v3.14 - ${INSTALLER_VERSION}" + +; to check later if this installer version is running at the same time +!define INSTALLER_EXE "LyXWin${PRODUCT_VERSION_SHORT}${INSTALLER_VERSION}-3-14.exe" +!define INSTALLER2_EXE "LyXWin${PRODUCT_VERSION_SHORT}${INSTALLER2_VERSION}-3-14.exe" +!define INSTALLER3_EXE "LyXWin${PRODUCT_VERSION_SHORT}${INSTALLER3_VERSION}-3-14.exe" +!define VERSION_BITMAP "${PRODUCT_DIR}\icons\lyx_logo_vert${PRODUCT_VERSION_SHORT}.bmp" + +; Replaced by HKLM or HKCU depending on SetShellVarContext. +!define PRODUCT_ROOT_KEY "SHCTX" + +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\lyx.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\LyX${PRODUCT_VERSION_SHORT}" + +!define ClassFileDir "${PRODUCT_SOURCEDIR}\Resources\tex" + +!define ImageMagickVersion "6.3.3" +!define ImageMagickDir "$INSTDIR\etc\ImageMagick" ; for some odd reason the ImageMagick folder may not be a subfolder of $INSTDIR\bin! +!define GhostscriptDir "$INSTDIR\etc\Ghostscript" +!define GhostscriptVersion "8.56" +!define AiksaurusDir "$APPDATA\Aiksaurus" +!define AiksaurusInstall "external\Aiksaurus" +!define AspellDir "$APPDATA\Aspell" +!define AspellDisplay "Aspell 0.60.4 Data" +!define AspellInstall "external\Aspell" +!define AspellUninstall "Uninstall-AspellData.exe" +!define AspellDictPath "${AspellDir}\Dictionaries" +!define AspellPersonalPath "${AspellDir}\Personal" +!define AspellLocationExact "http://developer.berlios.de/project/showfiles.php?group_id=5117&release_id=9651" +!define AspellLocation "http://developer.berlios.de/projects/lyxwininstall/" +!define DVIPostFileDir "${PRODUCT_SOURCEDIR}\external\dvipost" +; the following variable is needed for a possible CD-version +;!define LaTeXPackagesDir "${PRODUCT_SOURCEDIR}\latex" +!define MiKTeXRepo "ftp://ftp.tu-chemnitz.de/pub/tex/systems/win32/miktex/tm/packages/" +!define MiKTeXConfigFolder "MiKTeX\2.5\miktex\config" + +;-------------------------------- +; make some of the information above available to NSIS. + +Name "${PRODUCT_NAME}" +OutFile "${INSTALLER_EXE}" +InstallDir "$PROGRAMFILES\${PRODUCT_NAME} ${PRODUCT_VERSION}" + +; ------------------------------- +; Variables used by all installer versions + +Var LatexPath +Var PythonPath +Var ImageMagickPath +Var PathPrefix +Var Answer +Var UserName +Var CreateDesktopIcon +Var StartmenuFolder +Var ProductRootKey +Var AppPre +Var AppSuff +Var AppPath +Var String +Var Search +Var Pointer +Var UserList +Var FileName +Var OldString +Var NewString + -- 2.39.5