diff options
Diffstat (limited to 'Master/tlpkg/libexec/install-tl.nsi')
-rw-r--r-- | Master/tlpkg/libexec/install-tl.nsi | 262 |
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 |