windows-nt/Source/XPSP1/NT/base/ntsetup/inf/beta/subroutn.inf
2020-09-26 16:20:57 +08:00

585 lines
17 KiB
INI

;=====================================================================
; THIS INF CONTAINS ALL THE SUBROUTINES COMMONLY USED IN THE SETUP INF
;=====================================================================
;
;
;========================================
; MESSAGE REPORTING SUBROUTINES:
;========================================
;
; 1. SetupMessage: To display warnings, fatal errors, non fatal errors and
; status messages.
;
; 2. QueryUserQuit: To ask if the user wants to quit setup.
;
;========================================
; ALLOCATION AND DEALLOCATION OF DRIVES
;========================================
;
; 1. AllocateUnusedDrive: To allocate a drive letter to use for reassignment
;
; 2. FreeUnusedDrive: To free a drive to the unused drive list
;
;========================================
; MESSAGE REPORTING SUBROUTINES:
;========================================
;-----------------------------------------------------------------------
; ROUTINE: SetupMessage
;
; DESCRIPTION: This routine lets the user
;
; INPUTS: $0: Language To Use
; $1: MessageType: WARNING | FATAL | NONFATAL | STATUS
; $2: MessageText.
;
; OUTPUTS: $R0: STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
;
; $R1: DLGEVENT: OK | CANCEL
;
;------------------------------------------------------------------------
[SetupMessage]
;
; Initialize
;
set Status = STATUS_FAILED
set UserAction = "CANCEL"
;
; See if the language indicated is supported
;
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguageID, 1)
Ifcontains(i) $($0) in $(LanguageList)
goto displaymessage
else
set Status = STATUS_NOLANGUAGE
goto finish_SetupMessage
endif
;
; examine the message type and accordingly read in the right dialog
; parameters
;
displaymessage = +
set DlgText = $($2)
ifstr(i) $($1) == "WARNING"
read-syms WarningDlg$($0)
else-ifstr(i) $($1) == "FATAL"
read-syms FatalDlg$($0)
else-ifstr(i) $($1) == "NONFATAL"
read-syms NonfatalDlg$($0)
else-ifstr(i) $($1) == "STATUS"
read-syms StatusDlg$($0)
else
goto finish_SetupMessage
endif
ui start "SetupMessage"
ifstr(i) $(DLGEVENT) == "OK"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else-ifstr(i) $(DLGEVENT) == "CANCEL"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else
endif
finish_SetupMessage = +
Return $(Status) $(UserAction)
end
;-----------------------------------------------------------------------
; ROUTINE: QueryUserQuit
;
; DESCRIPTION: This routine queries whether the user wants to quit setup
;
; INPUTS: $0: Language To Use
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[QueryUserQuit]
set Status = STATUS_FAILED
set UserAction = CANCEL
;
; See if the language indicated is supported
;
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguageID, 1)
Ifcontains(i) $($0) in $(LanguageList)
else
set Status = STATUS_NOLANGUAGE
goto fin_QueryUserQuit
endif
;
; read in quit message
;
read-syms ExitWarningDlg$($0)
ui start "ExitWarning"
ifstr(i) $(DLGEVENT) == "YES"
set Status = STATUS_SUCCESSFUL
set UserAction = "OK"
else-ifstr(i) $(DLGEVENT) == "NO"
set Status = STATUS_SUCCESSFUL
set UserAction = "CANCEL"
else
endif
fin_QueryUserQuit = +
Return $(Status) $(UserAction)
;-----------------------------------------------------------------------
;
; ROUTINE: PushBillboard
;
; DESCRIPTION: Put up a billboard or update the text in the existing billboard
;
; INPUTS: $0: Billboard template
; $1: Billboard message
;
; OUTPUTS: None
;------------------------------------------------------------------------
[PushBillboard]
ifstr(i) $(!NTN_NOTIFY_HWND) == ""
read-syms BillboardDlg$(!STF_LANGUAGE)
ui start "Billboard"
endif
Return
;-----------------------------------------------------------------------
;
; ROUTINE: PopBillboard
;
; DESCRIPTION: Pop off a billboard
;
; INPUTS: None
;
; OUTPUTS: None
;------------------------------------------------------------------------
[PopBillboard]
ifstr(i) $(!NTN_NOTIFY_HWND) == ""
ui pop 1
endif
Return
;========================================
; ALLOCATION AND DEALLOCATION OF DRIVES
;========================================
;-----------------------------------------------------------------------
; ROUTINE: AllocateUnusedDrive
;
; DESCRIPTION: This routine lets the user allocate a drive from the unused
; drive pool.
;
; INPUTS: None
;
; OUTPUTS: $R0: STATUS: STATUS_SUCCESSFUL |
; STATUS_FAILED
; $R1: Drive allocated.
;
;------------------------------------------------------------------------
[AllocateUnusedDrive]
;
;
set Status = STATUS_FAILED
set Drive = ""
;
ifstr(i) $(!STF_UNUSEDDRIVES) == {}
goto finish_allocate
else-ifstr(i) $(!STF_UNUSEDDRIVES) == ""
goto finish_allocate
else
set NewDriveList = {}
ForListDo $(!STF_UNUSEDDRIVES)
ifstr(i) $(#) != 1
set NewDriveList = >($(NewDriveList), $($))
else
set Drive = $($)
set Status = STATUS_SUCCESSFUL
endif
EndForListDo
set !STF_UNUSEDDRIVES = $(NewDriveList)
endif
finish_allocate = +
Return $(Status) $(Drive)
;-----------------------------------------------------------------------
; ROUTINE: FreeUnusedDrive
;
; DESCRIPTION: This routine lets the user allocate a drive from the unused
; drive pool.
;
; INPUTS: $0: Drive to free
;
; OUTPUTS: None
;
;
;------------------------------------------------------------------------
[FreeUnusedDrive]
set !STF_UNUSEDDRIVES = >($(!STF_UNUSEDDRIVES), $($0))
Return
;-----------------------------------------------------------------------
; ROUTINE: DriversExist
;
; DESCRIPTION: This routine informs the user that the drivers for the
; option he has selected exist on the destination and asks
; whether they should be replaced.
;
; INPUTS: $0: Language To Use
; $1: Dialog Text
;
; OUTPUTS: STATUS_CURRENT if the current files are to be used
; STATUS_NEW if new files are to be copied over
; STATUS_USERCANCEL if user chose to cancel installation
; STATUS_NOLANGUAGE if the language requested is not supported
; STATUS_FAILED if any other failure exists
;
;------------------------------------------------------------------------
[DriversExist]
set Status = STATUS_FAILED
;
; See if the language indicated is supported
;
set LanguageList = ^(LanguageID, 1)
Ifcontains(i) $($0) in $(LanguageList)
else
set Status = STATUS_NOLANGUAGE
goto finish_DriversExist
endif
read-syms DriversExistDlg$($0)
ui start "DriversExist"
ifstr(i) $(DLGEVENT) == "DLGBUTTON0"
set Status = STATUS_CURRENT
else-ifstr(i) $(DLGEVENT) == "DLGBUTTON1"
set Status = STATUS_NEW
else-ifstr(i) $(DLGEVENT) == "BACK"
set Status = STATUS_USERCANCEL
endif
ui pop 1
finish_DriversExist = +
Return $(Status)
;-----------------------------------------------------------------------
;
; ROUTINE: DoAskSource
;
; DESCRIPTION: This routine prompts the source of the windows nt files
;
; INPUTS: $0: Current Src
;
; OUTPUTS: $R0: STATUS: STATUS_SUCCESSFUL |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
; $R1: Diskette Src
;
; $R2: Drive to Free or "" if none
;
; $R3: Actual string returned from dialog
;
;------------------------------------------------------------------------
[DoAskSource]
read-syms DoAskSourceDlgText$(!STF_LANGUAGE)
shell "" DoAskSourceEx $($0) $(DlgText)
Return $($R0) $($R1) $($R2) $($R3)
;-----------------------------------------------------------------------
;
; ROUTINE: DoAskSourceEx
;
; DESCRIPTION: This routine prompts the source of the windows nt files
;
; INPUTS: $0: Current Src
; $1: Dialog Text To Use
;
; OUTPUTS: $R0: STATUS: STATUS_SUCCESSFUL |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
; $R1: Diskette Src
;
; $R2: Drive to Free or "" if none
;
; $R3: Actual string returned from dialog
;
;------------------------------------------------------------------------
[DoAskSourceEx]
;
;
set Status = STATUS_FAILED
set Src = $($0)
set DriveToFree = ""
read-syms AskSourceStrings$(!STF_LANGUAGE)
asksource = +
read-syms DisketteDlg$(!STF_LANGUAGE)
ui start "Diskette"
ifstr(i) $(DLGEVENT) == "CONTINUE"
LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut)
ifstr(i) $(IsFullPath) == "NO"
StartWait
LibraryProcedure STATUS, $(!LIBHANDLE), ProcessForUNC $(EditTextOut)
EndWait
ifstr(i) $(STATUS) == "ERROR"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String1)
goto asksource
else-ifstr(i) $(STATUS) == "NOT-UNC"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String2)
goto asksource
else-ifstr(i) $(STATUS) == "UNC-FAILCONNECT"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String4)
goto asksource
else
set Src = $(STATUS)
endif
else
set Src = $(EditTextOut)
endif
ui pop 1
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(Src)
ifstr(i) $(STATUS) == "ERROR"
goto finish_DoAskSource
else
set Src = $(STATUS)
set Status = STATUS_SUCCESSFUL
goto finish_DoAskSource
endif
else-ifstr(i) $(DLGEVENT) == "BACK"
ui pop 1
set Status = STATUS_USERCANCEL
goto finish_DoAskSource
else
ui pop 1
goto finish_DoAskSource
endif
finish_DoAskSource = +
Return $(Status) $(Src) $(DriveToFree) $(EditTextOut)
;--------------------------------------------------------------------------
; Setup.Hlp Context IDs
; =====================
;
; The following are the help IDs used in the setup inf files. The help IDs
; are in the following ranges:
;
; 0 - 999 : Main Setup
; 1000 - 1999 : Network Setup
; 2000 - 2999 : MaintenanceModeSetup
;
;---------------------------------------------------------------------------
[SetupHelpIds]
;
; NOTE: PLEASE UPDATE THE !MaximumID field whenever you add a new ID
;
!MinimumID = 0
!MaximumID = 5000
!InitialContentsID = 5
;
; Main Setup IDs
;
!IDH_DB_COMPUTERNAMEQ_INS = 10
!IDH_DB_COMPUTERNAMEV_INS = 11
!IDH_DB_FULLNAMEQ_INS = 30
!IDH_DB_FULLNAMEV_INS = 31
!IDH_DB_ORGNAMEQ_INS = 32
!IDH_DB_ORGNAMEV_INS = 33
!IDH_DB_PRODUCTIDQ_INS = 40
!IDH_DB_PRODUCTIDV_INS = 41
!IDH_DB_INSTALLMODE_INS = 50
!IDH_DB_OPTIONS_INS = 60
!IDH_DB_SYSTEM_INS = 70
!IDH_DB_VIRTUAL_INS = 80
!IDH_DB_REPAIR_INS = 90
!IDH_DB_PRNSETUP_INS = 100
!IDH_DB_OPTIONAL_INS = 110
!IDH_DB_CUSTOMISE_INS = 111
!IDH_DB_OEMSINGLESEL_INS = 120
!IDH_DB_OEMMULTISEL_INS = 121
!IDH_DB_ACCOUNTSETUP_INS = 130
!IDH_DB_ACCOUNTADMN_INS = 131
!IDH_DB_SEARCHDRIVE_INS = 150
!IDH_DB_APPCONFLICT_INS = 151
!IDH_DB_ASTYPE_INS = 160
;
; Maintenance mode setup IDs
;
!IDH_DB_MAINTAIN_INS = 1000
!IDH_DB_MOPTIONAL_INS = 1010
!IDH_DB_MCUSTOMISE_INS = 1011
!IDH_DB_MSYSTEM_INS = 1020
!IDH_DB_MPROFILE_INS = 1030
!IDH_DB_SCSI_DRIVER_INS = 1040
!IDH_DB_SCSI_SELECTDRIVER_INS = 1041
!IDH_DB_DRIVEREXIST_INS = 1042
!IDH_DB_TAPE_DRIVER_INS = 1043
!IDH_DB_TAPE_SELECTDRIVER_INS = 1044
;
; Network card inf Help ID
;
!IDH_DB_CARDSELECTION_INS = 3000 ; Net card selection dialog
!IDH_DB_SOFTSELECTION_INS = 3001 ; Software selection dialog
!IDH_DB_OEMNADD1_INS = 3500 ; Dec100
!IDH_DB_OEMNADD2_INS = 3510 ; Dec201
!IDH_DB_OEMNADDE_INS = 3520 ; Decstation
!IDH_UB_OEMNADDP_INS = 3521 ; DEC PC
!IDH_DB_OEMNADE1_INS = 3530 ; Elink 16
!IDH_DB_OEMNADE2_INS = 3540 ; Elink ii
!IDH_DB_OEMNADE3_INS = 3545 ; Elink 3
!IDH_DB_OEMNADLB_INS = 3546 ; MS Loop Back
!IDH_DB_OEMNADAM_INS = 3547 ; AMD
!IDH_DB_OEMNADEM_INS = 3550 ; Elink MC
!IDH_DB_OEMNADN2_INS = 3551 ; NE2000
!IDH_DB_OEMNADN1_INS = 3552 ; NE1000
!IDH_DB_OEMNADNE_INS = 3560 ; NE3200
!IDH_DB_OEMNADIN_INS = 3561 ; Intel EE16
!IDH_DB_OEMNADEP_INS = 3565 ; Intel EtherExpress Pro
!IDH_DB_OEMNADP3_INS = 3570 ; Proteon 1390
!IDH_DB_OEMNADP9_INS = 3580 ; Proteon 1990
!IDH_DB_OEMNADSO_INS = 3590 ; Sonic
!IDH_DB_OEMNADTK_INS = 3600 ; IBM Token
!IDH_DB_OEMNADT2_INS = 3601 ; IBM Token II
!IDH_DB_OEMNADTE_INS = 3602 ; IBM Token EISA
!IDH_DB_OEMNADTM_INS = 3605 ; IBM Token
!IDH_DB_OEMNADUB_INS = 3610 ; UB Card
!IDH_DB_OEMNADWD_INS = 3620 ; Western Digital
!IDH_DB_OEMNADWM_INS = 3630 ; Western Digital MicroChannel
!IDH_DB_OEMNADAR1_INS = 3631 ; Arcnet
!IDH_DB_OEMNADAR2_INS = 3632 ; Thomas Conard 1
!IDH_DB_OEMNADAR3_INS = 3633 ; Thomas Conard 2
!IDH_DB_OEMNADNF_INS = 3634 ; Netflx Token Ring card
!IDH_DB_OEMNSVNB_INS = 3640 ; Netbios
!IDH_DB_OEMNSVRD_INS = 3650 ; Redriector
!IDH_DB_OEMNSVRE_INS = 3660 ; Repl
!IDH_DB_OEMNSVSV_INS = 3670 ; Server
!IDH_DB_OEMNSVWK_INS = 3680 ; workstation
!IDH_DB_OEMNXPDL_INS = 3690 ; dlc
!IDH_DB_OEMNXPNB_INS = 3700 ; netbeui
!IDH_DB_OEMNXPSN_INS = 3710 ; snmp
!IDH_DB_OEMNXPSN_1 = 3711 ; snmp - 1st dialog
!IDH_DB_OEMNXPSN_2 = 3712 ; snmp - security dialog
!IDH_DB_OEMNXPTC_INS = 3720 ; tcpip
!IDH_DB_OEMNXPTC_1 = 3721 ; tcpip - 1st dialog
!IDH_DB_OEMNXPTC_2 = 3722 ; tcpip - 2nd dialog
!IDH_DB_OEMNXPTC_3 = 3723 ; tcpip - 3nd dialog
!IDH_DB_LMHOST_INS = 3730 ; LMHOST dialog
!IDH_DB_RPCLOCATE_INS = 3740 ; RPC Name Service dialog
!IDH_DB_OEMNSVRI_INS = 3745 ; Remoteboot Service dialog
!IDH_DB_RETURN_TO_NCPA = 3750 ; Return to NCPA
!IDH_DB_GET_PROTOCOL = 4000 ; Get Primary Protocol dialog
!IDH_DB_VER_EXISTED = 4010 ; software or netcard already existed
!IDH_DB_DETECT_BYPASS = 4020 ; Want to bypass netcard detection?
!IDH_DB_DETECT_FOUND = 4030 ; Detection found a netcard
!IDH_DB_DETECT_FAILED = 4040 ; Netcard detection failed
!IDH_DB_DETECT_CHKRAS = 4050 ; Detection failed-- want RAS?
!IDH_DB_OEMNADLT_INS = 4060 ; LocalTalk Card Config help
;-----------------------------------------------------------------------
; ROUTINE: ReadSetupHelpIds
;
; DESCRIPTION: This routine sets up the help context ids as globals
;
;
; INPUTS: $0: Drive to free
;
; OUTPUTS: None
;
;
;------------------------------------------------------------------------
[ReadSetupHelpIds]
read-syms "SetupHelpIds"
Return
;-----------------------------------------------------------------------
; ROUTINE: GetDefaultAnswer
;
; DESCRIPTION: This routine sets up the help context ids as globals
;
;
; INPUTS: $0: Section name in the $winnt$.inf file
;
; OUTPUTS: None
;
;
;------------------------------------------------------------------------
[GetDefaultAnswer]
ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
shell $(!STF_UNATTENDED) ReadDefaultData $($0)
endif
Return