-/*
+/*
LaTeX.nsh
Handling of LaTeX distributions
Function UpdateMiKTeX
# asks to update MiKTeX
- MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" /SD IDNO IDYES UpdateNow IDNO UpdateLater
- UpdateNow:
- # the update wizard is started by the miktex-update.exe
+ # only for the 2.2.4 installer: force a silent update of MiKTeX then restore
+ # MiKTeX's inernal links
+ # The reason is that MikTeX uses a new package handling system LyX must use
+ # Due to a bug in the old MikTeX package handling the update to the new package
+ # handling might fail and users cannot use LaTeX at all afterwards - they then
+ # would have no other choice than to reinstall MiKTeX
+ # This case is fixed by forcing the restoration of the internal links
+ # There is another issue: the MiKTeX update program needs to be replaced by
+ # the new MiKTeX console. This is a 3-step process.
+ #MessageBox MB_YESNO|MB_ICONINFORMATION "$(MiKTeXInfo)" #/SD IDNO IDYES UpdateNow IDNO UpdateLater
+ #UpdateNow:
+ # graphical update:
+ #MessageBox MB_OK|MB_ICONINFORMATION 'To assure that LyX can create PDF files the MiKTeX update program must be run two times.$\r$\n\
+ # Please click in the MiKTeX update program only on the "Next" button.$\r$\n\
+ # If "Next" is disabled, click on "Cancel" or "Finish".'
+ #${if} $MultiUser.Privileges != "Admin"
+ #${andif} $MultiUser.Privileges != "Power"
+ # # call the non-admin version
+ # nsExec::ExecToLog '"$PathLaTeX\internal\miktex-update.exe"'
+ #${else}
+ # ${if} $MiKTeXUser != "HKCU" # call the admin version
+ # nsExec::ExecToLog '"$PathLaTeX\internal\miktex-update_admin.exe"'
+ # ${else}
+ # nsExec::ExecToLog '"$PathLaTeX\internal\miktex-update.exe"'
+ # ${endif}
+ #${endif}
+ # silent update:
+ MessageBox MB_OK|MB_ICONINFORMATION "MiKTeX must be updated to assure that LyX can create PDF files.$\r$\n\
+ This update can take several minutes, depending on your Internet speed.$\r$\n\
+ Please do not close the LyX installer until it is finished!" /SD IDOK
${if} $MultiUser.Privileges != "Admin"
${andif} $MultiUser.Privileges != "Power"
# call the non-admin version
- ExecWait '"$PathLaTeX\internal\miktex-update.exe"'
+ # the order of the different commands is important!
+ ${if} $Is64bit == "true"
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update=miktex-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--install=miktex-console-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--uninstall=miktex-mpm-bin-x64-2.9"'
+ ${else}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update=miktex-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--install=miktex-console-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--uninstall=miktex-mpm-bin-2.9"'
+ ${endif}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update"'
+ ${else}
+ ${if} $MiKTeXUser != "HKCU" # call the admin version
+ # the order of the different commands is important!
+ ${if} $Is64bit == "true"
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--update=miktex-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--install=miktex-console-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--uninstall=miktex-mpm-bin-x64-2.9"'
+ ${else}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--update=miktex-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--install=miktex-console-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--uninstall=miktex-mpm-bin-2.9"'
+ ${endif}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--admin" "--update"'
+ ${else}
+ ${if} $Is64bit == "true"
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update=miktex-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--install=miktex-console-bin-x64-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--uninstall=miktex-mpm-bin-x64-2.9"'
+ ${else}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update=miktex-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--install=miktex-console-bin-2.9"'
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--uninstall=miktex-mpm-bin-2.9"'
+ ${endif}
+ nsExec::ExecToLog '"$PathLaTeX\mpm.exe" "--update"'
+ ${endif}
+ ${endif}
+ # restore possibly broken internal MiKTeX links after the update
+ # suggested by the MikTeX maintainer: https://github.com/MiKTeX/miktex/issues/82
+ ${if} $MultiUser.Privileges != "Admin"
+ ${andif} $MultiUser.Privileges != "Power"
+ # call the non-admin version
+ nsExec::ExecToLog '"$PathLaTeX\initexmf.exe" "--mklinks" "--force"'
${else}
${if} $MiKTeXUser != "HKCU" # call the admin version
- ExecWait '"$PathLaTeX\internal\miktex-update_admin.exe"'
+ nsExec::ExecToLog '"$PathLaTeX\initexmf.exe" "--admin" "--mklinks" "--force"'
${else}
- ExecWait '"$PathLaTeX\internal\miktex-update.exe"'
+ nsExec::ExecToLog '"$PathLaTeX\initexmf.exe" "--mklinks" "--force"'
${endif}
${endif}
- UpdateLater:
+ #UpdateLater:
FunctionEnd
-