Annotation of ntddk/src/setup/inf/ndis/ntlanman.inf, revision 1.1.1.1

1.1       root        1: ;***********************************************************************
                      2: ;
                      3: 
                      4: 
                      5: 
                      6: ;
                      7: 
                      8: 
                      9: 
                     10: 
                     11: 
                     12: 
                     13: 
                     14: 
                     15: 
                     16: 
                     17: 
                     18: 
                     19: 
                     20: 
                     21: 
                     22: 
                     23: ; NTLANMAN.INF
                     24: ;
                     25: ;       This is the Network Setup INF for NT/Lanman installation.
                     26: ;
                     27: ; Usage:
                     28: ;         NORMAL:  This file is "shelled" from SETUP.INF during
                     29: ;                  main installation.
                     30: ;
                     31: ; Warning:
                     32: ;
                     33: ;         This file is processed by that work of wonder, RCPP, into
                     34: ;         three separate files:  NTLANMAN.INF, NTIDWNET.INF
                     35: ;         and NTLMINST.INF. Because of this, some spurious errors are
                     36: ;         occasionally emitted due
                     37: ;         to the 'C' syntax knowledge of RCPP.  For this reason, some
                     38: ;         comments dont use apostrophes and ellipses have been avoided.
                     39: ;         Other errors, such as escaped quotes, are unavoidable.
                     40: ;
                     41: 
                     42: ;
                     43: ; History:
                     44: ;       davidhov  10-Mar-1992   Created
                     45: ;
                     46: ;
                     47: 
                     48: 
                     49: 
                     50: 
                     51: 
                     52: 
                     53: 
                     54: 
                     55: 
                     56: 
                     57: 
                     58: 
                     59: 
                     60: 
                     61: 
                     62: 
                     63: 
                     64: 
                     65: 
                     66: 
                     67: 
                     68: 
                     69: 
                     70: 
                     71: 
                     72: 
                     73: 
                     74: 
                     75: 
                     76: 
                     77: 
                     78: 
                     79: 
                     80: 
                     81: 
                     82: 
                     83: 
                     84: 
                     85: 
                     86: 
                     87: ;***********************************************************************
                     88: ; CONSTANTS FOR USING DIALOGS
                     89: ;***********************************************************************
                     90: [GeneralConstants]
                     91: 
                     92: Exit_Code = 0
                     93: BillboardVisible = 0
                     94: ;
                     95: ;  Return codes; Exit_Code is set to one of these
                     96: ;
                     97: ExitCodeOk     = 0
                     98: ExitCodeCancel = 1
                     99: ExitCodeFatal  = 2
                    100: ;
                    101: ;  Program flow control variables.
                    102: ;
                    103: retaddr   = ""
                    104: callresult = 0
                    105: from      = ""
                    106: to        = ""
                    107: ;
                    108: ;  Location of netcard product information
                    109: ;
                    110: NetworkCardKeyName = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards"
                    111: KeyNull            = ""
                    112: MAXIMUM_ALLOWED    = 33554432
                    113: SERVICE_NO_CHANGE  = 4294967295
                    114: KeyInfo            = {}
                    115: NoTitle            = 0
                    116: UtilityInf         = "UTILITY.INF"
                    117: NcParamInf         = "NCPARAM.INF"
                    118: RasAutoInstall     = 0
                    119: 
                    120: !STF_DOMAIN_ROLE  = STANDALONE
                    121: !STF_DOMAIN       = ""
                    122: !STF_SRCDIR_WINNT = ""
                    123: 
                    124: [DialogConstants]
                    125: 
                    126: 
                    127: 
                    128: 
                    129: 
                    130: 
                    131: 
                    132: 
                    133: 
                    134: 
                    135: 
                    136: 
                    137: 
                    138: 
                    139: 
                    140: 
                    141: 
                    142: 
                    143: ;
                    144: ; Common button names, etc.
                    145: ;
                    146: Help        = "&Help"
                    147: Exit        = "Cancel"
                    148: HelpContext = ""
                    149: Continue    = "Continue"
                    150: ExitState   = "Active"
                    151: Cancel      = "Cancel"
                    152: ;
                    153: ; Constants to support the use of radio button dialogs
                    154: ;
                    155: Radio1  = "1"
                    156: Radio2  = "2"
                    157: Radio3  = "3"
                    158: Radio4  = "4"
                    159: Radio5  = "5"
                    160: Radio6  = "6"
                    161: Radio7  = "7"
                    162: Radio8  = "8"
                    163: Radio9  = "9"
                    164: ;
                    165: ; Constants to support the use of checkbox dialogs
                    166: ;
                    167: ;   DON'T TRANSLATE -- Internal use only
                    168: ;
                    169: Chosen    = "ON"
                    170: NotChosen = "OFF"
                    171: 
                    172: NullFileName = "NOSUCH.FIL"
                    173: 
                    174: 
                    175: 
                    176: 
                    177: 
                    178: 
                    179: 
                    180: 
                    181: 
                    182: 
                    183: 
                    184: 
                    185: 
                    186: 
                    187: 
                    188: 
                    189: 
                    190: 
                    191: 
                    192: 
                    193: 
                    194: 
                    195: 
                    196: 
                    197: 
                    198: 
                    199: 
                    200: 
                    201: 
                    202: 
                    203: 
                    204: 
                    205: 
                    206: 
                    207: 
                    208: 
                    209: 
                    210: 
                    211: 
                    212: 
                    213: 
                    214: 
                    215: 
                    216: 
                    217: 
                    218: 
                    219: 
                    220: 
                    221: 
                    222: 
                    223: 
                    224: 
                    225: 
                    226: 
                    227: 
                    228: 
                    229: 
                    230: 
                    231: 
                    232: 
                    233: 
                    234: 
                    235: 
                    236: 
                    237: ;***********************************************************************
                    238: ; ERROR MESSAGE CONSTANTS-- Language-dependent
                    239: ;***********************************************************************
                    240: [ErrorConstants]
                    241: ;
                    242: ;  Error handling variables
                    243: ;
                    244: RegistryErrorList = ^(RegistryErrors$(!STF_LANGUAGE),1)
                    245: RegistryErrorIndex = 1
                    246: 
                    247: ;------------------------------------------------------------------
                    248: ; UI VARIABLES
                    249: ; these variables are initialised with defaults, detected from the
                    250: ; system configuration and/or queried from the user.  the variables
                    251: ; are language independent.
                    252: ;------------------------------------------------------------------
                    253: 
                    254: [UiVars]
                    255: DummyUnsedUiVar = ""
                    256: 
                    257: ;**************************************************************************
                    258: ;  Network UI Variables
                    259: ;**************************************************************************
                    260: [DestNetPathNames]
                    261: DEST_NET_DRIVER   = $(!STF_NTPATH)\drivers
                    262: DEST_NET_PROTOCOL = $(!STF_NTPATH)\drivers
                    263: DEST_NET_EXE      = $(!STF_WINDOWSSYSPATH)
                    264: DEST_NET_INF      = $(!STF_WINDOWSSYSPATH)
                    265: DEST_NET_DLL      = $(!STF_WINDOWSSYSPATH)
                    266: 
                    267: ;
                    268: ;  Instantiate the platform dependent lists
                    269: ;
                    270: [NetworkVars]
                    271: ;
                    272: ;  Global variables which would otherwise be supplied by NCPASHEL.INF
                    273: ;
                    274: !STF_SRCDIR_KEYED     = ""       ;   source dir as entered
                    275: !STF_SRCDIR_USED      = ""       ;   source dir as used
                    276: !STF_SRCDIR_OVERRIDE  = ""       ;   OEM source path
                    277: !NTN_RegBase          = ""
                    278: !NTN_ServiceBase      = "SYSTEM\CurrentControlSet\SERVICES"
                    279: !NTN_SoftwareBase     = "SOFTWARE"
                    280: !NTN_InstallMode      = "install"
                    281: !NTN_Origination      = "install"
                    282: !NTN_InstallPhase     = "primary"
                    283: 
                    284: ;
                    285: ;  Set up the default lists for services and protocols
                    286: ;
                    287: ServiceInfList     = ^(ServiceData, 1)
                    288: ServiceOptionList  = ^(ServiceData, 2)
                    289: ServiceBbList      = ^(ServiceData,3)
                    290: ServiceNameList    = ^(ServiceData,4)
                    291: 
                    292: ProtoInfList       = ^(ProtoData, 1)
                    293: ProtoOptionList    = ^(ProtoData, 2)
                    294: ProtoBbList        = ^(ProtoData, 3)
                    295: ProtoNameList      = ^(ProtoData, 4)
                    296: 
                    297: ;
                    298: ;  SERVICE and PROTOCOL INF lists.
                    299: ;
                    300: ;  Format:    <name of INF to run>,<option to install>,<billboard index>
                    301: ;
                    302: ;  Default NetBIOS transport INF: NetBeui (NBF.SYS)
                    303: ;
                    304: [ProtoData]
                    305: ProtoData_1        = "OEMNXPNB.INF","NBF",4,Nbf
                    306: ;
                    307: ;  NT LM service INFs.  Files is this list are "shelled" to, along with
                    308: ;    the appropriate protocol INF and netcard INF.
                    309: ;
                    310: [ServiceData]
                    311:     ;  Server service
                    312: ServiceData_1      = "OEMNSVSV.INF","SRV",3,LanmanServer
                    313:     ;  Workstation service
                    314: ServiceData_2      = "OEMNSVWK.INF","WKSTA",2,LanmanWorkstation
                    315:     ;  NetBIOS API support
                    316: ServiceData_3      = "OEMNSVNB.INF","NETBIOS",5,NetBIOS
                    317:     ;  RPC API support
                    318: ServiceData_4      = "OEMNSVRP.INF","RPCLOCATE",11,RPCLOCATOR
                    319: 
                    320: [RasServiceData]
                    321: RAS_InfName    = "OEMNSVRA.INF"
                    322: RAS_Option     = "RAS"
                    323: RAS_Billboard  = 12
                    324: RAS_Service    = "RAS"
                    325: 
                    326: 
                    327: ;**************************************************************************
                    328: ;**************************************************************************
                    329: ;
                    330: ;   SHELL COMMANDS SECTION
                    331: ;
                    332: ;**************************************************************************
                    333: ;**************************************************************************
                    334: 
                    335: 
                    336: 
                    337: 
                    338: 
                    339: 
                    340: 
                    341: 
                    342: 
                    343: 
                    344: 
                    345: 
                    346: 
                    347: 
                    348: 
                    349: 
                    350: 
                    351: 
                    352: 
                    353: 
                    354: 
                    355: 
                    356: 
                    357: 
                    358: 
                    359: 
                    360: 
                    361: 
                    362: 
                    363: 
                    364: 
                    365: 
                    366: 
                    367: 
                    368: 
                    369: 
                    370: 
                    371: 
                    372: 
                    373: 
                    374: 
                    375: 
                    376: 
                    377: 
                    378: 
                    379: 
                    380: 
                    381: 
                    382: 
                    383: 
                    384: 
                    385: 
                    386: 
                    387: 
                    388: 
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: 
                    395: 
                    396: 
                    397: 
                    398: 
                    399: 
                    400: 
                    401: 
                    402: 
                    403: 
                    404: 
                    405: 
                    406: 
                    407: 
                    408: 
                    409: 
                    410: 
                    411: 
                    412: 
                    413: 
                    414: 
                    415: 
                    416: 
                    417: 
                    418: 
                    419: 
                    420: 
                    421: 
                    422: 
                    423: 
                    424: 
                    425: 
                    426: 
                    427: 
                    428: 
                    429: 
                    430: 
                    431: 
                    432: 
                    433: 
                    434: 
                    435: 
                    436: 
                    437: 
                    438: 
                    439: 
                    440: 
                    441: 
                    442: 
                    443: 
                    444: 
                    445: 
                    446: 
                    447: 
                    448: 
                    449: 
                    450: 
                    451: 
                    452: 
                    453: 
                    454: 
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: 
                    461: 
                    462: 
                    463: 
                    464: 
                    465: 
                    466: 
                    467: 
                    468: 
                    469: 
                    470: 
                    471: 
                    472: 
                    473: 
                    474: 
                    475: 
                    476: 
                    477: 
                    478: 
                    479: 
                    480: 
                    481: 
                    482: 
                    483: 
                    484: 
                    485: 
                    486: 
                    487: 
                    488: 
                    489: 
                    490: 
                    491: 
                    492: 
                    493: 
                    494: 
                    495: 
                    496: 
                    497: 
                    498: 
                    499: 
                    500: 
                    501: 
                    502: 
                    503: 
                    504: 
                    505: 
                    506: 
                    507: 
                    508: 
                    509: 
                    510: 
                    511: 
                    512: 
                    513: 
                    514: 
                    515: 
                    516: 
                    517: 
                    518: 
                    519: 
                    520: 
                    521: 
                    522: 
                    523: 
                    524: 
                    525: 
                    526: 
                    527: 
                    528: 
                    529: 
                    530: 
                    531: 
                    532: 
                    533: 
                    534: 
                    535: 
                    536: 
                    537: 
                    538: 
                    539: 
                    540: 
                    541: 
                    542: 
                    543: 
                    544: 
                    545: 
                    546: 
                    547: 
                    548: 
                    549: 
                    550: 
                    551: 
                    552: 
                    553: 
                    554: 
                    555: 
                    556: 
                    557: 
                    558: 
                    559: 
                    560: 
                    561: 
                    562: 
                    563: 
                    564: 
                    565: 
                    566: 
                    567: 
                    568: 
                    569: 
                    570: 
                    571: 
                    572: 
                    573: 
                    574: 
                    575: 
                    576: 
                    577: 
                    578: 
                    579: 
                    580: 
                    581: 
                    582: 
                    583: 
                    584: 
                    585: 
                    586: 
                    587: 
                    588: 
                    589: 
                    590: 
                    591: 
                    592: 
                    593: 
                    594: 
                    595: 
                    596: 
                    597: 
                    598: 
                    599: 
                    600: 
                    601: 
                    602: 
                    603: 
                    604: 
                    605: 
                    606: 
                    607: 
                    608: 
                    609: 
                    610: 
                    611: 
                    612: 
                    613: 
                    614: 
                    615: 
                    616: 
                    617: 
                    618: 
                    619: 
                    620: 
                    621: 
                    622: 
                    623: 
                    624: 
                    625: 
                    626: 
                    627: 
                    628: 
                    629: 
                    630: 
                    631: 
                    632: 
                    633: 
                    634: 
                    635: 
                    636: 
                    637: 
                    638: 
                    639: 
                    640: 
                    641: 
                    642: 
                    643: 
                    644: 
                    645: 
                    646: 
                    647: 
                    648: 
                    649: 
                    650: 
                    651: 
                    652: 
                    653: 
                    654: 
                    655: 
                    656: 
                    657: 
                    658: 
                    659: 
                    660: 
                    661: 
                    662: 
                    663: 
                    664: 
                    665: 
                    666: 
                    667: 
                    668: 
                    669: 
                    670: 
                    671: 
                    672: [DoNetwork]
                    673: 
                    674:    Set !G:DebugOutputControl = 0
                    675: 
                    676:    Debug-Output "NTLANMAN.INF: Section: Shell Commands"
                    677: 
                    678:    Set NetInstallStatus = STATUS_SUCCESSFUL
                    679: 
                    680:    set-subst LF = "\n"
                    681: 
                    682:    StartWait
                    683: ;
                    684: ; read general constants, etc.
                    685: ;
                    686:    read-syms GeneralConstants
                    687: 
                    688:    Ifstr(i) $(!STF_PRODUCT) == "LANMANNT"
                    689:         read-syms ProductTitleLanmanNt$(!STF_LANGUAGE)
                    690:    Else
                    691:         read-syms ProductTitleWinNt$(!STF_LANGUAGE)
                    692:    Endif
                    693:    Debug-Output "NTLANMAN.INF: Product title is: "$(!NetProductTitle)
                    694:    set-title $(!NetProductTitle)" Network Installation"
                    695: 
                    696:    read-syms UiVars
                    697:    read-syms DestNetPathNames
                    698:    read-syms DialogConstants
                    699:    read-syms NetworkVars
                    700:    read-syms ProgressCopy$(!STF_LANGUAGE)
                    701: 
                    702:    Set !STF_IDW = FALSE
                    703: 
                    704:    Debug-Output "NTLANMAN.INF: Base variables loaded"
                    705: 
                    706:    LoadLibrary "x" $(!STF_CWDDIR)\setupdll.dll !LIBHANDLE
                    707: 
                    708:    Debug-Output "NTLANMAN.INF: Successfully linked to SETUPDLL.DLL"
                    709: 
                    710:    LoadLibrary "x" $(!STF_CWDDIR)\ncpa.cpl !NCPA_HANDLE
                    711: 
                    712:    Debug-Output "NTLANMAN.INF: Successfully linked to NCPA.CPL"
                    713: 
                    714:    Shell "subroutn.inf" ReadSetupHelpIds
                    715:    SetHelpFile "setupnt.hlp" $(!MinimumID) $(!MaximumID)
                    716: 
                    717:    EndWait
                    718: 
                    719:    Debug-Output "NTLANMAN.INF: Network variables loaded"
                    720: 
                    721:    ;
                    722:    ;   To support WINNT setup, record STF_SRCDIR into the Registry.
                    723:    ;   If present, this is used as an override to the "SourcePath"
                    724:    ;   value SETUP normally records.  The problem is that the "SourcePath"
                    725:    ;   is a lie for WINNT setup-- it always points at "A:\", not to the
                    726:    ;   hidden temporary directory.
                    727:    ;
                    728:    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\Setup" $(MAXIMUM_ALLOWED) KeySetup
                    729:    Ifstr(i) $(KeySetup) != ""
                    730:        SetRegValue $(KeySetup) {WinntPath,$(NoTitle),$(!REG_VT_SZ),$(!STF_SRCDIR)}
                    731:        CloseRegKey $(KeySetup)
                    732:        Debug-Output "NTLANMAN.INF: Setup\WinntPath value set to: "$(!STF_SRCDIR)
                    733:    Endif
                    734: 
                    735: 
                    736: 
                    737: ;------------------------------------------------------------------------
                    738: ;
                    739: ;   NETCARD INSTALLATION
                    740: ;
                    741: ;   Since detection is always activated merely by shelling to
                    742: ;   [InitialAdapterInstall], we just call the INF OEMHOOK.INF.
                    743: ;   This file, normally absent, allows vendors to copy files,
                    744: ;   manipulate the Registry, etc., to prepare for netcard operations.
                    745: ;
                    746: ;------------------------------------------------------------------------
                    747: 
                    748:    ;
                    749:    ;  Get global variables set up and enable detection.
                    750:    ;
                    751:    Shell $(NcParamInf) Param_SetGlobals
                    752:    Set !STF_NCDETECT = YES
                    753: 
                    754:    ;  Silently run the INF called OEMHOOK.INF if there is one.
                    755: 
                    756:    Shell "" InstallOemHook
                    757: 
                    758:    Debug-Output "NTLANMAN.INF: Establish netcard option"
                    759: 
                    760:    set retaddr = nphase$runinfs
                    761:    goto netgetdriver
                    762: 
                    763: nphase$runinfs = +
                    764:    Debug-Output "NTLANMAN.INF: Run subordinate INFs"
                    765: 
                    766:    Set retaddr = nphase$installfiles
                    767:    Goto netruninfs
                    768: ;
                    769: ;  Add all the networking files to the install list and
                    770: ;  copy them.
                    771: ;
                    772: nphase$installfiles = +
                    773:    Set retaddr = nphase$ncpacmdline
                    774: 
                    775:    Ifstr(i) $(!STF_IDW) != "TRUE"
                    776:        Goto netinstallfiles
                    777:    Endif
                    778: 
                    779: ;
                    780: ; Create the NCPA command line parameters
                    781: ;
                    782: nphase$ncpacmdline = +
                    783:    Set retaddr = nphase$runncpa
                    784:    Goto netncpacmdline
                    785: ;
                    786: ; Run the NCPA to configure the network
                    787: ;
                    788: nphase$runncpa = +
                    789:    ;
                    790:    ;  Does ActiveComputerName exist?  If so, stomp on it.
                    791:    ;
                    792:    Set KeyComputerName = $(KeyNull)
                    793:    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" $(MAXIMUM_ALLOWED) KeyComputerName
                    794: 
                    795:    Ifstr(i) $(KeyComputerName) != $(KeyNull)
                    796:        GetRegValue $(KeyComputerName) "ComputerName" ValueActiveComputerName
                    797:        Set ActiveComputerName = *($(ValueActiveComputerName),4)
                    798:        Debug-Output "NTLANMAN.INF: *************************************"
                    799:        Debug-Output "NTLANMAN.INF: ActiveComputerName key exists: "$(ActiveComputerName)
                    800:        SetRegValue $(KeyComputerName) {ComputerName,$(NoTitle),$(!REG_VT_SZ),$(!STF_COMPUTERNAME)}
                    801:        Debug-Output "NTLANMAN.INF: ActiveComputerName was set to: "$(!STF_COMPUTERNAME)
                    802:        Debug-Output "NTLANMAN.INF: *************************************"
                    803:        CloseRegKey $(KeyComputerName)
                    804:    Else
                    805:        Debug-Output "NTLANMAN.INF: ActiveComputerName key does not exist."
                    806:    Endif
                    807: 
                    808:    Debug-Output "NTLANMAN.INF: Run NCPA to configure the network"
                    809:    Ifint $(BillboardVisible) != 0
                    810:        Shell "subroutn.inf" PopBillboard
                    811:        Set BillboardVisible = 0
                    812:    Endif
                    813:    set retaddr = nphase$startnet
                    814:    goto netrunncpa
                    815: ;
                    816: ; Start the network (workstation, rdr, xport, driver)
                    817: ;
                    818: nphase$startnet = +
                    819:    Debug-Output "NTLANMAN.INF: Run NCPA to start the network"
                    820: 
                    821:    read-syms Billboard6$(!STF_LANGUAGE)
                    822:    Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
                    823:    Set BillboardVisible = 1
                    824: 
                    825:    Set retaddr = nphase$domainrole
                    826:    Goto netstartnetwork
                    827: ;
                    828: ; Determine this machine's role in the network
                    829: ;
                    830: nphase$domainrole = +
                    831:    Debug-Output "NTLANMAN.INF: Run NCPA to establish domain"
                    832:    Ifint $(BillboardVisible) != 0
                    833:        Shell "subroutn.inf" PopBillboard
                    834:        Set BillboardVisible = 0
                    835:    Endif
                    836: 
                    837:    set retaddr = nphase$connectshare
                    838:    goto netdomain
                    839: ;
                    840: ; Connect to a remote sharepoint if necessary
                    841: ;
                    842: nphase$connectshare = +
                    843:    ;
                    844:    ; connecting to a remote share is not necessary... in initial setup we don't
                    845:    ; have unc shares.
                    846:    ;
                    847: 
                    848:    Debug-Output "NTLANMAN.INF: Domain Role = "$(!STF_DOMAIN_ROLE)
                    849:    Set retaddr = nphase$done
                    850:    Debug-Output "NTLANMAN.INF: NOT connecting to remote sharepoint"
                    851:    Goto $(retaddr)
                    852: ;
                    853: ;  That's all for now...
                    854: ;
                    855: nphase$done = +
                    856:    Debug-Output "NTLANMAN.INF: Done ************************"
                    857: ;
                    858: ;  Remove the billboard, if any
                    859: ;
                    860:    Ifint $(BillboardVisible) != 0
                    861:        Shell "subroutn.inf" PopBillboard
                    862:        Set BillboardVisible = 0
                    863:    Endif
                    864: 
                    865: 
                    866: 
                    867: 
                    868: 
                    869: 
                    870: 
                    871: 
                    872: 
                    873: 
                    874: 
                    875: 
                    876: 
                    877: 
                    878: 
                    879: 
                    880: 
                    881: 
                    882: 
                    883: 
                    884: 
                    885: 
                    886: 
                    887: 
                    888: 
                    889: 
                    890: 
                    891: 
                    892: 
                    893: 
                    894: 
                    895: 
                    896: 
                    897: 
                    898: 
                    899: 
                    900: 
                    901: 
                    902: 
                    903: 
                    904: 
                    905: 
                    906: 
                    907: 
                    908: 
                    909: 
                    910: 
                    911: 
                    912: 
                    913: 
                    914: 
                    915: 
                    916: 
                    917: 
                    918: 
                    919: 
                    920: 
                    921: 
                    922: 
                    923: 
                    924: 
                    925: 
                    926: 
                    927: 
                    928: 
                    929: 
                    930: 
                    931: 
                    932: 
                    933: 
                    934: 
                    935: 
                    936: 
                    937: 
                    938: 
                    939: 
                    940: 
                    941: 
                    942: 
                    943: 
                    944: 
                    945: 
                    946: 
                    947: 
                    948: 
                    949: 
                    950: 
                    951: 
                    952: 
                    953: 
                    954: 
                    955: 
                    956: 
                    957: 
                    958: 
                    959: 
                    960: 
                    961: 
                    962: 
                    963: 
                    964: 
                    965: 
                    966: 
                    967: 
                    968: 
                    969: 
                    970: 
                    971: 
                    972: 
                    973: 
                    974: 
                    975: 
                    976: 
                    977: 
                    978: 
                    979: 
                    980: 
                    981: 
                    982: 
                    983: 
                    984: 
                    985: 
                    986: 
                    987: 
                    988: 
                    989: 
                    990: 
                    991: 
                    992: 
                    993: 
                    994: 
                    995: 
                    996: 
                    997: 
                    998: 
                    999: 
                   1000: 
                   1001: 
                   1002: 
                   1003: 
                   1004: 
                   1005: 
                   1006: 
                   1007: 
                   1008: 
                   1009: 
                   1010: 
                   1011: 
                   1012: 
                   1013: 
                   1014: 
                   1015: 
                   1016: 
                   1017: 
                   1018: 
                   1019: 
                   1020: 
                   1021: 
                   1022: 
                   1023: 
                   1024: 
                   1025: 
                   1026: 
                   1027: 
                   1028: 
                   1029: 
                   1030: 
                   1031: 
                   1032: 
                   1033: 
                   1034: 
                   1035: 
                   1036: 
                   1037: 
                   1038: 
                   1039: 
                   1040: 
                   1041: 
                   1042: 
                   1043: 
                   1044: 
                   1045: 
                   1046: 
                   1047: 
                   1048: 
                   1049: 
                   1050: 
                   1051: 
                   1052: 
                   1053: 
                   1054: 
                   1055: 
                   1056: 
                   1057: 
                   1058: 
                   1059: 
                   1060: 
                   1061: 
                   1062: 
                   1063: 
                   1064: 
                   1065: 
                   1066: 
                   1067: 
                   1068: 
                   1069: 
                   1070: 
                   1071: 
                   1072: 
                   1073: ;
                   1074: ;  Discard the Billboard dialog if still present
                   1075: ;
                   1076:     Ifint $(BillboardVisible) != 0
                   1077:         Shell "subroutn.inf" PopBillboard
                   1078:         Set BillboardVisible = 0
                   1079:     Endif
                   1080: 
                   1081:     Goto end
                   1082: 
                   1083: ;===========================================================================
                   1084: ;===========================================================================
                   1085: ;===========================================================================
                   1086: ;
                   1087: ;  Worker functions.
                   1088: ;
                   1089: ;===========================================================================
                   1090: ;===========================================================================
                   1091: ;===========================================================================
                   1092: 
                   1093: ;****************************************************************
                   1094: ;
                   1095: ;  Install all files in copy list.
                   1096: ;
                   1097: ;****************************************************************
                   1098: 
                   1099: netinstallfiles = +
                   1100: 
                   1101: 
                   1102:    Shell "initial.inf" ControlBitmaps START
                   1103: 
                   1104: 
                   1105:    Debug-Output "NTLANMAN.INF: Installing all files in copy list"
                   1106:    Install Install-All-Files-Now
                   1107: 
                   1108: 
                   1109:    Shell "initial.inf" ControlBitmaps STOP
                   1110: 
                   1111: 
                   1112:    goto $(retaddr)
                   1113: 
                   1114: ;****************************************************************
                   1115: ;
                   1116: ;  Build the command line parameters for the NCPA exports
                   1117: ;
                   1118: ;****************************************************************
                   1119: netncpacmdline = +
                   1120: ;
                   1121: ;  Build the command line paramters for the NCPA's calls to SETUP
                   1122: ;
                   1123:    Set NCPA_CMD_LINE = " /t STF_PRODUCT = "$(!STF_PRODUCT)
                   1124:    Set NCPA_CMD_LINE = " /t STF_COMPUTERNAME = """$(!STF_COMPUTERNAME)""""$(NCPA_CMD_LINE)
                   1125:    Set NCPA_CMD_LINE = " /t STF_USERNAME = """$(!STF_USERNAME)""""$(NCPA_CMD_LINE)
                   1126:    Set NCPA_CMD_LINE = " /t STF_INSTALL_MODE = "$(!STF_INSTALL_MODE)$(NCPA_CMD_LINE)
                   1127:    Set NCPA_CMD_LINE = " /t STF_SRCDIR = "$(!STF_SRCDIR)$(NCPA_CMD_LINE)
                   1128: 
                   1129:    Ifstr(i) $(!STF_IDW) == TRUE
                   1130:        Set NCPA_CMD_LINE = " /t STF_IDW = "$(!STF_IDW)$(NCPA_CMD_LINE)
                   1131:    Endif
                   1132: 
                   1133:    goto $(retaddr)
                   1134: 
                   1135: ;****************************************************************
                   1136: ;
                   1137: ;  Run the NCPA.CPL in "NCPA" mode; i.e., cause network binding,
                   1138: ;  OEM installation, etc.
                   1139: ;
                   1140: ;****************************************************************
                   1141: netrunncpa = +
                   1142: 
                   1143:     StartDetachedProcess STATUS "" "" $(!STF_WINDOWSSYSPATH)"\spoolss.exe"
                   1144:     ifstr(i) $(STATUS) != "ERROR"
                   1145:         set !STF_START_SPOOLSS = "NO"
                   1146:     endif
                   1147: 
                   1148: ;
                   1149: ;  Run the NCPA, giving it the proper information:  the window handle
                   1150: ;     of the main SETUP window, the function to run ("NCPA"), and
                   1151: ;    the parameters to use for dialogs and subordinate SETUP invocation.
                   1152: ;
                   1153:    Set NCPA_FUNC = NCPA
                   1154: 
                   1155:    goto netcallncpa
                   1156: 
                   1157: netstartservice = +
                   1158: ;
                   1159: ; Call the NCPA's StartService wrapper.  It allows passing of parameters,
                   1160: ;    but we currently don't need this capability.
                   1161: ;
                   1162:    Debug-Output "NTLANMAN.INF: calling NCPA.CPL to start service "$(NCPA_SERVICE)
                   1163: 
                   1164:    LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, $(NCPA_SERVICE)
                   1165:    Goto netreturnncpa
                   1166: 
                   1167: netcallncpa = +
                   1168: ;
                   1169: ;  Call the NCPA.CPL.  There are three standard parameters:
                   1170: ;
                   1171: ;        [0]   ASCII form of LONG window handle
                   1172: ;        [1]   ASCII name of NCPA.CPL function to perform
                   1173: ;        [2]   command line to pass to NCPA and subordinate INFs
                   1174: ;
                   1175: ;
                   1176:    Debug-Output "NTLANMAN.INF: calling NCPA.CPL, function "$(NCPA_FUNC)
                   1177: 
                   1178:    LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE),CPlSetup $(!STF_HWND), $(NCPA_FUNC), $(NCPA_CMD_LINE)
                   1179: 
                   1180: netreturnncpa = +
                   1181: 
                   1182:    Set NCPA_STATUS = *($(NCPA_RESULT),1)
                   1183:    Debug-Output "NTLANMAN.INF: NCPA Status was: "$(NCPA_STATUS)
                   1184:    goto $(retaddr)
                   1185: 
                   1186: ;****************************************************************
                   1187: ;
                   1188: ;  Start the Network:  start LanmanWorkstation and LMHOSTS if it exists
                   1189: ;
                   1190: ;****************************************************************
                   1191: netstartnetwork = +
                   1192:    Debug-Output "NTLANMAN.INF: Starting workstation..."
                   1193:    StartWait
                   1194:    Set WaitStarted = 1
                   1195:    Set FLibraryErrCtl = 1
                   1196: 
                   1197:    LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, LanmanWorkstation
                   1198: 
                   1199:    Set NCPA_STATUS = *($(NCPA_RESULT),1)
                   1200: 
                   1201:    Debug-Output "NTLANMAN.INF: Start workstation; result was: "$(NCPA_STATUS)
                   1202: 
                   1203:    Ifint $(NCPA_STATUS) != 0
                   1204:        EndWait
                   1205:        Set WaitStarted = 0
                   1206: 
                   1207:        LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), ERRORMSG, $(NCPA_STATUS)
                   1208: 
                   1209:        Set NCPA_ERROR_MESSAGE = *($(NCPA_RESULT),2)
                   1210:        Debug-Output "NTLANMAN.INF: Error "$(NCPA_STATUS)" translated to: "$(NCPA_ERROR_MESSAGE)
                   1211:        Read-syms WarningNoNet$(!STF_LANGUAGE)
                   1212:        Set Error = $(NCPA_ERROR_MESSAGE)$(ErrorSuffix)
                   1213:        read-syms WarningDlg$(!STF_LANGUAGE)
                   1214:        ui start SetupMessage
                   1215:        goto netstartnetdone
                   1216:    Endif
                   1217: 
                   1218:    Debug-Output "NTLANMAN.INF: Starting LMHOSTS service..."
                   1219: 
                   1220:    ;
                   1221:    ; Start LMHOSTS service if it exists
                   1222:    ;
                   1223:    OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\LmHosts" $(MAXIMUM_ALLOWED) KeyLmHosts
                   1224:    ifstr(i) $(KeyLmHosts) != ""
                   1225:        EndWait
                   1226:        Set WaitStarted = 0
                   1227: 
                   1228:        LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, LmHosts
                   1229: 
                   1230:        Set NCPA_STATUS = *($(NCPA_RESULT),1)
                   1231: 
                   1232:        Debug-Output "NTLANMAN.INF: Start Lmhosts; result was: "$(NCPA_STATUS)
                   1233: 
                   1234:        Ifint $(NCPA_STATUS) != 0
                   1235:            LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), ERRORMSG, $(NCPA_STATUS)
                   1236:            Set NCPA_ERROR_MESSAGE = *($(NCPA_RESULT),2)
                   1237:            Debug-Output "NTLANMAN.INF: Error "$(NCPA_STATUS)" translated to: "$(NCPA_ERROR_MESSAGE)
                   1238:            Read-syms WarningNoLmHosts$(!STF_LANGUAGE)
                   1239:            Set Error = $(NCPA_ERROR_MESSAGE)$(ErrorSuffix)
                   1240:            read-syms WarningDlg$(!STF_LANGUAGE)
                   1241:            ui start SetupMessage
                   1242:            goto netstartnotdone
                   1243:        Endif
                   1244:    Endif
                   1245: 
                   1246: netstartnetdone =+
                   1247: 
                   1248:    Set FLibraryErrCtl = 0
                   1249:    Ifint $(WaitStarted) == 1
                   1250:        EndWait
                   1251:    Endif
                   1252: 
                   1253: 
                   1254: 
                   1255:    Goto $(retaddr)
                   1256: 
                   1257: ;****************************************************************
                   1258: ;
                   1259: ;  Run NCPA.CPL in "DOMAIN" mode; i.e., establish domain
                   1260: ;  role, security info, etc.,
                   1261: ;
                   1262: ;  The DOMAIN subfunction returns a string (NCPA_RESULT) in
                   1263: ;  the following format:
                   1264: ;
                   1265: ;                       { <numeric error code>,
                   1266: ;                         COMPUTERNAME,
                   1267: ;                         DOMAINNAME,
                   1268: ;                         LOGONPASSWORD,
                   1269: ;                         COMPUTERROLE
                   1270: ;                       }
                   1271: ;****************************************************************
                   1272: netdomain = +
                   1273:    Debug-Output "NTLANMAN.INF: Running Domain Settings dialog..."
                   1274: 
                   1275:    Set FLibraryErrCtl = 1
                   1276: 
                   1277:    LibraryProcedure NCPA_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), DOMAIN, $(NCPA_CMD_LINE)
                   1278: 
                   1279:    Set FLibraryErrCtl = 0
                   1280: 
                   1281:    Set NCPA_STATUS = *($(NCPA_RESULT),1)
                   1282: 
                   1283:    Debug-Output "NTLANMAN.INF: Domain Settings result was: "$(NCPA_STATUS)
                   1284: 
                   1285:    Ifint $(NCPA_STATUS) != 0
                   1286:        ;
                   1287:        ;   Check for IDS_NCPA_SETUP_CANCELLED. If so, and LanmanNT,
                   1288:        ;   discontinue installation.
                   1289:        ;
                   1290:        Ifint $(NCPA_STATUS) == 13074
                   1291:            Ifstr(i) $(!STF_PRODUCT) == "LANMANNT"
                   1292:                Debug-Output "NTLANMAN.INF: Aborting LanmanNT installation; user cancellation."
                   1293:                Set NetInstallStatus = STATUS_USERCANCEL
                   1294:                Goto setupnotdone
                   1295:            Endif
                   1296:        Endif
                   1297:    Endif
                   1298: 
                   1299: ;
                   1300: ;  Check the return variable, and update globals with new
                   1301: ;  information derived from domain installation process.
                   1302: ;
                   1303:    Set TEMP_COMPUTERNAME  =  *($(NCPA_RESULT),2)
                   1304:    Set TEMP_DOMAINNAME    =  *($(NCPA_RESULT),3)
                   1305:    Set TEMP_COMPUTERROLE  =  *($(NCPA_RESULT),5)
                   1306: 
                   1307:    Ifstr(i) $(TEMP_COMPUTERNAME) != ""
                   1308:         Ifstr(i) $(TEMP_COMPUTERNAME) != $(!STF_COMPUTERNAME)
                   1309:             Set !STF_COMPUTERNAME = $(TEMP_COMPUTERNAME)
                   1310:             Debug-Output "NTLANMAN.INF: Computername changed to "$(!STF_COMPUTERNAME)
                   1311:         Endif
                   1312:    Endif
                   1313:    Ifstr(i) $(TEMP_DOMAINNAME) != ""
                   1314:         Set !STF_DOMAIN = $(TEMP_DOMAINNAME)
                   1315:         Debug-Output "NTLANMAN.INF: Domain name is "$(!STF_DOMAIN)
                   1316:    Endif
                   1317:    Ifstr(i) $(TEMP_COMPUTERROLE) != ""
                   1318:         Set !STF_DOMAIN_ROLE = $(TEMP_COMPUTERROLE)
                   1319:         Debug-Output "NTLANMAN.INF: Domain role is "$(!STF_DOMAIN_ROLE)
                   1320:    Endif
                   1321: ;
                   1322: ;  Check to see if TEMP_COMPUTERROLE is STANDALONE.  If so, alter the NetLogon
                   1323: ;  service to be startable on demand (not auto-started).
                   1324: ;
                   1325:    Ifstr(i) $(TEMP_COMPUTERROLE) == STANDALONE
                   1326:         Debug-Output "NTLANMAN.INF: Prevent NETLOGON service from autostarting"
                   1327:         LibraryProcedure DontCare, $(!LIBHANDLE), SetupChangeServiceConfig, NetLogon,+
                   1328:                $(SERVICE_NO_CHANGE), 3, $(SERVICE_NO_CHANGE), "", "", "", "", "", ""
                   1329:    Endif
                   1330: 
                   1331:    goto $(retaddr)
                   1332: ;****************************************************************
                   1333: ;
                   1334: ;   Get Primary Adapter Type
                   1335: ;
                   1336: ;****************************************************************
                   1337: netgetdriver = +
                   1338:     Debug-Output "NTLANMAN.INF: Label: netgetdriver"
                   1339: 
                   1340:     Shell "" InitialAdapterInstall
                   1341: 
                   1342:     Set NetInstallStatus = $($R0)
                   1343: 
                   1344:     Ifstr(i) $(NetInstallStatus) == STATUS_WANTRAS
                   1345:         Set NetInstallStatus = STATUS_SUCCESSFUL
                   1346:         Set RasAutoInstall = 1
                   1347:         Debug-Output "NTLANMAN.INF: RAS auto-installation chosen"
                   1348:     Endif
                   1349: 
                   1350:     Debug-Output "NTLANMAN.INF: netgetdriver; returning: "$(NetInstallStatus)
                   1351: 
                   1352: ;****************************************************************
                   1353: ;
                   1354: ;   See if user has cancelled; exit if so.  Convert EXITNET to
                   1355: ;     SUCCESSFUL if this is main installation.
                   1356: ;
                   1357: ;****************************************************************
                   1358: netcheckquit = +
                   1359:     Debug-Output "NTLANMAN.INF: netcheckquit original status: "$(NetInstallStatus)
                   1360: 
                   1361:     Set UserChoiceList = {"STATUS_SUCCESSFUL",+   ; all is well
                   1362:                           "STATUS_USERCANCEL",+   ; user wants to exit completely
                   1363:                           "STATUS_EXITNET",+      ; user wants no network
                   1364:                           "STATUS_FAILED"}        ; things are dismal
                   1365: 
                   1366:     Ifstr(i) $(!STF_PRODUCT) == "LANMANNT"
                   1367:         Set InfReturnList  = {"STATUS_SUCCESSFUL",+   ; SUCCESSFUL -> SUCCESSFUL
                   1368:                               "STATUS_USERCANCEL",+   ; USERCANCEL -> USERCANCEL
                   1369:                               "STATUS_SUCCESSFUL",+   ; EXITNET    -> SUCCESSFUL
                   1370:                               "STATUS_FAILED"}        ; FAILED     -> FAILED
                   1371:         Set LabelList = {$(retaddr),setupnotdone,setupnotdone,setupnotdone}
                   1372:     Else
                   1373:         Set InfReturnList  = {"STATUS_SUCCESSFUL",+   ; SUCCESSFUL -> SUCCESSFUL
                   1374:                               "STATUS_USERCANCEL",+   ; USERCANCEL -> USERCANCEL
                   1375:                               "STATUS_USERCANCEL",+   ; EXITNET    -> USERCANCEL
                   1376:                               "STATUS_FAILED"}        ; FAILED     -> FAILED
                   1377:         Set LabelList = {$(retaddr),setupnotdone,nphase$done,setupnotdone}
                   1378:     Endif
                   1379: 
                   1380: 
                   1381: 
                   1382: 
                   1383: 
                   1384: 
                   1385:     ;  Set the user's choice index
                   1386: 
                   1387:     Set UserChoice = ~($(UserChoiceList),$(NetInstallStatus))
                   1388:     Ifint $(UserChoice) == 0
                   1389:         ;  Default to "STATUS_FAILED" if unintelligible
                   1390:         Debug-Output "NTLANMAN.INF: netcheckquit defaulting status to STATUS_FAILED"
                   1391:         Set UserChoice = 4
                   1392:     Endif
                   1393: 
                   1394:     ;  Set the return value and return point based on status
                   1395: 
                   1396:     Set NetInstallStatus = *($(InfReturnList),$(UserChoice))
                   1397:     Set UserRetAddr = *($(LabelList),$(UserChoice))
                   1398: 
                   1399:     Debug-Output "NTLANMAN.INF: netcheckquit status: "$(NetInstallStatus)", label: "$(UserRetAddr)
                   1400: 
                   1401:     Goto $(UserRetAddr)
                   1402: 
                   1403: 
                   1404: ;****************************************************************
                   1405: ;
                   1406: ;  Run the Subordinate INFs
                   1407: ;
                   1408: ;  Execute all the necessary component INFs.  First, run the adapter
                   1409: ;  INF, then the protocol INF.  After, run all the NT LM service INFs
                   1410: ;
                   1411: ;****************************************************************
                   1412: netruninfs = +
                   1413: 
                   1414:    Debug-Output "NTLANMAN.INF: Label: netruninfs"
                   1415: 
                   1416:    Set InfsToBeRun      = {}
                   1417:    Set OptionsToInstall = {}
                   1418:    Set BbToBeShown      = {}
                   1419:    Set SvcNameList      = {}
                   1420:    Set AdapterSrcDir    = $(!STF_SRCDIR)
                   1421: 
                   1422:    ForListDo $(ProtoInfList)
                   1423:         Set InfsToBeRun = >($(InfsToBeRun),$($))
                   1424:         Set OptionsToInstall = >($(OptionsToInstall),*($(ProtoOptionList),$(#)))
                   1425:         Set BbToBeShown = >($(BbToBeShown),*($(ProtoBbList),$(#)))
                   1426:    EndForListDo
                   1427: 
                   1428:    ForListDo $(ServiceInfList)
                   1429:         Set InfsToBeRun = >($(InfsToBeRun),$($))
                   1430:         Set OptionsToInstall = >($(OptionsToInstall),*($(ServiceOptionList),$(#)))
                   1431:         Set BbToBeShown = >($(BbToBeShown),*($(ServiceBbList),$(#)))
                   1432:    EndForListDo
                   1433: 
                   1434:     ;
                   1435:     ;  If selected, append the RAS tokens to the extant lists
                   1436:     ;
                   1437:     Ifint $(RasAutoInstall) == 1
                   1438:         Debug-Output "NTLANMAN.INF: Preparing RAS for installation"
                   1439:         read-syms RasServiceData
                   1440:         Set InfsToBeRun = >($(InfsToBeRun),$(RAS_InfName))
                   1441:         Set OptionsToInstall = >($(OptionsToInstall),$(RAS_Option))
                   1442:         Set BbToBeShown  = >($(BbToBeShown),$(RAS_Billboard))
                   1443:     Endif
                   1444: 
                   1445:    Debug-Output "NTLANMAN.INF: INFs to be run: "$(InfsToBeRun)
                   1446:    Debug-Output "NTLANMAN.INF: Options to install: "$(OptionsToInstall)
                   1447:    Debug-Output "NTLANMAN.INF: Billboards to be shown: "$(BbToBeShown)
                   1448: ;
                   1449: ;  The list of INFs is now complete. Start shelling...
                   1450: ;
                   1451:    Set FailedInfFile = ""
                   1452: 
                   1453:    ForListDo $(InfsToBeRun)
                   1454:         Set ThisInfName = $($)
                   1455:         Set BbIndex = *($(BbToBeShown),$(#))
                   1456: 
                   1457:         Debug-Output "NTLANMAN.INF: Installing "$(ThisInfName)
                   1458: 
                   1459:         Ifint $(BbIndex) != 0
                   1460:             read-syms Billboard$(BbIndex)$(!STF_LANGUAGE)
                   1461:             Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
                   1462:             Set BillboardVisible = 1
                   1463:         Else-ifint $(BillboardVisible) != 0
                   1464:             Shell "subroutn.inf" PopBillboard
                   1465:             Set BillboardVisible = 0
                   1466:         Endif
                   1467: 
                   1468:         Set FailedInfFile = $(ThisInfName)
                   1469: 
                   1470:         Set InfOption = *($(OptionsToInstall),$(#))
                   1471: 
                   1472:         Shell $(ThisInfName) InstallOption $(!STF_LANGUAGE) $(InfOption) $(AdapterSrcDir) "YES" "NO" "NO"
                   1473: 
                   1474:         ; Reset the title string
                   1475:         Set-title $(!NetProductTitle)" Network Installation"
                   1476: 
                   1477:         Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                   1478:             Debug-Output "NTLANMAN.INF: INF "$(ThisInfName)" SHELL ERROR!"
                   1479:             Goto netruninfescape
                   1480:         Endif
                   1481: 
                   1482:         Set NetInstallStatus = $($R0)
                   1483: 
                   1484:         Ifstr(i) $(NetInstallStatus) != STATUS_SUCCESSFUL
                   1485:             Ifstr(i) $(NetInstallStatus) != STATUS_USERCANCEL
                   1486:                 Debug-Output "NTLANMAN.INF: INF "$(ThisInfName)" returned "$(NetInstallStatus)
                   1487:                 Goto netruninfescape
                   1488:             Endif
                   1489:         Endif
                   1490: 
                   1491:         Set FailedInfFile = ""
                   1492: 
                   1493:    EndForListDo
                   1494: 
                   1495: ;
                   1496: ;  All the products are set to be copied, and the Registry is up to date.
                   1497: ;
                   1498: netruninfescape = +
                   1499: 
                   1500:    Ifint $(BillboardVisible) != 0
                   1501:        Shell "subroutn.inf" PopBillboard
                   1502:        Set BillboardVisible = 0
                   1503:    Endif
                   1504: 
                   1505:    Ifstr(i) $(FailedInfFile) != ""
                   1506:         Read-syms FatalError14$(!STF_LANGUAGE)
                   1507:         read-syms FatalDlg$(!STF_LANGUAGE)
                   1508:         ui start "FatalError"
                   1509:         Set NetInstallStatus = STATUS_FAILED
                   1510:    Endif
                   1511: 
                   1512:    Goto netcheckquit
                   1513: 
                   1514: ;****************************************************************
                   1515: ;
                   1516: ;  ERROR MESSAGE AND EXIT ROUTINES
                   1517: ;
                   1518: ;****************************************************************
                   1519: ;
                   1520: ; information display
                   1521: ;
                   1522: infomsg = +
                   1523:    read-syms InfoDlg
                   1524:    ui start "Warning"
                   1525:    goto $(from)
                   1526: 
                   1527: ;
                   1528: ; non fatal error display
                   1529: ;
                   1530: nonfatal = +
                   1531:    read-syms NonfatalDlg$(!STF_LANGUAGE)
                   1532:    ui start "NonFatalError"
                   1533:    ifstr(i) $(DLGEVENT) == "OK"
                   1534:        goto $(from)
                   1535:    else
                   1536:        goto end
                   1537:    endif
                   1538: 
                   1539: ;
                   1540: ;  Internal error in dialog handling.
                   1541: ;
                   1542: bogusexit = +
                   1543:    Debug-Output "NTLANMAN.INF: BOGUS EXIT from "$(from)" Return addr: "$(retaddr)
                   1544:    read-syms FatalError999$(!STF_LANGUAGE)
                   1545:    goto fatal
                   1546: 
                   1547: ;
                   1548: ; fatal error display
                   1549: ;
                   1550: fatal = +
                   1551:    read-syms FatalDlg$(!STF_LANGUAGE)
                   1552:    ui start "FatalError"
                   1553:    goto term
                   1554: 
                   1555: end = +
                   1556:     goto term
                   1557: 
                   1558: term =+
                   1559: 
                   1560:    Ifstr(i) $(!LIBHANDLE) != ""
                   1561:        LibraryProcedure DontCare, $(!LIBHANDLE), DeleteAllConnections
                   1562:    Endif
                   1563: 
                   1564: 
                   1565: 
                   1566: setupnotdone = +
                   1567:    Set InfoMsgText = "Returning to INITIAL.INF"
                   1568:    Debug-Output "NTLANMAN.INF: "$(InfoMsgText)"; status "$(NetInstallStatus)
                   1569: 
                   1570: returntocaller = +
                   1571:    Return $(NetInstallStatus)
                   1572: 
                   1573: 
                   1574:     exit
                   1575: 
                   1576: 
                   1577: 
                   1578: 
                   1579: 
                   1580: 
                   1581: 
                   1582: 
                   1583: 
                   1584: 
                   1585: 
                   1586: 
                   1587: 
                   1588: 
                   1589: 
                   1590: 
                   1591: 
                   1592: 
                   1593: 
                   1594: 
                   1595: 
                   1596: 
                   1597: 
                   1598: 
                   1599: 
                   1600: 
                   1601: 
                   1602: 
                   1603: 
                   1604: 
                   1605: 
                   1606: 
                   1607: 
                   1608: 
                   1609: 
                   1610: 
                   1611: 
                   1612: 
                   1613: ;**************************************************************************
                   1614: ;
                   1615: ;   Code Lifted from HARDWARE.INF for the management of the "adapter type"
                   1616: ;   interface.
                   1617: ;
                   1618: ;**************************************************************************
                   1619: 
                   1620: [AdapterVars]
                   1621:     AdapterHardwareDetected      = ""
                   1622:     AdapterSystemSet             = ""
                   1623:     AdapterDefault               = ""
                   1624:     AdapterOurINFOptions         = {}
                   1625:     AdapterOemINFOptions         = {}
                   1626:     AdapterMergedOptions         = {}
                   1627:     AdapterSpecialOption         = {}
                   1628:     AdapterCurrentOption         = {}
                   1629: 
                   1630:     AdapterOptionList            = {}
                   1631:     AdapterOptionTextList        = {}
                   1632:     AdapterOption                = {}
                   1633:     AdapterINF                   = ""
                   1634:     AdapterInstall               = "NO"
                   1635:     AdapterSrcDir                = ""
                   1636:     AdapterDstDir                = ""
                   1637:     NcParamInf                   = "NCPARAM.INF"
                   1638: 
                   1639: [InitialAdapterInstall]
                   1640:     ;
                   1641:     ;
                   1642:     StartWait
                   1643: 
                   1644:     ;
                   1645:     ;  Guarantee that netcard detection is activated
                   1646:     ;
                   1647:     Shell "" StartDetection
                   1648: 
                   1649:     set Status = STATUS_FAILED
                   1650:     read-syms OemOptionDiskette$(!STF_LANGUAGE)
                   1651:     read-syms Strings$(!STF_LANGUAGE)
                   1652:     read-syms ProgressCopy$(!STF_LANGUAGE)
                   1653: 
                   1654:     Shell "subroutn.inf" ReadSetupHelpIds
                   1655:     SetHelpFile "setupnt.hlp" $(!MinimumID) $(!MaximumID)
                   1656: 
                   1657:     read-syms AdapterVars
                   1658: 
                   1659:     ;
                   1660:     ;;;;detect   AdapterVars
                   1661:     ;
                   1662: 
                   1663:     ;
                   1664:     ;  Set the Copy and Config flags based upon whether
                   1665:     ;  the NCPA called us or this is main installation
                   1666:     ;
                   1667:     Set !NtLmDoCopy   = "YES"
                   1668:     Set !NtLmAddCopy  = "YES"
                   1669:     Set !NtLmDoConfig = "NO"
                   1670: 
                   1671:     Ifstr(i) $(!NTN_Origination) == "ncpa"
                   1672:         ;  Secondary installation
                   1673:         Ifstr(i) $(!STF_IDW) == "TRUE"
                   1674:             Set !NtLmAddCopy  = "NO"
                   1675:             Set !NtLmDoCopy   = "NO"
                   1676:         Endif
                   1677:     Else
                   1678:         ;  Primary installation
                   1679:         Set !NtLmDoCopy   = "NO"
                   1680:         Ifstr(i) $(!STF_IDW) == "TRUE"
                   1681:             Set !NtLmAddCopy  = "NO"
                   1682:         Endif
                   1683:     Endif
                   1684: 
                   1685:     EndWait
                   1686:     ;
                   1687:     ; initialize all the adapter option vars
                   1688:     ;
                   1689:     read-syms Billboard1$(!STF_LANGUAGE)
                   1690:     Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
                   1691: 
                   1692:     StartWait
                   1693:     shell "" InitOptionVars $(!STF_LANGUAGE) NetAdapter +
                   1694:         $(AdapterHardwareDetected) $(AdapterSystemSet) $(AdapterDefault)
                   1695:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   1696:         set AdapterOurINFOptions = $($R1)
                   1697:         set AdapterOemINFOptions = $($R2)
                   1698:         set AdapterMergedOptions = $($R3)
                   1699:         set AdapterSpecialOption = $($R4)
                   1700:         set AdapterCurrentOption = $($R5)
                   1701:         set AdapterOption        = *($($R5), 1)
                   1702:     else
                   1703:         EndWait
                   1704:         Shell "subroutn.inf" PopBillboard
                   1705:         shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error1)
                   1706:         Set Status = STATUS_FAILED
                   1707:         goto finish_adapter
                   1708:     endif
                   1709: 
                   1710:     EndWait
                   1711:     Shell "subroutn.inf" PopBillboard
                   1712:     StartWait
                   1713:     ;
                   1714:     ; Initalize the listbox vars.  Only allow the "None" option during
                   1715:     ;    primary installation.
                   1716:     ;
                   1717:     Ifstr(i) $(!NTN_Origination) != "NCPA"
                   1718:         Set NoneOption = $(None)
                   1719:     Else
                   1720:         Set NoneOption = ""
                   1721:     Endif
                   1722: 
                   1723:     Shell "" InitListBoxVars $(!STF_LANGUAGE) $(AdapterMergedOptions) $(AdapterSpecialOption) $(Other) $(NoneOption)
                   1724: 
                   1725:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   1726:         set AdapterOptionList     = $($R1)
                   1727:         set AdapterOptionTextList = $($R2)
                   1728:     else
                   1729:         EndWait
                   1730:         shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error2)
                   1731:         goto  finish_adapter
                   1732:     endif
                   1733: 
                   1734:     read-syms DialogConstants
                   1735:     EndWait
                   1736: 
                   1737: ;------------------------------------------------------------
                   1738: ;  Netcard Detection Logic
                   1739: ;------------------------------------------------------------
                   1740:     ;
                   1741:     ;  Clear all the local and global variables associated with
                   1742:     ;  netcard detection.
                   1743:     ;
                   1744:     Set DtOption = ""
                   1745:     Set DtIndex = 0
                   1746:     Set DtInfIndex = 0
                   1747:     Set DtAnyFound = NO
                   1748:     Set !STF_NCOPTION = $(DtOption)
                   1749:     Set !STF_NCDETCARD = $(DtIndex)
                   1750:     Set !STF_NCDETINFO = {}
                   1751: 
                   1752:     ;
                   1753:     ;  Call the NCPA wrapper (through NCPARAM.INF) to enable detection.
                   1754:     ;
                   1755:     Debug-Output "NTLANMAN.INF: calling DTSTART wrapper, mode = "$(!STF_INSTALL_MODE)
                   1756: 
                   1757:     Shell $(NcParamInf) Param_ControlDetection DTSTART
                   1758:     Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
                   1759:           Debug-Output "NTLANMAN.INF: shell error (NCPARAM.INF:Param_ControlDetection) : "$($ShellCode)
                   1760:           Goto adapter_shell_error
                   1761:     Endif
                   1762: 
                   1763:     Ifstr(i) $($R0) != STATUS_SUCCESSFUL
                   1764:         Debug-Output "NTLANMAN.INF: DTSTART wrapper FAILED"
                   1765:         Goto detectbypass
                   1766:     Endif
                   1767:     ;
                   1768:     ;  If we aren't supposed to detect, skip out
                   1769:     ;
                   1770:     Ifstr(i) $(!STF_NCDETECT) == NO
                   1771:         Goto detectbypass
                   1772:     Endif
                   1773:     ;
                   1774:     ;   If CUSTOM, allow the user to skip detection
                   1775:     ;
                   1776:     Ifstr(i) $(!STF_INSTALL_MODE) == CUSTOM
                   1777: 
                   1778: 
                   1779: 
                   1780: 
                   1781: 
                   1782: 
                   1783: 
                   1784: 
                   1785:         Shell "" WarnDetectStart
                   1786:         Ifstr(i) $($R0) != STATUS_SUCCESSFUL
                   1787:             Goto detectbypass
                   1788:         Endif
                   1789: 
                   1790:     Endif
                   1791: 
                   1792: detectcycle = +
                   1793: 
                   1794:     Debug-Output "NTLANMAN.INF: calling DTCARD wrapper"
                   1795: 
                   1796:     StartWait
                   1797: 
                   1798:     Shell $(NcParamInf) Param_DetectCard
                   1799:     Set StartResult = $($R0)
                   1800:     Set StartStatus = *($(StartResult),1)
                   1801: 
                   1802:     Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
                   1803:           Debug-Output "NTLANMAN.INF: shell error (NCPARAM.INF:Param_DetectCard) : "$($ShellCode)
                   1804:           Goto adapter_shell_error
                   1805:     Endif
                   1806: 
                   1807:     EndWait
                   1808: 
                   1809:     Ifint $(StartStatus) == 0
                   1810:         Set DtOption  = *($(StartResult),2)
                   1811:         Set DtIndex   = *($(StartResult),3)
                   1812:         Set DtType    = *($(StartResult),4)
                   1813:         Set DtConf    = *($(StartResult),5)
                   1814:         Set DtBusType = *($(StartResult),6)
                   1815:         Set DtBusNum  = *($(StartResult),7)
                   1816:         Set DtInfo    = {$(DtOption),$(DtIndex),$(DtType),$(DtConf),$(DtBusType),$(DtBusNum)}
                   1817: 
                   1818:         Debug-Output "NTLANMAN.INF: card found is type "$(DtOption)", index "$(DtIndex)
                   1819:         ;
                   1820:         ;  Guarantee that there's an INF file for this card type;
                   1821:         ;  if not, just try again.
                   1822:         ;
                   1823:         Set DtInfIndex = ~($(AdapterOptionList),$(DtOption))
                   1824:         Ifint $(DtInfIndex) == 0
                   1825:             Debug-Output "NTLANMAN.INF: Detect: no INF file for option: "$(DtOption)
                   1826:             Set DtOption = ""
                   1827:             Goto detectcycle
                   1828:         Endif
                   1829:     Else
                   1830:         Set DtOption = ""
                   1831:         Set DtIndex = 0
                   1832:         Set DtInfIndex = 0
                   1833:         Goto detectnotfound
                   1834:     Endif
                   1835: 
                   1836:     Set DtAnyFound = YES
                   1837:     Set DtInfOptionName = *($(AdapterOptionTextList),$(DtInfIndex))
                   1838:     ;
                   1839:     ;  If EXPRESS, accept the card automatically
                   1840:     ;
                   1841:     Ifstr(i) $(!STF_INSTALL_MODE) == EXPRESS
                   1842:         Goto detectend
                   1843:     Endif
                   1844:     ;
                   1845:     ;  See if the user wants this card or wants to quit
                   1846:     ;
                   1847: 
                   1848: 
                   1849: 
                   1850: 
                   1851: 
                   1852: 
                   1853: 
                   1854: 
                   1855: 
                   1856: 
                   1857: 
                   1858:     Shell "" WarnDetectAccept $(DtInfOptionName)
                   1859: 
                   1860:     Ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   1861:         Goto detectend   ;  user likes this choice
                   1862:     Endif
                   1863: 
                   1864: 
                   1865:     Set DtInfOption = 0
                   1866:     Set DtOption = ""
                   1867:     Set DtInfIndex = 0
                   1868: 
                   1869:     Ifstr(i) $($R0) != STATUS_TRY_AGAIN
                   1870:         Goto detectend   ;  user wants to quit
                   1871:     Endif
                   1872:     ;
                   1873:     ;  User doesn't want this card; try again.
                   1874:     ;
                   1875:     Goto detectcycle
                   1876: 
                   1877: detectnotfound = +
                   1878: 
                   1879:     Shell "" WarnDetectFail $(DtAnyFound)
                   1880:     Ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   1881:         Goto detectend
                   1882:     Endif
                   1883:     ;
                   1884:     ;  User wants to keep trying; reset the iteration
                   1885:     ;
                   1886:     Debug-Output "NTLANMAN.INF: calling DTRESET wrapper"
                   1887: 
                   1888:     Shell $(NcParamInf) Param_ControlDetection DTRESET
                   1889:     Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
                   1890:           Debug-Output "NTLANMAN.INF: shell error (NCPARAM.INF:Param_ControlDetection) : "$($ShellCode)
                   1891:           Goto adapter_shell_error
                   1892:     Endif
                   1893: 
                   1894:     Goto detectcycle
                   1895: 
                   1896: detectend = +
                   1897:     ;
                   1898:     ;  Establish global variables.
                   1899:     ;
                   1900:     Set !STF_NCOPTION  = $(DtOption)
                   1901:     Set !STF_NCDETCARD = $(DtIndex)
                   1902:     Set !STF_NCDETINFO = $(DtInfo)
                   1903: 
                   1904: detectbypass = +
                   1905:     ;
                   1906:     ;  If we detected (and accepted) a netcard, use it.
                   1907:     ;
                   1908:     Ifstr(i) $(!STF_NCOPTION) != ""
                   1909:         Set AdapterOption = $(!STF_NCOPTION)
                   1910:         Goto install_adapter
                   1911:     Endif
                   1912: 
                   1913:     ;
                   1914:     ;  If main installation, check to see if the user wants RAS
                   1915:     ;
                   1916:     Ifstr(i) $(!NTN_Origination) != "ncpa"
                   1917:         Shell "" WarnCheckRas
                   1918:         Ifstr(i) $($R0) == STATUS_WANTRAS
                   1919:             Set Status = STATUS_WANTRAS
                   1920:             Goto finish_adapter
                   1921:         Endif
                   1922:     Endif
                   1923: 
                   1924: adapter = +
                   1925: 
                   1926:     read-syms QueryAdapter$(!STF_LANGUAGE)
                   1927:     ;
                   1928:     ;  Set textual variations for dialog text based on mode and product type
                   1929:     ;
                   1930:     Ifstr(i) $(!NTN_Origination) == "ncpa"
                   1931:         ;  Secondary installation or NTLMINST.INF
                   1932:         Set DlgText = $(DlgText2)
                   1933:     Else-Ifstr(i) $(!STF_PRODUCT) == "LANMANNT"
                   1934:         ;  Primary installation, Advanced Server
                   1935:         Set DlgText = $(DlgTextLm)
                   1936:         Set Cancel = $(ExitSetup)
                   1937:     Else
                   1938:         ;  Primary installation, Windows NT
                   1939:         Set Cancel = $(ExitNoNet)
                   1940:     Endif
                   1941: 
                   1942:     ui start "System"
                   1943: 
                   1944:     ifstr(i) $(DLGEVENT) == "CONTINUE"
                   1945:         Debug-Output "NTLANMAN.INF: CONTINUE message from adapter dialog"
                   1946: 
                   1947:         ; Find out the option which changed.
                   1948:         ;
                   1949:         ifstr(i) $(Combo1Out) == $(None)
                   1950: 
                   1951:             ;  Verify that this is REALLY what the user wants
                   1952: 
                   1953:             Shell "" QueryNoNic $(!STF_LANGUAGE)
                   1954:             Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
                   1955:                Debug-Output "NTLANMAN.INF: SHELL ERROR: "$($ShellCode)
                   1956:             Endif
                   1957:             Ifstr(i) $($R0) == "OK"
                   1958:                 set AdapterOption = NONE
                   1959:                 ui pop 1
                   1960:                 goto install_adapter
                   1961:             Endif
                   1962: 
                   1963:             set ReInit = NO
                   1964:             goto adapter
                   1965: 
                   1966:         else-ifstr(i) $(Combo1Out) != $(Other)
                   1967:             set AdapterOption = *($(AdapterOptionList), ~($(Combo1List), $(Combo1Out)))
                   1968:             ui pop 1
                   1969:             goto install_adapter
                   1970:         else
                   1971:             Debug-Output "NTLANMAN.INF: Chose OTHER; calling GetNewOEMOption..."
                   1972:             shell "OTHER.INF" GetNewOEMMultiOption $(!STF_LANGUAGE) +
                   1973:                 $(AdapterOemINFOptions) NetAdapter +
                   1974:                 $(AdapterDisketteSrc)
                   1975:             set ReInit = YES
                   1976:             ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   1977:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption successful"
                   1978:                 ;
                   1979:                 ; extract the new variables
                   1980:                 ;
                   1981:                 set AdapterOemINFOptions  = $($R1)
                   1982:                 set AdapterOption         = $($R2)
                   1983:                 set AdapterDisketteSrc    = $($R4)
                   1984:                 ;
                   1985:                 ; Merge our options with the oem options
                   1986:                 ;
                   1987:                 shell "" MergeOptions $(AdapterOurINFOptions) $(AdapterOemINFOptions)
                   1988:                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   1989:                     set AdapterMergedOptions = {$($R1), $($R2)}
                   1990:                 else
                   1991:                     shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error4)
                   1992:                     ui pop 1
                   1993:                     goto finish_adapter
                   1994:                 endif
                   1995: 
                   1996:                 ;
                   1997:                 ; Initialise the listbox vars
                   1998:                 ;
                   1999:                 shell "" InitListBoxVars $(!STF_LANGUAGE) $(AdapterMergedOptions) $(AdapterSpecialOption) $(Other) $(None)
                   2000:                 ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2001:                     set AdapterOptionList     = $($R1)
                   2002:                     set AdapterOptionTextList = $($R2)
                   2003:                 else
                   2004:                     shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error2)
                   2005:                     ui pop 1
                   2006:                     goto  finish_adapter
                   2007:                 endif
                   2008: 
                   2009:                 ui pop 1
                   2010:                 goto install_adapter
                   2011: 
                   2012:             else-ifstr(i) $($R0) == "STATUS_USERCANCEL"
                   2013:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption user cancelled"
                   2014:                 goto adapter
                   2015:             else
                   2016:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption other error"
                   2017:                 shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Error3)
                   2018:                 goto adapter
                   2019:             endif
                   2020: 
                   2021:         endif
                   2022: 
                   2023:         set ReInit = NO
                   2024:         goto adapter
                   2025: 
                   2026:     else-ifstr(i) $(DLGEVENT) == "BACK"
                   2027:         set ExitChoice = "OK"
                   2028: 
                   2029:         ifstr(i) $(!NTN_Origination) != "NCPA"
                   2030:             Debug-Output "NTLANMAN.INF: EXIT button: see if user wants to quit"
                   2031:             Shell "" QueryUserQuit $(!STF_LANGUAGE)
                   2032: 
                   2033:             Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
                   2034:                Debug-Output "NTLANMAN.INF: SHELL ERROR: "$($ShellCode)
                   2035:             Endif
                   2036: 
                   2037:             Set Status = $($R0)
                   2038:             Debug-Output "NTLANMAN.INF: QueryUserQuit returned "$(Status)
                   2039:         Else
                   2040:             Set Status = STATUS_USERCANCEL
                   2041:         endif
                   2042: 
                   2043:         ifstr(i) $(Status) != STATUS_SUCCESSFUL
                   2044:             Debug-Output "NTLANMAN.INF: Quitting [InitialAdapterInstall]"
                   2045:             ui pop 1
                   2046:             goto finish_adapter
                   2047:         else
                   2048:             set  ReInit = NO
                   2049:             goto adapter
                   2050:         endif
                   2051:     else
                   2052:         ui pop 1
                   2053:         goto finish_adapter
                   2054:     endif
                   2055: 
                   2056: install_adapter = +
                   2057:     Debug-Output "NTLANMAN.INF: Adapter option is "$(AdapterOption)
                   2058: 
                   2059:     ;
                   2060:     ; See if the option is NONE; skip out if so
                   2061:     ;
                   2062:     Ifstr(i) $(AdapterOption) == NONE
                   2063:        Set Status = STATUS_SUCCESSFUL
                   2064:         goto skip_setinstall
                   2065:     Endif
                   2066: 
                   2067:     ;
                   2068:     ; See if option has changed
                   2069:     ;
                   2070:     set Changed = YES
                   2071:     ifstr(i) $(AdapterOption) == *($(AdapterCurrentOption), 1)
                   2072:         set Changed = NO
                   2073:     endif
                   2074: 
                   2075:     set AdapterInstall = YES
                   2076: 
                   2077:     ;
                   2078:     ; check special option first... skip
                   2079:     ;
                   2080: 
                   2081:     ifstr(i) $(AdapterSpecialOption) != {}
                   2082:         ifstr(i) $(AdapterOption) == *($(AdapterSpecialOption), 1)
                   2083:             goto skip_setinstall
                   2084:         endif
                   2085:     endif
                   2086: 
                   2087:     ; choose file name and path based upon origin
                   2088: 
                   2089:     set AdapterSrcDir = $(AdapterDisketteSrc)
                   2090: 
                   2091:     shell "" GetOptionFile $(AdapterOption) $(AdapterOemINFOptions)
                   2092:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2093:         set AdapterINF = $(!STF_WINDOWSSYSPATH)"\"$($R1)
                   2094:         set AdapterSrcDir = $(AdapterDisketteSrc)
                   2095:         ;
                   2096:         ;  For both IDW and OEM, force "do copy" and "add copy" back to YES
                   2097:         ;
                   2098:         Set !STF_SRCDIR_OVERRIDE = $(AdapterSrcDir)
                   2099:         Set !NtLmDoCopy = "YES"
                   2100:         Set !NtLmAddCopy = "YES"
                   2101:         goto skip_setinstall
                   2102:     endif
                   2103: 
                   2104:     ;
                   2105:     ; check if our option
                   2106:     ;
                   2107: 
                   2108:     shell "" GetOptionFile $(AdapterOption) $(AdapterOurINFOptions)
                   2109:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2110:         set AdapterINF = $($R1)
                   2111:         set AdapterSrcDir = $(!STF_SRCDIR)
                   2112:     endif
                   2113: 
                   2114: skip_setinstall = +
                   2115: 
                   2116:     ifstr(i) $(AdapterInstall) == YES
                   2117:         ifstr(i)  $(AdapterINF) != ""
                   2118:             read-syms Billboard8$(!STF_LANGUAGE)
                   2119: 
                   2120:             Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
                   2121: 
                   2122:             shell $(AdapterINF) InstallOption $(!STF_LANGUAGE) $(AdapterOption) $(AdapterSrcDir) +
                   2123:                   $(!NtLmAddCopy) $(!NtLmDoCopy) $(!NtLmDoConfig)
                   2124:             Set Status = $($R0)
                   2125: 
                   2126:             Set !STF_SRCDIR_OVERRIDE = ""
                   2127: 
                   2128:             Shell "subroutn.inf" PopBillboard
                   2129:             Ifstr(i) $(Status) == STATUS_USERCANCEL
                   2130:                 Goto adapter
                   2131:             Endif
                   2132:         endif
                   2133:     endif
                   2134: 
                   2135:     goto finish_adapter
                   2136: 
                   2137: adapter_shell_error = +
                   2138:     set Status = STATUS_FAILED
                   2139: ;
                   2140: ;  At this point, $(Status) is one of:
                   2141: ;
                   2142: ;     STATUS_SUCCESSFUL
                   2143: ;     STATUS_USERCANCEL
                   2144: ;     STATUS_EXITNET   (only if main installation)
                   2145: ;     STATUS_WANTRAS   (if RAS was chosen as netcard option)
                   2146: ;
                   2147: finish_adapter = +
                   2148:     Ifstr(i)  $(AdapterSrcDir) != ""
                   2149:         Ifstr(i)  $(AdapterSrcDir) != $(!STF_SRCDIR)
                   2150:             Set !STF_SRCDIR_OVERRIDE = $(AdapterSrcDir)
                   2151:         Endif
                   2152:     Endif
                   2153: 
                   2154:     Return $(Status)
                   2155: 
                   2156: ;-----------------------------------------------------------------------
                   2157: ;-----------------------------------------------------------------------
                   2158: ;-----------------------------------------------------------------------
                   2159: ;-----------------------------------------------------------------------
                   2160: ;-----------------------------------------------------------------------
                   2161: ;-----------------------------------------------------------------------
                   2162: ;-----------------------------------------------------------------------
                   2163: ;-----------------------------------------------------------------------
                   2164: ;  GenMergeLists
                   2165: ;
                   2166: ;    Merge any two lists:
                   2167: ;
                   2168: ; INPUTS:     $0   list A
                   2169: ;             $1   list B
                   2170: ;
                   2171: ; OUTPUTS:    $R0  list (A+B)
                   2172: ;
                   2173: [GenMergeLists]
                   2174:     ForListDo $($1)
                   2175:         Set $0 = >($($0),$($))
                   2176:     EndForListDo
                   2177: 
                   2178:     Return $($0)
                   2179: 
                   2180: 
                   2181: [OemSoftVars]
                   2182:     OemSoftHardwareDetected      = ""
                   2183:     OemSoftSystemSet             = ""
                   2184:     OemSoftDefault               = ""
                   2185:     OemSoftOurINFOptions         = {}
                   2186:     OemSoftOemINFOptions         = {}
                   2187:     OemSoftMergedOptions         = {}
                   2188:     OemSoftSpecialOption         = {}
                   2189:     OemSoftCurrentOption         = {}
                   2190: 
                   2191:     OemSoftOptionList            = {}
                   2192:     OemSoftOptionTextList        = {}
                   2193:     OemSoftOption                = {}
                   2194:     OemSoftINF                   = ""
                   2195:     OemSoftInstall               = "NO"
                   2196:     OemSoftSrcDir                = ""
                   2197:     OemSoftDstDir                = ""
                   2198: 
                   2199: [OemSoftTypes]
                   2200:     NDR = NetDriver,    ndr
                   2201:     NXP = NetTransport, nxp
                   2202:     NSV = NetService,   nsv
                   2203:     NWK = Network,      nwk
                   2204:     NPR = NetProvider,  npr
                   2205: 
                   2206: [OemSoftwareInstall]
                   2207:     Debug-Output "NTLANMAN.INF: Begin OEM software installation"
                   2208:     ;
                   2209:     ;
                   2210:     StartWait
                   2211: 
                   2212:     set Status = STATUS_FAILED
                   2213:     read-syms OemOptionDiskette$(!STF_LANGUAGE)
                   2214:     read-syms Strings$(!STF_LANGUAGE)
                   2215:     read-syms ProgressCopy$(!STF_LANGUAGE)
                   2216: 
                   2217:     Shell "subroutn.inf" ReadSetupHelpIds
                   2218:     SetHelpFile "setupnt.hlp" $(!MinimumID) $(!MaximumID)
                   2219: 
                   2220:     read-syms OemSoftVars
                   2221: 
                   2222:     ;
                   2223:     ;  Set the Copy and Config flags based upon whether
                   2224:     ;  the NCPA called us or this is main installation
                   2225:     ;
                   2226:     Set !NtLmDoCopy   = "YES"
                   2227:     Set !NtLmAddCopy  = "YES"
                   2228:     Set !NtLmDoConfig = "NO"
                   2229: 
                   2230:     Ifstr(i) $(!NTN_Origination) == "ncpa"
                   2231:         ;  Secondary installation
                   2232:         Ifstr(i) $(!STF_IDW) == "TRUE"
                   2233:             Set !NtLmAddCopy  = "NO"
                   2234:             Set !NtLmDoCopy   = "NO"
                   2235:         Endif
                   2236:     Else
                   2237:         ;  Primary installation
                   2238:         Set !NtLmDoCopy   = "NO"
                   2239:         Ifstr(i) $(!STF_IDW) == "TRUE"
                   2240:             Set !NtLmAddCopy  = "NO"
                   2241:         Endif
                   2242:     Endif
                   2243: 
                   2244: 
                   2245:     Set OemSoftTypeNames = ^(OemSoftTypes,1)
                   2246:     Set OemSoftTypeIds   = ^(OemSoftTypes,2)
                   2247:     EndWait
                   2248: 
                   2249:     ;
                   2250:     ; initialize all the OEM software option vars
                   2251:     ;
                   2252:     read-syms Billboard9$(!STF_LANGUAGE)
                   2253:     Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
                   2254:     StartWait
                   2255: 
                   2256:     shell "" InitOptionVars $(!STF_LANGUAGE) $(OemSoftTypeNames) $(OemSoftHardwareDetected) $(OemSoftSystemSet) $(OemSoftDefault)
                   2257:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2258:         set OemSoftOurINFOptions = $($R1)
                   2259:         set OemSoftOemINFOptions = $($R2)
                   2260:         set OemSoftMergedOptions = $($R3)
                   2261:         set OemSoftSpecialOption = $($R4)
                   2262:         set OemSoftCurrentOption = $($R5)
                   2263:         set OemSoftOption        = *($($R5), 1)
                   2264:     else
                   2265:         EndWait
                   2266:         Shell "subroutn.inf" PopBillboard
                   2267:         shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error1)
                   2268:         goto finish_oemsoft
                   2269:     endif
                   2270: 
                   2271:     EndWait
                   2272:     Shell "subroutn.inf" PopBillboard
                   2273:     StartWait
                   2274:     ;
                   2275:     ; Initalize the listbox vars
                   2276:     ;
                   2277:     shell "" InitListBoxVars $(!STF_LANGUAGE) $(OemSoftMergedOptions) $(OemSoftSpecialOption) $(Other) ""
                   2278: 
                   2279:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2280:         set OemSoftOptionList     = $($R1)
                   2281:         set OemSoftOptionTextList = $($R2)
                   2282:     else
                   2283:         EndWait
                   2284:         shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error2)
                   2285:         goto  finish_oemsoft
                   2286:     endif
                   2287: 
                   2288:     read-syms DialogConstants
                   2289:     EndWait
                   2290: 
                   2291: oemsoft = +
                   2292: 
                   2293:     read-syms QueryOemSoft$(!STF_LANGUAGE)
                   2294: 
                   2295:     ui start "System"
                   2296: 
                   2297:     ifstr(i) $(DLGEVENT) == "CONTINUE"
                   2298:         Debug-Output "NTLANMAN.INF: CONTINUE message from OEM software dialog"
                   2299:         ;
                   2300:         ; Find out the option which changed.
                   2301:         ;
                   2302:         ifstr(i) $(Combo1Out) != $(Other)
                   2303:             set OemSoftOption = *($(OemSoftOptionList), ~($(Combo1List), $(Combo1Out)))
                   2304:             Debug-Output "NTLANMAN.INF: Changed to choice "$(OemSoftOption)
                   2305:             ui pop 1
                   2306:             goto install_oemsoft
                   2307:         else
                   2308:             Debug-Output "NTLANMAN.INF: Chose OTHER; calling GetNewOEMMultiOption..."
                   2309:             shell "OTHER.INF" GetNewOEMMultiOption $(!STF_LANGUAGE) $(OemSoftOemINFOptions) $(OemSoftTypeNames) $(OemSoftDisketteSrc)
                   2310:             Set ReInit = YES
                   2311:             ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   2312:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption successful"
                   2313:                 ;
                   2314:                 ; extract the new variables
                   2315:                 ;
                   2316:                 set OemSoftOemINFOptions  = $($R1)
                   2317:                 set OemSoftOption         = $($R2)
                   2318:                 set OemSoftDisketteSrc    = $($R4)
                   2319:                 ;
                   2320:                 ; Merge our options with the oem options
                   2321:                 ;
                   2322:                 shell "" MergeOptions $(OemSoftOurINFOptions) $(OemSoftOemINFOptions)
                   2323:                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   2324:                     set OemSoftMergedOptions = {$($R1), $($R2)}
                   2325:                 else
                   2326:                     shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error4)
                   2327:                     ui pop 1
                   2328:                     goto finish_oemsoft
                   2329:                 endif
                   2330: 
                   2331:                 ;
                   2332:                 ; Initialise the listbox vars
                   2333:                 ;
                   2334:                 shell "" InitListBoxVars $(!STF_LANGUAGE) $(OemSoftMergedOptions) $(OemSoftSpecialOption) $(Other) ""
                   2335:                 ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2336:                     set OemSoftOptionList     = $($R1)
                   2337:                     set OemSoftOptionTextList = $($R2)
                   2338:                 else
                   2339:                     shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error2)
                   2340:                     ui pop 1
                   2341:                     goto  finish_oemsoft
                   2342:                 endif
                   2343: 
                   2344:                 ui pop 1
                   2345:                 goto install_oemsoft
                   2346: 
                   2347:             else-ifstr(i) $($R0) == "STATUS_USERCANCEL"
                   2348:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption user cancelled"
                   2349:                 goto oemsoft
                   2350:             else
                   2351:                 Debug-Output "NTLANMAN.INF: GetNewOEMOption other error"
                   2352:                 shell "SUBROUTN.INF" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Error3)
                   2353:                 goto oemsoft
                   2354:             endif
                   2355: 
                   2356:         endif
                   2357: 
                   2358:         set ReInit = NO
                   2359:         goto oemsoft
                   2360: 
                   2361:     else-ifstr(i) $(DLGEVENT) == "BACK"
                   2362:         set Status = STATUS_USERCANCEL
                   2363:         ui pop 1
                   2364:         goto finish_oemsoft
                   2365:     else
                   2366:         ui pop 1
                   2367:         goto finish_oemsoft
                   2368:     endif
                   2369: 
                   2370: install_oemsoft = +
                   2371:     ;
                   2372:     ; See if option has changed
                   2373:     ;
                   2374:     set Changed = YES
                   2375:     ifstr(i) $(OemSoftOption) == *($(OemSoftCurrentOption), 1)
                   2376:         set Changed = NO
                   2377:     endif
                   2378: 
                   2379:     ;
                   2380:     ; If option has not changed and we are SETUPBOOTED mode then skip
                   2381:     ;
                   2382:     ifstr(i) $(Changed) == "NO"
                   2383:         ifstr(i) $(!STF_INSTALL_TYPE) == "SETUPBOOTED"
                   2384:             set OemSoftInstall = "NO"
                   2385:             goto skip_setinstall
                   2386:         endif
                   2387:     endif
                   2388:     set OemSoftInstall = "YES"
                   2389: 
                   2390:     ;
                   2391:     ; check special option first
                   2392:     ;
                   2393: 
                   2394:     ifstr(i) $(OemSoftSpecialOption) != {}
                   2395:         ifstr(i) $(OemSoftOption) == *($(OemSoftSpecialOption), 1)
                   2396:             goto skip_setinstall
                   2397:         endif
                   2398:     endif
                   2399: 
                   2400:     ; choose file name and path based upon origin
                   2401: 
                   2402:     set OemSoftSrcDir = $(OemSoftDisketteSrc)
                   2403: 
                   2404:     shell "" GetOptionFile $(OemSoftOption) $(OemSoftOemINFOptions)
                   2405:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2406:         set OemSoftINF = $(!STF_WINDOWSSYSPATH)"\"$($R1)
                   2407:         set OemSoftSrcDir = $(OemSoftDisketteSrc)
                   2408:         ;
                   2409:         ;  For both IDW and OEM, force "do copy" and "add copy" back to YES
                   2410:         ;
                   2411:         Set !STF_SRCDIR_OVERRIDE = $(OemSoftSrcDir)
                   2412:         Set !NtLmDoCopy = "YES"
                   2413:         Set !NtLmAddCopy = "YES"
                   2414:         goto skip_setinstall
                   2415:     endif
                   2416: 
                   2417:     ; check if our option
                   2418: 
                   2419:     shell "" GetOptionFile $(OemSoftOption) $(OemSoftOurINFOptions)
                   2420:     ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2421:         set OemSoftINF = $($R1)
                   2422:         set OemSoftSrcDir = $(!STF_SRCDIR)
                   2423:         goto skip_setinstall
                   2424:     endif
                   2425: 
                   2426: skip_setinstall = +
                   2427: 
                   2428:     ifstr(i) $(OemSoftInstall) == "YES"
                   2429:         ifstr(i)  $(OemSoftINF) != ""
                   2430: 
                   2431:             shell $(OemSoftINF) InstallOption $(!STF_LANGUAGE) $(OemSoftOption) $(OemSoftSrcDir) +
                   2432:                   $(!NtLmAddCopy) $(!NtLmDoCopy) $(!NtLmDoConfig)
                   2433: 
                   2434:             Set !STF_SRCDIR_OVERRIDE = ""
                   2435:             Set Status = $($R0)
                   2436: 
                   2437:             Ifstr(i) $(Status) == STATUS_USERCANCEL
                   2438:                 Goto oemsoft
                   2439:             Endif
                   2440:         endif
                   2441:     endif
                   2442: 
                   2443: finish_oemsoft = +
                   2444: 
                   2445:     Ifstr(i)  $(OemSoftSrcDir) != ""
                   2446:         Ifstr(i)  $(OemSoftSrcDir) != $(!STF_SRCDIR)
                   2447:             Set !STF_SRCDIR_OVERRIDE = $(OemSoftSrcDir)
                   2448:         Endif
                   2449:     Endif
                   2450: 
                   2451:     Return $(Status)
                   2452: 
                   2453: 
                   2454: 
                   2455: ;-----------------------------------------------------------------------
                   2456: ;
                   2457: ; ROUTINE:      InitOptionVars
                   2458: ;
                   2459: ; DESCRIPTION:  This routine intialises the values for the option we are
                   2460: ;               dealing with.  It finds out the options supported by setup.
                   2461: ;               It also sees if there is an OEM INF in the windows system
                   2462: ;               directory which represents this option.  If so it reads in
                   2463: ;               the options supported by this INF and then forms a merged
                   2464: ;               list from the two.
                   2465: ;
                   2466: ; INPUTS:       $0:  Language to use
                   2467: ;               $1:  OptionTypeList; e.g.,  { NetDriver, NetTransport }
                   2468: ;               $2:  Hardware detected option
                   2469: ;               $3:  Software set option
                   2470: ;               $4:  Default value for option
                   2471: ;
                   2472: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL |
                   2473: ;                              STATUS_FAILED
                   2474: ;
                   2475: ;               $R1: OurINFOptions var {{filename, {OptionList}, {OptionTextList}}}
                   2476: ;               $R2: OemINFOptions var {{filename, {OptionList}, {OptionTextList}}, etc}
                   2477: ;               $R3: Merged INF Options {{OptionList}, {OptionTextList}}
                   2478: ;               $R4: Special Options {Option, OptionText}
                   2479: ;               $R5: Current Option {Option, OptionText}
                   2480: ;
                   2481: ;------------------------------------------------------------------------
                   2482: [InitOptionVars]
                   2483: 
                   2484:     Debug-Output "NTLANMAN.INF: InitOptionVars called"
                   2485: 
                   2486:     set Status           = STATUS_FAILED
                   2487:     set OurINFOptions    = {}
                   2488:     set OemINFOptions    = {}
                   2489:     set MergedINFOptions = {}
                   2490:     set SpecialOption    = {}
                   2491:     set CurrentOption    = {}
                   2492:     Set IovTypeList      = $($1)
                   2493: 
                   2494:     ;
                   2495:     ; Determine all Oem options for all types given.  These
                   2496:     ; are considered to be "our" options, as opposed to newly
                   2497:     ; added INF files, which are "oem".
                   2498:     ;
                   2499:     ForListDo $(IovTypeList)
                   2500:         Debug-Output "NTLANMAN.INF: Get options for type "$($)
                   2501:         shell "OTHER.INF" ReturnOemOptions $($0) $($)
                   2502:         ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
                   2503:             Debug-Output "NTLANMAN.INF: Other OEM options found for type "$($)
                   2504:             shell "" GenMergeLists $(OurINFOptions) $($R1)
                   2505:             set OurINFOptions = $($R0)
                   2506:         endif
                   2507:     EndForListDo
                   2508:     ;
                   2509:     ; Merge the two and set the merged list
                   2510:     ;
                   2511:     shell "" MergeOptions $(OurINFOptions) $(OemINFOptions)
                   2512:     ifstr(i) $($R0) == STATUS_SUCCESSFUL
                   2513:         set MergedINFOptionList     = $($R1)
                   2514:         set MergedINFOptionTextList = $($R2)
                   2515:         set MergedINFOptions        = {$($R1), $($R2)}
                   2516:     else
                   2517:         Debug-Output "NTLANMAN.INF: InitOptionVars: MergeOptions failed"
                   2518:         goto finish_InitOptionVars
                   2519:     endif
                   2520: 
                   2521:     ;
                   2522:     ; Form current option.
                   2523:     ;
                   2524:     ; Algorithm:
                   2525:     ;
                   2526:     ; Check software set value.  If this doesn't exist get hardware detected
                   2527:     ; value. If not detected set value to default.
                   2528:     ;
                   2529:     set Option = ""
                   2530:     ifstr(i) $($3) != ""
                   2531:         set Option = $($3)
                   2532:     else
                   2533:         ifstr(i) $($2) != ""
                   2534:             set Option = $($2)
                   2535:         else-ifstr(i) $($4) == ""
                   2536:             set Option = ""
                   2537:         else
                   2538:             set Option = $($4)
                   2539:         endif
                   2540:     endif
                   2541: 
                   2542:     ;
                   2543:     ; Check Option against all the options supported
                   2544:     ; If found set Current Option, else set the special options var
                   2545:     ; and set this to the current option.
                   2546:     ;
                   2547: 
                   2548:     ifstr(i) $(Option) == ""
                   2549:         set OptionText = ""
                   2550:     else-ifcontains(i) $(Option) in $(MergedINFOptionList)
                   2551:         set OptionText = *($(MergedINFOptionTextList), ~($(MergedINFOptionList), $(Option)))
                   2552:     else
                   2553:         set OptionText    = $(Option)
                   2554:         set Option        = "OEMINSTALLEDOPTION"
                   2555:         set SpecialOption = {$(Option), $(OptionText)}
                   2556:     endif
                   2557: 
                   2558:     set CurrentOption = {$(Option), $(OptionText)}
                   2559:     set Status = STATUS_SUCCESSFUL
                   2560: 
                   2561: finish_InitOptionVars = +
                   2562:     Debug-Output "NTLANMAN.INF::InitOptionVars complete "
                   2563: 
                   2564:     Return $(Status) $(OurINFOptions) $(OemINFOptions) $(MergedINFOptions) $(SpecialOption) $(CurrentOption)
                   2565: 
                   2566: 
                   2567: ;-------------------------------------------------------------------------
                   2568: ;
                   2569: ; ROUTINE:      InitListBoxVars
                   2570: ;
                   2571: ; DESCRIPTION:  This routine initialises the option list and the option text
                   2572: ;               list to be displayed to the user.
                   2573: ;
                   2574: ; INPUTS:       $0: Language
                   2575: ;               $1: MergedINFOptions
                   2576: ;               $2: SpecialOption
                   2577: ;               $3: OtherOption
                   2578: ;               $4: NoneOption
                   2579: ;
                   2580: ; OUTPUTS:      $R0: STATUS: STATUS_FAILED |
                   2581: ;                            STATUS_SUCCESSFUL
                   2582: ;
                   2583: ;               $R1: OptionList
                   2584: ;               $R2: OptionTextList
                   2585: ;
                   2586: ;----------------------------------------------------------------------------
                   2587: [InitListBoxVars]
                   2588: 
                   2589:     Debug-Output "NTLANMAN.INF::InitListBoxVars invoked"
                   2590: 
                   2591:     set Status         = STATUS_FAILED
                   2592:     set OptionList     = {}
                   2593:     set OptionTextList = {}
                   2594:     Set OptOther       = $($3)
                   2595:     Set OptNone        = $($4)
                   2596:     Set UtilityInf     = "UTILITY.INF"
                   2597: 
                   2598:     ;
                   2599:     ; Process the standard options
                   2600:     ;
                   2601: 
                   2602:     ifstr(i) $($1) != {}
                   2603:         set OptionList     = *($($1), 1)
                   2604:         set OptionTextList = *($($1), 2)
                   2605:     endif
                   2606: 
                   2607:     ;
                   2608:     ; Process the special option if present
                   2609:     ;
                   2610: 
                   2611:     ifstr(i) $($2) != {}
                   2612:         set OptionList     = >($(OptionList),     *($($2), 1))
                   2613:         set OptionTextList = >($(OptionTextList), *($($2), 2))
                   2614:     endif
                   2615:     ;
                   2616:     ; Sort the lists ascending, case-insensitive
                   2617:     ;
                   2618:     Shell $(UtilityInf) SortListIndex $(OptionTextList) TRUE FALSE
                   2619:     Set IndexList = $($R0)
                   2620:     Shell $(UtilityInf) SortByIndex $(OptionTextList) $(IndexList)
                   2621:     Set OptionTextList = $($R0)
                   2622:     Shell $(UtilityInf) SortByIndex $(OptionList) $(IndexList)
                   2623:     Set OptionList = $($R0)
                   2624: 
                   2625:     ;
                   2626:     ; Add the "other" and "none" options only to the text list
                   2627:     ;  (if present)
                   2628:     ;
                   2629:     Ifstr(i) $(OptOther) != ""
                   2630:         set OptionTextList = >($(OptionTextList), $(OptOther))
                   2631:     Endif
                   2632:     Ifstr(i) $(OptNone) != ""
                   2633:         set OptionTextList = >($(OptionTextList), $(OptNone))
                   2634:     Endif
                   2635: 
                   2636:     set Status = STATUS_SUCCESSFUL
                   2637: 
                   2638:     Return $(Status) $(OptionList) $(OptionTextList)
                   2639: 
                   2640: 
                   2641: ;-----------------------------------------------------------------------
                   2642: ;
                   2643: ; ROUTINE:      MergeOptions
                   2644: ;
                   2645: ; DESCRIPTION:  This merges the option lists to form the master list of
                   2646: ;               options and optiontext.
                   2647: ;
                   2648: ; INPUTS:       $0:  OurOptionList
                   2649: ;               $1:  OemOptionList
                   2650: ;
                   2651: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL  |
                   2652: ;                              STATUS_FAILED
                   2653: ;
                   2654: ;               $R1: MergedOptionList
                   2655: ;               $R2: MergedOptionTextList
                   2656: ;
                   2657: ;
                   2658: ;------------------------------------------------------------------------
                   2659: [MergeOptions]
                   2660: 
                   2661:     Debug-Output "NTLANMAN.INF: MergeOptions called"
                   2662: 
                   2663:     set Status               = STATUS_FAILED
                   2664:     set MergedOptionList     = {}
                   2665:     set MergedOptionTextList = {}
                   2666: 
                   2667:     ;
                   2668:     ; First merge our options in
                   2669:     ;
                   2670: 
                   2671:     ForListDo $($0)
                   2672:         set OptionList     = *($($), 2)
                   2673:         set OptionTextList = *($($), 3)
                   2674:         ForListDo $(OptionList)
                   2675:             Ifcontains $($) in $(MergedOptionList)
                   2676:             else
                   2677:                 set MergedOptionList     = >($(MergedOptionList), $($))
                   2678:                 set MergedOptionTextList = >($(MergedOptionTextList), *($(OptionTextList), $(#)))
                   2679:             endif
                   2680:         EndForListDo
                   2681:     EndForListDo
                   2682: 
                   2683: 
                   2684:     ;
                   2685:     ; Then merge the oem options in
                   2686:     ;
                   2687: 
                   2688:     ForListDo $($1)
                   2689:         set OptionList     = *($($), 2)
                   2690:         set OptionTextList = *($($), 3)
                   2691:         ForListDo $(OptionList)
                   2692:             Ifcontains $($) in $(MergedOptionList)
                   2693:             else
                   2694:                 set MergedOptionList     = >($(MergedOptionList), $($))
                   2695:                 set MergedOptionTextList = >($(MergedOptionTextList), *($(OptionTextList), $(#)))
                   2696:             endif
                   2697:         EndForListDo
                   2698:     EndForListDo
                   2699: 
                   2700:     set Status = STATUS_SUCCESSFUL
                   2701:     Return $(Status) $(MergedOptionList) $(MergedOptionTextList)
                   2702: 
                   2703: 
                   2704: ;-----------------------------------------------------------------------
                   2705: ;
                   2706: ; ROUTINE:      GetOptionFile
                   2707: ;
                   2708: ; DESCRIPTION:  Given the Option list and the current option, determines
                   2709: ;               if the current option is a supported option and returns the
                   2710: ;               file representing the option
                   2711: ;
                   2712: ; INPUTS:       $0:  OptionChosen
                   2713: ;               $1:  OptionList {{filename, {optionlist}, {optiontextlist}}
                   2714: ;
                   2715: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   |
                   2716: ;                              STATUS_FILENOTFOUND |
                   2717: ;                              STATUS_FAILED
                   2718: ;
                   2719: ;               $R1: FileName
                   2720: ;
                   2721: ;------------------------------------------------------------------------
                   2722: [GetOptionFile]
                   2723: 
                   2724:     Debug-Output "NTLANMAN.INF: GetOptionFile called"
                   2725: 
                   2726:     set Status      = STATUS_FILENOTFOUND
                   2727:     set FileName = ""
                   2728:     ;
                   2729:     ForListDo $($1)
                   2730:         set OptionFile = *($($), 1)
                   2731:         set OptionList = *($($), 2)
                   2732:         ForListDo $(OptionList)
                   2733:             ifstr(i) $($) == $($0)
                   2734:                 set Status = STATUS_SUCCESSFUL
                   2735:                 set FileName = $(OptionFile)
                   2736:             endif
                   2737:         EndForListDo
                   2738:     EndForListDo
                   2739: 
                   2740: finish_GetOptionFile = +
                   2741:     Debug-Output "NTLANMAN.INF: GetOptionFile status "$(Status)"; file: "$(FileName)
                   2742:     Return $(Status) $(FileName)
                   2743: 
                   2744: ;-----------------------------------------------------------------------
                   2745: ; ROUTINE:      QueryUserQuit
                   2746: ;
                   2747: ; DESCRIPTION:  This routine queries whether the user wants to quit
                   2748: ;               networking setup.  Three choices are allowed:
                   2749: ;
                   2750: ;                   OK     means cancel the installation operation
                   2751: ;                   CANCEL means cancel
                   2752: ;
                   2753: ;
                   2754: ; INPUTS:       $0:  Language To Use
                   2755: ;
                   2756: ; OUTPUTS:      $R0:  STATUS_EXITNET    if OK in WinNT
                   2757: ;                     STATUS_USERCANCEL if OK in LanmanNT (AS)
                   2758: ;                     STATUS_SUCCESSFUL if CANCEL  (continue installation)
                   2759: ;
                   2760: ;------------------------------------------------------------------------
                   2761: [QueryUserQuit]
                   2762:     Set Status = STATUS_SUCCESSFUL
                   2763:     Set StatusOK = STATUS_USERCANCEL
                   2764: 
                   2765: 
                   2766: 
                   2767: 
                   2768:     Ifstr(i) $(!STF_PRODUCT) == "LANMANNT"
                   2769:         read-syms LmExitWarningDlg$($0)
                   2770:     Else
                   2771:         Set StatusOK = STATUS_EXITNET
                   2772:         read-syms ExitWarningDlg$($0)
                   2773:     Endif
                   2774: 
                   2775: 
                   2776:     ui start "MessageBox"
                   2777:     Ifstr(i) $(DLGEVENT) == "OK"
                   2778:         Set Status = $(StatusOK)
                   2779:     Endif
                   2780: 
                   2781: fin_QueryUserQuit = +
                   2782:     Return $(Status)
                   2783: 
                   2784: ;-----------------------------------------------------------------------
                   2785: ; ROUTINE:      QueryNoNic
                   2786: ;
                   2787: ; DESCRIPTION:  This routine queries whether the user really wants
                   2788: ;               the "None" network card choice.
                   2789: ;
                   2790: ; INPUTS:       $0:  Language To Use
                   2791: ;
                   2792: ; OUTPUTS:      $R0: OK or CANCEL
                   2793: ;
                   2794: ;------------------------------------------------------------------------
                   2795: [QueryNoNic]
                   2796:     read-syms NoNicWarningDlg$($0)
                   2797:     ui start "MessageBox"
                   2798:     return $(DLGEVENT)
                   2799: 
                   2800: 
                   2801: ;-----------------------------------------------------------------------
                   2802: ; ROUTINE:      InstallLmNetFiles
                   2803: ;
                   2804: ; DESCRIPTION:  Function called by NTLMINST.INF to install network files.
                   2805: ;
                   2806: ; INPUTS:       none
                   2807: ;
                   2808: ; OUTPUTS:      $R0: STATUS_SUCCESSFUL
                   2809: ;                 or STATUS_USERCANCEL
                   2810: ;                 or STATUS_FAILED
                   2811: ;
                   2812: ;------------------------------------------------------------------------
                   2813: [InstallLmNetFiles]
                   2814:    read-syms GeneralConstants
                   2815:    read-syms DestNetPathNames
                   2816:    Set Status = STATUS_FAILED
                   2817: 
                   2818:    Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(!STF_SRCDIR) NO
                   2819: 
                   2820:    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                   2821:        Goto ILMNF_Return
                   2822:    Else-Ifstr(i) $($R0) == STATUS_FAILED
                   2823:        Goto ILMNF_Return
                   2824:    Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
                   2825:        Set Status = $($R0)
                   2826:        Goto ILMNF_Return
                   2827:    Endif
                   2828: 
                   2829:    Set !STF_SRCDIR = $($R1)
                   2830: 
                   2831:    Set Status = STATUS_SUCCESSFUL
                   2832: 
                   2833: ILMNF_Return = +
                   2834:    Return $(Status)
                   2835: 
                   2836: 
                   2837: 
                   2838: ;-----------------------------------------------------------------------
                   2839: ;
                   2840: ; ROUTINE:      InstallOemHook
                   2841: ;
                   2842: ; DESCRIPTION:  Install the INF file OEMHOOK.INF, which contains
                   2843: ;               whatever network alterations and enhancements the
                   2844: ;               OEM requires.
                   2845: ;
                   2846: ;               Since this file is not required, no error checking
                   2847: ;               is done.
                   2848: ;
                   2849: ; INPUTS:       None
                   2850: ;
                   2851: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   always
                   2852: ;
                   2853: ;------------------------------------------------------------------------
                   2854: [InstallOemHook]
                   2855:     Set InfName = "OEMHOOK.INF"
                   2856: 
                   2857:     Debug-Output "NTLANMAN.INF: Installing OEMHOOK.INF if present"
                   2858: 
                   2859:     Shell $(InfName) InstallOption $(!STF_LANGUAGE) $(InfOption) $(!STF_SRCDIR) "YES" "NO" "NO"
                   2860: 
                   2861: IHK_Exit = +
                   2862:     Return STATUS_SUCCESSFUL
                   2863: 
                   2864: 
                   2865: 
                   2866: 
                   2867: 
                   2868: 
                   2869: 
                   2870: 
                   2871: 
                   2872: 
                   2873: 
                   2874: 
                   2875: 
                   2876: 
                   2877: 
                   2878: 
                   2879: 
                   2880: 
                   2881: 
                   2882: 
                   2883: 
                   2884: 
                   2885: 
                   2886: 
                   2887: 
                   2888: 
                   2889: 
                   2890: 
                   2891: 
                   2892: 
                   2893: 
                   2894: 
                   2895: 
                   2896: 
                   2897: 
                   2898: 
                   2899: 
                   2900: 
                   2901: 
                   2902: 
                   2903: 
                   2904: 
                   2905: 
                   2906: 
                   2907: 
                   2908: 
                   2909: 
                   2910: 
                   2911: 
                   2912: ;-----------------------------------------------------------------------
                   2913: ;
                   2914: ; ROUTINE:      StartDetection
                   2915: ;
                   2916: ; DESCRIPTION:  Start the newly installed netcard detection service
                   2917: ;
                   2918: ;
                   2919: ; INPUTS:       None
                   2920: ;
                   2921: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   always
                   2922: ;
                   2923: ;------------------------------------------------------------------------
                   2924: [StartDetection]
                   2925:     Set UtilityInf   = "UTILITY.INF"
                   2926:     Set ServiceName  = "NETDETECT"
                   2927:     Set ReturnStatus = STATUS_SUCCESSFUL
                   2928: 
                   2929:     Debug-Output "NTLANMAN.INF: Starting the netcard detection service"
                   2930: 
                   2931:     Set FLibraryErrCtl = 1
                   2932:     LibraryProcedure StartResult $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, $(ServiceName)
                   2933:     Set FLibraryErrCtl = 0
                   2934: 
                   2935:     Set StartStatus = *($(StartResult),1)
                   2936:     Debug-Output "NTLANMAN.INF: NETDETECT status was: "$(StartStatus)
                   2937: 
                   2938:     ;  Check that it started or is already running
                   2939: 
                   2940:     Ifint $(StartStatus) != 0
                   2941:        Ifint $(StartStatus) != 1056
                   2942:            Set ReturnStatus = STATUS_FAILED
                   2943:        Endif
                   2944:     Endif
                   2945: 
                   2946:     ;  Update the netcard detection DLL name list
                   2947: 
                   2948:     Shell $(UtilityInf) UpdateDetectionDllNames
                   2949: 
                   2950: IHK_Exit = +
                   2951:     Return $(ReturnStatus)
                   2952: 
                   2953: 
                   2954: ;-----------------------------------------------------------------------
                   2955: ;
                   2956: ; ROUTINE:      WarnDetectStart
                   2957: ;
                   2958: ; DESCRIPTION:  Warn the user that netcard detection is about to start
                   2959: ;
                   2960: ; INPUTS:       None
                   2961: ;
                   2962: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   if detection desired
                   2963: ;                              STATUS_FAILED       if undesirable
                   2964: ;
                   2965: ;------------------------------------------------------------------------
                   2966: [WarnDetectStart]
                   2967:     Set Result = STATUS_SUCCESSFUL
                   2968:     Read-syms WarnDetectDlg$(!STF_LANGUAGE)
                   2969: 
                   2970:     ui start "Info"
                   2971: 
                   2972:     Ifstr(i) $(DLGEVENT) != CONTINUE
                   2973:         Set Result = STATUS_FAILED
                   2974:     Endif
                   2975: 
                   2976:     ui pop 1
                   2977:     Return $(Result)
                   2978: 
                   2979: ;-----------------------------------------------------------------------
                   2980: ;
                   2981: ; ROUTINE:      WarnDetectAccept
                   2982: ;
                   2983: ; DESCRIPTION:  Warn the user that netcard detection is about to start
                   2984: ;
                   2985: ; INPUTS:       $0:  Name of netcard found
                   2986: ;
                   2987: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   if card is OK
                   2988: ;                              STATUS_FAILED       if detection is to cease
                   2989: ;                              STATUS_TRY_AGAIN    if another card is to be found
                   2990: ;
                   2991: ;------------------------------------------------------------------------
                   2992: [WarnDetectAccept]
                   2993:     Set Result = STATUS_SUCCESSFUL
                   2994:     Set DlgData = $($0)
                   2995:     Read-syms WarnDetectAccept$(!STF_LANGUAGE)
                   2996:     ui start "Info"
                   2997: 
                   2998:     Ifstr(i) $(DLGEVENT) == EXIT
                   2999:         Set Result = STATUS_FAILED
                   3000:     Else-Ifstr(i) $(DLGEVENT) == BACK
                   3001:         Set Result = STATUS_TRY_AGAIN
                   3002:     Else
                   3003:         Set Result = STATUS_SUCCESSFUL
                   3004:     Endif
                   3005: 
                   3006:     ui pop 1
                   3007:     Return $(Result)
                   3008: 
                   3009: ;-----------------------------------------------------------------------
                   3010: ;
                   3011: ; ROUTINE:      WarnDetectFail
                   3012: ;
                   3013: ; DESCRIPTION:  Warn the user that netcard detection has failed.
                   3014: ;               Allow reiteration
                   3015: ;
                   3016: ; INPUTS:       $0:  YES if a netcard was detected previously
                   3017: ;
                   3018: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   if user wants to stop
                   3019: ;                              STATUS_FAILED       if user wants to retry
                   3020: ;
                   3021: ;------------------------------------------------------------------------
                   3022: [WarnDetectFail]
                   3023:     Set FoundCard = $($0)
                   3024:     Set Result = STATUS_SUCCESSFUL
                   3025:     Read-syms WarnDetectFail$(!STF_LANGUAGE)
                   3026:     Ifstr(i) $(FoundCard) != YES
                   3027:         Read-syms WarnDetectFail2$(!STF_LANGUAGE)
                   3028:     Endif
                   3029: 
                   3030:     ui start "Info"
                   3031: 
                   3032:     Ifstr(i) $(DLGEVENT) != CONTINUE
                   3033:         Set Result = STATUS_FAILED
                   3034:     Endif
                   3035: 
                   3036:     ui pop 1
                   3037:     Return $(Result)
                   3038: 
                   3039: ;-----------------------------------------------------------------------
                   3040: ;
                   3041: ; ROUTINE:      WarnCheckRas
                   3042: ;
                   3043: ; DESCRIPTION:  See if the user wants RAS installed.
                   3044: ;
                   3045: ; INPUTS:       None
                   3046: ;
                   3047: ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL   if continue to pick net card
                   3048: ;                              STATUS_WANTRAS      if RAS is to be installed
                   3049: ;
                   3050: ;------------------------------------------------------------------------
                   3051: [WarnCheckRas]
                   3052:     Set Result = STATUS_SUCCESSFUL
                   3053:     Read-syms WarnInstallRas$(!STF_LANGUAGE)
                   3054: 
                   3055:     ui start "Info"
                   3056: 
                   3057:     Ifstr(i) $(DLGEVENT) != CONTINUE
                   3058:         Set Result = STATUS_WANTRAS
                   3059:     Endif
                   3060: 
                   3061:     ui pop 1
                   3062:     Return $(Result)
                   3063: 
                   3064: 
                   3065: 
                   3066: 
                   3067: 
                   3068: 
                   3069: 
                   3070: 
                   3071: 
                   3072: 
                   3073: 
                   3074: 
                   3075: 
                   3076: 
                   3077: 
                   3078: 
                   3079: 
                   3080: 
                   3081: 
                   3082: 
                   3083: 
                   3084: 
                   3085: 
                   3086: 
                   3087: 
                   3088: 
                   3089: 
                   3090: 
                   3091: 
                   3092: 
                   3093: 
                   3094: 
                   3095: 
                   3096: 
                   3097: 
                   3098: 
                   3099: 
                   3100: 
                   3101: 
                   3102: 
                   3103: 
                   3104: 
                   3105: 
                   3106: 
                   3107: 
                   3108: 
                   3109: 
                   3110: 
                   3111: 
                   3112: 
                   3113: 
                   3114: 
                   3115: ;****************************************************************************
                   3116: ;                                                                           *
                   3117: ;     Network File Installation                                             *
                   3118: ;                                                                           *
                   3119: ;****************************************************************************
                   3120: [Install-All-Files-Now]
                   3121:     set !STF_NCPA_FLASH_COPYLIST = TRUE
                   3122:     CopyFilesInCopyList
                   3123:     exit
                   3124: 
                   3125: 
                   3126: 
                   3127: 
                   3128: 
                   3129: 
                   3130: 
                   3131: 
                   3132: 
                   3133: 
                   3134: 
                   3135: 
                   3136: 
                   3137: 
                   3138: 
                   3139: 
                   3140: 
                   3141: 
                   3142: ;***********************************************************************************************
                   3143: ;
                   3144: ;   File Lists
                   3145: ;
                   3146: ;
                   3147: ;   Network INF files must already be present on the drive when this INF is run.
                   3148: ;
                   3149: ;***********************************************************************************************

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.