585 lines
17 KiB
INI
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
|
|
|