Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
;===================================================================== ; 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
|