summaryrefslogtreecommitdiff
path: root/Master/tlpkg/libexec/install-tl.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/libexec/install-tl.nsi')
-rw-r--r--Master/tlpkg/libexec/install-tl.nsi262
1 files changed, 262 insertions, 0 deletions
diff --git a/Master/tlpkg/libexec/install-tl.nsi b/Master/tlpkg/libexec/install-tl.nsi
new file mode 100644
index 00000000000..d03b4330f37
--- /dev/null
+++ b/Master/tlpkg/libexec/install-tl.nsi
@@ -0,0 +1,262 @@
+!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 install-tl.exe
+
+Caption "TeX Live installer"
+SubCaption 2 ": Unpack directory"
+SubCaption 4 ": Unpacking..."
+
+XPStyle on
+RequestExecutionLevel user
+
+SetCompressor /SOLID bzip2
+
+; Controls: installation type
+Var Dialog
+Var Label
+Var RadioSimple
+Var RadioAdvanced
+Var RadioUnpack
+
+; Controls: confirmation page
+Var Confirm
+Var Explain
+
+; values for installation type
+Var Radio_Value
+Var Radio_Default
+Var Radio_Temp
+
+Var Admin_warning
+Var Completed_text
+CompletedText $Completed_text
+Var InstOrUnpack
+;Var NextOrUnpack
+;MiscButtonText "" $NextOrUnpack "" ""
+InstallButtonText $InstOrUnpack
+
+; for local testing:
+Var REPO
+
+Page custom tlOptionsPage tlOptionsPageLeave
+Page directory dirPre "" dirLeave
+Page custom ConfirmPage ConfirmLeave
+Page instfiles
+
+Function .onInit
+
+ ${If} ${AtMostWin2000}
+ MessageBox MB_OK|MB_ICONSTOP \
+ "Windows XP earliest supported version; aborting..."
+ Abort
+ ${EndIf}
+
+ InitPluginsDir
+ StrCpy $INSTDIR $PLUGINSDIR
+
+ UserInfo::GetAccountType
+ Pop $0
+ ${If} $0 == "Admin"
+ StrCpy $Admin_warning ""
+ ${Else} ; failure or no admin permissions
+ StrCpy $Admin_warning "Only single-user install possible.$\r$\nFor an all-users installation, abort now and re-run as administrator.$\r$\n"
+ ${EndIf}
+
+ StrCpy $Radio_Default "simple"
+ StrCpy $Radio_Value $Radio_Default
+ ;StrCpy $NextOrUnpack "Next"
+
+FunctionEnd
+
+Function dirPre
+
+ ${If} $Radio_Value != "unpack"
+ Abort
+ ${EndIf}
+
+FunctionEnd
+
+Function dirLeave
+
+ Push $0
+
+ ${DirState} "$INSTDIR\${INST_TL_NAME}" $0
+ ${If} $0 == 1
+ MessageBox MB_YESNO \
+ "OK to replace contents of $INSTDIR\${INST_TL_NAME}?" \
+ IDYES continue
+ Abort
+ continue:
+ RMDir /r "$INSTDIR\${INST_TL_NAME}"
+ ${EndIf}
+
+ Pop $0
+
+FunctionEnd
+
+DirText "Directory to unpack the TeX Live installer"
+
+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 "$DESKTOP"
+ StrCpy $Completed_text \
+ "Done; next run install-tl.bat or install-tl-advanced.bat."
+ StrCpy $InstOrUnpack "Unpack"
+ ;StrCpy $NextOrUnpack "Next"
+ ${Else}
+ StrCpy $Completed_text "Completed"
+ StrCpy $InstOrUnpack "Install"
+ ;StrCpy $NextOrUnpack "Unpack"
+ ${EndIf}
+
+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 UpdateRadio
+
+ Pop $1
+ ${NSD_GetUserData} $1 $Radio_Value
+
+FunctionEnd
+
+Function ConfirmPage
+
+ ;${If} $Radio_Value == "unpack"
+ ; Abort
+ ;${EndIf}
+
+ nsDialogs::Create 1018
+ Pop $Confirm
+
+ ${If} $Confirm == error
+ Abort
+ ${EndIf}
+
+ ${If} $Radio_Value == "unpack"
+ ${NSD_CreateLabel} 0 30% 100% 80u \
+ "The main installer will be unpacked into $INSTDIR\${INST_TL_NAME}.$\r$\n$\r$\ninstall-tl.bat and install-tl-advanced.bat will start the main installer."
+ ${ElseIf} $Radio_Value == "advanced"
+ ${NSD_CreateLabel} 0 30% 100% 80u \
+ "Click 'Install' to start the main installer,$\r$\nwhich lets you select components and an installation directory.$\r$\n$\r$\nUnpacking the main installer may take a moment..."
+ ${Else}
+ ${NSD_CreateLabel} 0 30% 100% 80u \
+ "Click 'Install' to start the main installer,$\r$\nwhich lets you select an installation directory.$\r$\n$\r$\nUnpacking the main installer may take a moment..."
+ ${EndIf}
+ Pop $Explain
+
+ nsDialogs::Show
+
+FunctionEnd
+
+Function ConfirmLeave
+
+FunctionEnd
+
+Section
+
+ ${GetParameters} $REPO
+ ${If} $REPO != ""
+ StrCpy $REPO "-repository $REPO"
+ ${EndIf}
+ ; for local testing:
+ ; StrCpy $REPO "-repository U:\systems\texlive\tlnet"
+ ; StrCpy $REPO "-repository D:\tlnet"
+
+ ; 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}
+
+ CreateDirectory $INSTDIR\${INST_TL_NAME}
+
+ ; production code:
+ File /r ${INST_TL_NAME}
+ ; Quick interface testing:
+ ; File /oname=${INST_TL_NAME}\README ${INST_TL_NAME}\README
+
+ ${If} $Radio_Value == "advanced"
+ nsExec::Exec '"$INSTDIR\${INST_TL_NAME}\install-tl.bat" -gui perltk $REPO'
+ ${ElseIf} $Radio_Value == "simple"
+ nsExec::Exec '"$INSTDIR\${INST_TL_NAME}\install-tl.bat" $REPO'
+ ${EndIf}
+
+SectionEnd