summaryrefslogtreecommitdiff
path: root/Master/tlpkg/bin/install-tl.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/bin/install-tl.nsi')
-rw-r--r--Master/tlpkg/bin/install-tl.nsi193
1 files changed, 193 insertions, 0 deletions
diff --git a/Master/tlpkg/bin/install-tl.nsi b/Master/tlpkg/bin/install-tl.nsi
new file mode 100644
index 00000000000..5bf3f6df5ee
--- /dev/null
+++ b/Master/tlpkg/bin/install-tl.nsi
@@ -0,0 +1,193 @@
+!include nsDialogs.nsh
+!include WinVer.nsh
+; !include LogicLib.nsh ; already loaded by either of the above
+
+!include "FileFunc.nsh"
+
+!macro NSD_SetUserData hwnd data
+ nsDialogs::SetUserData ${hwnd} ${data}
+!macroend
+!define NSD_SetUserData `!insertmacro NSD_SetUserData`
+
+!macro NSD_GetUserData hwnd outvar
+ nsDialogs::GetUserData ${hwnd}
+ Pop ${outvar}
+!macroend
+!define NSD_GetUserData `!insertmacro NSD_GetUserData`
+
+!include tlsubdir.nsh ; generated by tl-update-install-pkg
+
+Name "TeX Live Installer ${YYYYMMDD}"
+OutFile ${INST_TL_NAME}.exe
+
+; ShowInstDetails show
+
+RequestExecutionLevel highest
+
+SetCompressor /SOLID bzip2
+
+; Controls
+Var Dialog
+Var Label
+Var RadioSimple
+Var RadioAdvanced
+Var RadioUnpack
+
+; values
+Var Radio_Value
+Var Radio_Default
+Var Radio_Temp
+Var Is_Admin
+
+Var Admin_warning
+Var Completed_text
+CompletedText $Completed_text
+
+; for local testing:
+Var REPO
+
+ReserveFile isadmin_q.cmd
+
+Page custom tlOptionsPage tlOptionsPageLeave
+Page directory dirPre
+Page instfiles
+
+Function dirPre
+
+ ${If} $Radio_Value != "unpack"
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+DirText "Directory to unpack the TeX Live installer.$\nClick Install to start unpacking."
+
+Function .onInit
+
+ ${If} ${AtMostWin2000}
+ MessageBox MB_OK|MB_ICONSTOP "Windows XP earliest supported version; aborting..."
+ Abort
+ ${EndIf}
+
+ InitPluginsDir
+ StrCpy $INSTDIR $PLUGINSDIR
+
+ File /oname=$PLUGINSDIR\isadmin_q.cmd "isadmin_q.cmd"
+ nsExec::ExecToStack '"cmd" /c "$PLUGINSDIR\isadmin_q.cmd"'
+ Pop $0
+
+ ${If} $0 == 0 ; Admin permissions
+ Push 1
+ Pop $Is_Admin
+ StrCpy $Admin_warning ""
+ #StrCpy $License_button "Continue"
+ ${Else} ; failure or no admin permissions
+ Push 0
+ Pop $Is_Admin
+ StrCpy $Admin_warning "Only single-user install possible.$\r$\nFor an all-users installation, abort now and re-run as administrator."
+ ${EndIf}
+
+ StrCpy $Radio_Default "simple"
+ StrCpy $Radio_Value $Radio_Default
+ StrCpy $Completed_text "Completed"
+
+FunctionEnd
+
+Function Value_to_States
+
+ ${NSD_Uncheck} $RadioSimple
+ ${NSD_Uncheck} $RadioAdvanced
+ ${NSD_Uncheck} $RadioUnpack
+ ${NSD_GetUserData} $RadioSimple $Radio_Temp
+ ${If} $Radio_Temp == $Radio_Value
+ ${NSD_Check} $RadioSimple
+ ${EndIf}
+ ${NSD_GetUserData} $RadioAdvanced $Radio_Temp
+ ${If} $Radio_Temp == $Radio_Value
+ ${NSD_Check} $RadioAdvanced
+ ${EndIf}
+ ${NSD_GetUserData} $RadioUnpack $Radio_Temp
+ ${If} $Radio_Temp == $Radio_Value
+ ${NSD_Check} $RadioUnpack
+ ${EndIf}
+
+FunctionEnd
+
+Function tlOptionsPage
+
+ nsDialogs::Create 1018
+ Pop $Dialog
+
+ ${If} $Dialog == error
+ Abort
+ ${EndIf}
+
+
+ ${NSD_CreateLabel} 0 0 100% 24u $Admin_warning
+ Pop $Label
+
+ ${NSD_CreateRadioButton} 0 35u 100% 9u "Simple install (big)"
+ Pop $RadioSimple
+ ${NSD_SetUserData} $RadioSimple $Radio_Default ; set to "simple" in .onInit
+
+ ${NSD_CreateRadioButton} 0 50u 100% 9u "Custom install"
+ Pop $RadioAdvanced
+ ${NSD_SetUserData} $RadioAdvanced "advanced"
+
+ ${NSD_CreateRadioButton} 0 65u 100% 9u "Unpack only"
+ Pop $RadioUnpack
+ ${NSD_SetUserData} $RadioUnpack "unpack"
+
+ Call Value_to_States
+
+ ${NSD_OnClick} $RadioSimple UpdateRadio
+ ${NSD_OnClick} $RadioAdvanced UpdateRadio
+ ${NSD_OnClick} $RadioUnpack UpdateRadio
+
+ nsDialogs::Show
+
+FunctionEnd
+
+Function tlOptionsPageLeave
+
+ Call Value_to_States
+ ${If} $Radio_Value == "unpack"
+ StrCpy $INSTDIR $TEMP
+ StrCpy $Completed_text "Done unpacking; run install-tl.bat or install-tl-advanced.bat"
+ ${EndIf}
+
+FunctionEnd
+
+Function UpdateRadio
+
+ Pop $1
+ ${NSD_GetUserData} $1 $Radio_Value
+
+FunctionEnd
+
+Section
+
+ ${GetParameters} $REPO
+ ${If} $REPO != ""
+ StrCpy $REPO "-repository $REPO"
+ ${EndIf}
+ ; Detailprint $Radio_Value
+ DetailPrint '-- $REPO --'
+ ${If} $Radio_Value == "unpack"
+ SetOutPath $INSTDIR
+ ${Else}
+ ; nsis uses $PLUGINSDIR for temporary files which will be
+ ; automatically cleared afterwards
+ SetOutPath $PLUGINSDIR
+ ${EndIf}
+ File /r ${INST_TL_NAME}\*.*
+ ; File ${INST_TL_NAME}\install-tl*
+ ${If} $Radio_Value == "advanced"
+ nsExec::Exec '"$INSTDIR\install-tl.bat" -gui perltk $REPO'
+ ; ExecWait '"$INSTDIR\install-tl.bat" -gui perltk $REPO'
+ ${ElseIf} $Radio_Value == "simple"
+ nsExec::Exec '"$INSTDIR\install-tl.bat" $REPO'
+ ; ExecWait '"$INSTDIR\install-tl.bat" $REPO'
+ ${EndIf}
+
+SectionEnd