home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / CHIPCD_3_98.iso / software / testsoft / exchange / connect / msmcon / bin / ecx25.inf < prev    next >
INI File  |  1997-08-25  |  67KB  |  2,437 lines

  1. ;************************************************************************
  2. ;
  3. ; Name:      ECX25.INF
  4. ;
  5. ;
  6. ; History:   andyg, t-danfr     Aug 05 92   Initial design
  7. ;            andyg              Oct 20 92   Massive cleanup
  8. ;            mjt@eicon          Feb 92      Port for ecx25
  9. ;
  10. ;************************************************************************
  11.  
  12. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  13. ;
  14. ; INITIALIZATION SECTION
  15. ; ----------------------
  16. ; This section is responsible for defining the product variables.  It is the
  17. ; highest level of definition.  Installation programs will use this section
  18. ; to figure out available options etc.
  19. ;
  20. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  21.  
  22. ;========================================================================
  23. ;
  24. ; SOURCE MEDIA DESCRIPTIONS
  25. ; -------------------------
  26. ; The IHV should list all the diskette labels here.  The source media
  27. ; description is used during copy to prompt the user for a diskette
  28. ; if the source is diskettes.  The TAGFILE field is used to confirm that
  29. ; the proper disk is being used.
  30. ;
  31. ; FORMAT:
  32. ; The format includes an enumeration constant and a name for the disk,
  33. ; as well as a number of possible flags (including the TAGFILE flag).
  34. ; NOTE: TAGFILE and other flags must be all caps (bogus!) and the white
  35. ; space must be exactly as shown.
  36. ;
  37. ;     1 = "Diskette 1 Label", TAGFILE = "Disk1.Tag"
  38. ;     2 = "Diskette 2 Label", TAGFILE = "Disk2.Tag"
  39. ;     ...
  40. ;
  41. ;========================================================================
  42.  
  43. [Source Media Descriptions]
  44.   1 = "SNA Link Service Diskette"
  45.  
  46.  
  47. ;========================================================================
  48. ;
  49. ; OPTION TYPE
  50. ; -----------
  51. ; This identifies the Option type we are dealing with.  Most SNA link
  52. ; services should have "NetService" as the option type.  The list of
  53. ; option types for networking:
  54. ;
  55. ;     NetAdapter     A netcard/adapter combination or just a netcard
  56. ;     NetDriver        A netcard driver
  57. ;     NetTransport    A complete NDIS-compliant TDI transport stack
  58. ;     NetService    An NT networking service
  59. ;     NetWork        A complete network ensemble
  60. ;     NetProvider    A complete network which supports NT MPR protocol
  61. ;
  62. ;========================================================================
  63.  
  64. [Identification]
  65.   OptionType = NetService
  66.  
  67.  
  68. ;========================================================================
  69. ;
  70. ; LANGUAGES SUPPORTED
  71. ; -------------------
  72. ; The human languages supported by this script.  Each dialog to be presented
  73. ; to the user must have a separate text section for each language supported.
  74. ; These sections will be indexed by the three-letter code for the language
  75. ; in use.
  76. ;
  77. ;========================================================================
  78.  
  79. [LanguagesSupported]
  80.   ENG
  81.  
  82.  
  83. ;========================================================================
  84. ;
  85. ; OPTION LIST
  86. ; -----------
  87. ; This section lists the IHV Option key names.  These keys are locale
  88. ; independent and used to represent the option in a locale independent
  89. ; manner.
  90. ;
  91. ; You should go through this script and do a global search/replace on
  92. ; IHVLINK and IHVDDRV so that they reflect the true names of the IHV
  93. ; components.
  94. ;
  95. ;========================================================================
  96.  
  97. [Options]
  98.   ECX25
  99. ;  IHVDDRV
  100.  
  101.  
  102. ;========================================================================
  103. ;
  104. ; OPTION TEXT SECTION
  105. ; -------------------
  106. ; These are text strings used to identify the option to the user.  There
  107. ; are separate sections for each language supported.
  108. ;
  109. ; You should set these strings to describe the IHV link service you're
  110. ; writing the setup script for.
  111. ;
  112. ; FORMAT:
  113. ; The format of the section name is "OptionsText" concatenated with the
  114. ; Language represented by the section.
  115. ;    [OptionsTextLNG1]
  116. ;        ...
  117. ;    [OptionsTextLNG2]
  118. ;        ...
  119. ;
  120. ;========================================================================
  121.  
  122. [OptionsTextENG]
  123.   ECX25    = "SNA Eicon X.25 (QLLC) Link Service"
  124. ;  IHVDDRV    = "Device Driver for IHV Link Support"
  125.  
  126.  
  127. ;========================================================================
  128. ;
  129. ; SNA OPTION LIST
  130. ; ---------------
  131. ; This is the list of options available to the SNA Services user.  This list
  132. ; is presented to the user in a list box in the SNA Services Setup program.
  133. ;
  134. ;========================================================================
  135.  
  136. [SNAOptions]
  137.   ECX25
  138.  
  139.  
  140. ;========================================================================
  141. ;
  142. ; SNA OPTION ADDITIONALS
  143. ; ----------------------
  144. ; This section specifies the additional options that should be installed for
  145. ; each of the main options.  The SNA Services setup will invoke this INF
  146. ; file with each of these additional options in order followed by the main
  147. ; option.
  148. ;
  149. ; FORMAT:
  150. ; The format for the section name is "SNAOptionAdds" concatenated with the
  151. ; option name.
  152. ;    [SNAOptionAddsSNAOPT1]
  153. ;        ...
  154. ;    [SNAOptionAddsSNAOPT2]
  155. ;        ...
  156. ;
  157. ;========================================================================
  158.  
  159. [SNAOptionAddsECX25]
  160. ;  IHVDDRV
  161.  
  162.  
  163. ;========================================================================
  164. ;
  165. ; INSTALLATION STEPS SECTION
  166. ; --------------------------
  167. ; In this section, you define which steps will be taken in the installation
  168. ; procedure.
  169. ;
  170. ; FORMAT:
  171. ; The format is "InstallSteps" concatenated with the option name
  172. ;    [InstallStepsOPT1]
  173. ;         ...
  174. ;
  175. ;========================================================================
  176.  
  177. [InstallStepsECX25]
  178.   AddFilesToCopyList    = YES
  179.   CopyFilesInCopyList   = YES
  180.  
  181. ;[InstallStepsIHVDDRV]
  182. ;  AddFilesToCopyList    = YES
  183. ;  CopyFilesInCopyList   = NO
  184.  
  185.  
  186. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  187. ;
  188. ; DIALOG CONSTANTS SECTION
  189. ; ------------------------
  190. ; This section is responsible for defining dialog constants.  It is meant
  191. ; to be used to simplify programming this INF file as well as reading it.
  192. ;
  193. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  194.  
  195. [DialogConstants]
  196.   Radio1 = "1"
  197.   Radio2 = "2"
  198.   Radio3 = "3"
  199.   Radio4 = "4"
  200.   Radio5 = "5"
  201.  
  202.  
  203. ;++++++++++++++++++++++++++++++++++++
  204. ;
  205. ; ProgressCopyVars:
  206. ; These variables specify the look of the gauge that comes up
  207. ; when copying files.
  208. ;
  209. ;++++++++++++++++++++++++++++++++++++
  210.  
  211. [ProgressCopyVars]
  212.   ProCaption   = "File copy in progress"
  213.   ProCancel    = "&Cancel"
  214.   ProCancelMsg = $(ProductTitle)$(!LF)"is not fully installed."$(!LF)+
  215.                  "Are you sure you want to cancel before all"$(!LF)+
  216.                  "the files are copied?"
  217.   ProCancelCap = $(SetupTitle)" Warning"
  218.   ProText1     = "Copying "
  219.   ProText2     = "        to"
  220.  
  221.  
  222. ;++++++++++++++++++++++++++++++++++++
  223. ;
  224. ; HelpContextIDs:
  225. ; These variables specify which help topic to bring up when the
  226. ; user clicks the Help button.  There should be one of these for
  227. ; each dialog box with a Help button.  Look in the main SNA Setup
  228. ; .INF files for lots of examples.
  229. ;
  230. ;++++++++++++++++++++++++++++++++++++
  231.  
  232. [HelpContextIDs]
  233.   IDD_ECX25CONFIG = 101
  234.   IDD_ECX25DRVCONFIG = 102
  235.  
  236.  
  237. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  238. ;
  239. ; FILE CONSTANTS SECTION
  240. ; ----------------------
  241. ; This section is responsible for defining some general product information
  242. ; that will be used mostly for the registry.
  243. ;
  244. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  245.  
  246. ;++++++++++++++++++++++++++++++++++++
  247. ;
  248. ; File Names Subsection:
  249. ; This subsection contains useful filenames as macros.
  250. ; HlpMin and HlpMax should be set to one less and one more than
  251. ; the least and greatest HelpContextID.
  252. ;
  253. ;++++++++++++++++++++++++++++++++++++
  254.  
  255. [FileConstants]
  256.   UtilityInf    = $(!SNARootDir)"\SETUPUTL.INF"
  257.   SubroutineInf = $(!STF_WINDOWSSYSPATH)"\SUBROUTN.INF"
  258.   DialogLibrary = $(!SNARootDir)"\SETUP.SRL"
  259.   ThisFile      = "ECX25"
  260.   ThisInf       = $(ThisFile)".INF"
  261.   ThisSrl       = $(ThisFile)".SRL"
  262.   ThisHlp       = $(ThisFile)".HLP"
  263.   HlpMin        = "256"
  264.   HlpMax        = "256"
  265.   $ShellCode    = 0
  266.  
  267.  
  268. ;++++++++++++++++++++++++++++++++++++
  269. ;
  270. ; Product Information Subsection:
  271. ; This subsection contains lots of product information that will be used
  272. ; in the registry.
  273. ;
  274. ; For the SNAServiceType value, please refer to the "SNAServiceTypes" section
  275. ; in the SNAUTILS.INF file.  Also, only Link Supports have this value, all
  276. ; others should have a NULL string ("") for this value.  Again, look at the
  277. ; existing link support setup .INF files for examples.
  278. ;
  279. ;++++++++++++++++++++++++++++++++++++
  280.  
  281. [FileConstantsECX25]
  282. ;
  283. ; Product Info
  284. ;
  285.   ProductVersion       = "1.0"
  286.   ProductName          = "ECX25"
  287. ProductFullName            = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
  288.   ProductRegBase       = $(!NTN_SoftwareBase)"\Eicon"
  289.   ProductType          = "Link"
  290.   ProductImagePath     = "SNALINK.EXE"
  291. ;  ProductDepends       = {"EcNB"}
  292.   ProductDepends       = {}
  293.   ProductParams        = {}
  294.   ProductExtraParams   = {}
  295.   ProductExclusive     = $(FALSE)
  296.   ProductDLL           = "ECX25.DLL"
  297.   ProductServicePrefix = "SnaX25"
  298.   ProductServiceQuery  = $(TRUE)
  299. ;
  300. ; Registry Key Information
  301. ;
  302. ; SNAServiceType should be: CESDFT for a DFT link, CESX25 for an X.25 link,
  303. ;                           CESTR for Token Ring,  CESLINK for a SDLC link.
  304. ;
  305.   SNAServiceType       = "CESX25"
  306. ;
  307. ; NetRules Stuff
  308. ;
  309. NetRulesClass            = "snax25link snalink"
  310. NetRulesTitle            = "SNA X.25 Link Service"
  311. NetRulesUse            = "service yes yes"
  312. ;NetRulesBindable        = "snax25link snasyncdriver non non 100"
  313. NetRulesBindable        = ""
  314. NetRulesType            = "snax25 snax25link"
  315. FullInfName                = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
  316. SoftwareType            = "service"
  317.  
  318. ;  NetRulesClass        = x25linkservice
  319. ;  FullInfName          = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
  320. ;  ServiceType          = "service"
  321.  
  322.  
  323. ;[FileConstantsIHVDDRV]
  324. ;
  325. ; Product Info
  326. ;
  327. ;  ProductVersion       = "1.0"
  328. ;  ProductName          = "IHVDDRV"
  329. ;  ProductFullName      = $(ProductName)"_"$(ProductVersion)
  330. ;  ProductRegBase       = $(!NTN_SoftwareBase)"\Microsoft"
  331. ;  ProductType          = "Driver"
  332. ;  ProductImagePath     = "IHVDDRV.SYS"
  333. ;  ProductDepends       = {}
  334. ;  ProductParams        = {}
  335. ;  ProductExtraParams   = {}
  336. ;  ProductExclusive     = $(TRUE)
  337. ;  ProductDLL           = ""
  338. ;  ProductServicePrefix = "IHVDDRV"
  339. ;  ProductServiceQuery  = $(FALSE)
  340. ;
  341. ; Registry Key Information
  342. ;
  343. ;  SNAServiceType       = "DRIVER"
  344. ;
  345. ; NetRules Stuff
  346. ;
  347. ;  NetRulesClass        = dftdevdriver
  348. ;  FullInfName          = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
  349. ;  ServiceType          = "service"
  350.  
  351.  
  352. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  353. ;
  354. ; GENERAL CONSTANTS SECTION
  355. ; -------------------------
  356. ; This section is responsible for defining some general constants that
  357. ; are used in this INF script.  These constants include flow control
  358. ; variables, exit codes, and registry reference numbers.
  359. ;
  360. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  361.  
  362. [GeneralConstants]
  363.  
  364. ;++++++++++++++++++++++++++++++++++++
  365. ;
  366. ; Flow Control Variables:
  367. ; "From" will generally represents the label we just came from, while "To"
  368. ; represents the label we are headed toward.
  369. ;
  370. ;++++++++++++++++++++++++++++++++++++
  371.  
  372.   from = ""
  373.   to   = ""
  374.  
  375. ;++++++++++++++++++++++++++++++++++++
  376. ;
  377. ; Booleans:
  378. ;
  379. ;++++++++++++++++++++++++++++++++++++
  380.  
  381.   FALSE = 0
  382.   TRUE  = 1
  383.  
  384. ;++++++++++++++++++++++++++++++++++++
  385. ;
  386. ; Other values
  387. ;
  388. ;++++++++++++++++++++++++++++++++++++
  389.  
  390.   NOTIFY = 2
  391.  
  392. ;++++++++++++++++++++++++++++++++++++
  393. ;
  394. ; Registry Initialization Parameters:
  395. ;
  396. ;++++++++++++++++++++++++++++++++++++
  397.  
  398.   NoTitle       = 0
  399.   KeyNull       = ""
  400.   KeyProduct    = ""
  401.   KeyParameters = ""
  402.  
  403. ;++++++++++++++++++++++++++++++++++++
  404. ;
  405. ; Other Initialization Parameters:
  406. ;
  407. ;++++++++++++++++++++++++++++++++++++
  408.  
  409.   ExitState         = "Active"
  410.   OldVersionExisted = $(FALSE)
  411.  
  412.  
  413. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  414. ;
  415. ; LANGUAGE-DEPENDENT DIALOG CONSTANTS SECTION
  416. ; -------------------------------------------
  417. ; This section is responsible for defining dialog constants that are
  418. ; language dependent.
  419. ;
  420. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  421.  
  422. ;++++++++++++++++++++++++++++++++++++
  423. ;
  424. ; Common Button Names:
  425. ;
  426. ;++++++++++++++++++++++++++++++++++++
  427.  
  428. [DialogConstantsENG]
  429.   Help         = "&Help"
  430.   Exit        = "C&ancel"
  431.   Continue    = "&Continue"
  432.   Cancel    = "C&ancel"
  433.   OK        = "&OK"
  434.   HelpContext    = ""
  435.   Other1        = "Ad&vanced"
  436.  
  437.  
  438. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  439. ;
  440. ; LANGUAGE-DEPENDENT FILE CONSTANTS SECTION
  441. ; -----------------------------------------
  442. ; This section is responsible for defining language dependent information.
  443. ;
  444. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  445.  
  446. ;
  447. ; The following name should include the name of the IHV as per the example
  448. ;
  449. [FileConstantsENG]
  450.   SetupTitle   = "Eicon X.25 Link Service Setup"
  451.  
  452. [FileConstantsECX25_ENG]
  453.   ProductTitle = "Eicon X.25/QLLC Link Service"
  454.   ProductDesc  = "Eicon X.25/QLLC Link Service for "$(!SNA_ProductName)
  455.  
  456. ;[FileConstantsIHVDDRV_ENG]
  457. ;  ProductTitle = "IHV Device Driver"
  458. ;  ProductDesc  = "IHV Device Driver for SNA Services"
  459.  
  460.  
  461. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  462. ;
  463. ; DATE SECTION
  464. ; ------------
  465. ; This section is responsible for establishing the value of the "Now"
  466. ; variable.  This variable is a list of the following format:
  467. ;    { Seconds from 1-1-1970, Year, Month, Day, Hour, Minute, Second }
  468. ;
  469. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  470.  
  471. [LoadSetupLibrary]
  472.   LoadLibrary "x" $(!STF_WINDOWSSYSPATH)\setupdll.dll !LIBHANDLE 
  473.   exit
  474.  
  475. [date]
  476.   Now = {} ? $(!LIBHANDLE) GetSystemDate
  477.  
  478. [FreeSetupLibrary]
  479.   FreeLibrary $(!LIBHANDLE)
  480.   exit
  481.  
  482.  
  483. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  484. ;
  485. ; INPUT DIALOGS SECTION
  486. ; ---------------------
  487. ; This section should contain all the information about the input dialogs.
  488. ;
  489. ; FORMAT:
  490. ; The format of the section name is the string name concatenated with the
  491. ; Language represented by the section.
  492. ;    [InputDialog1LNG1]
  493. ;        ...
  494. ;    [InputDialog2LNG1]
  495. ;        ...
  496. ;
  497. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  498.  
  499. [DoX25LSConfigENG]
  500. ;
  501. ; Items to configure are:
  502. ;
  503. ;   LNUA
  504. ;   XIDRetries
  505. ;   XIDTimers
  506. ;   StationID
  507. ;   PortNumber
  508. ;
  509. ;
  510. ;
  511.  
  512. DlgTemplate                             = IDD_X25SETUP
  513. DlgType                  = "MultiEdit"
  514. Caption                                 = $(!P:SetupTitle)
  515. DlgText1                                = "Service Name: "$(ServiceName)
  516. EditLabel1                              = "&Local Title:"
  517. EditLabel2                    = "Local &NUA Address:"
  518. ;EditLabel3                    = "EiconCard Port &Port Number:"
  519. EditLabel3                    = "Car&d Port"
  520. EditLabel4                    = "&Station ID (hex):"
  521. EditTextIn  = { $(ServiceTitle), +
  522.                   $(LNUA), $(EcPort), $(StationID) }
  523. EditTextLim = { 40, 15, 2, 4 }
  524.  
  525. ;HelpContext = #(HelpContextIDs, IDD_X25SETUP, 1 )
  526. HelpContext = 256
  527. ;HelpContext        = #( HelpContextIDs, $(DlgTemplate), 1 )
  528.  
  529.  
  530. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  531. ;
  532. ; INPUT DIALOGS SCRIPTS
  533. ; ---------------------
  534. ; This section should contain all the scripts for doing input dialogs.
  535. ; Each script may return as many parameters as it wants, so long as the
  536. ; first parameter is the status and is one of the following:
  537. ;
  538. ;     STATUS_SUCCESSFUL
  539. ;     STATUS_FAILED
  540. ;     STATUS_USERCANCEL
  541. ;     STATUS_USERBACK
  542. ;
  543. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  544.  
  545. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  546. ;
  547. ; The following section was lifted from IBMDFT.INF, and shows the way to
  548. ; configure the IBM DFT link service.  It's really meant as a guideline
  549. ; for you to examine and follow when writing your own install script.
  550. ; You might also want to look at the other link service install scripts,
  551. ; notably IBMX25.INF as it has lots of parameters, and SNADLC.INF as it
  552. ; interacts with the NCPA and network bindings a little differently.
  553. ;
  554. ; DoDFTLSConfig
  555. ;
  556. ; DESCRIPTION:  This shell script pops up a dialog to get the configuration
  557. ;               of this product.
  558. ;
  559. ; INPUT:   $($0) : Service Name
  560. ;          $($1) : Current Title
  561. ;          $($2) : local NUA
  562. ;          $($3) : eicon Card port
  563. ;          $($4) : station address
  564. ;
  565. ; OUTPUT:  $($R0): STATUS: One of the above
  566. ;          $($R1): New Title
  567. ;          $($R2): local NUA
  568. ;          $($R3): eicon card port
  569. ;          $($R4): station address
  570. ;
  571. ;
  572. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  573.  
  574. [DoX25LSConfig]
  575.   set ServiceName  = $($0)
  576.   set ServiceTitle = $($1)
  577.   set LNUA         = $($2)
  578.   set EcPort       = $($3)
  579.   set StationID    = $($4)
  580.  
  581.   set-dectohex StationID = $(StationID)
  582.  
  583.   read-syms DialogConstants
  584.   read-syms DialogConstants$(!STF_LANGUAGE)
  585.   read-syms DoX25LSConfig$(!STF_LANGUAGE)
  586.  
  587. begin = +
  588.     set Status = STATUS_SUCCESSFUL
  589.     ui start $(DlgTemplate) $(!IHVDLGHANDLE)
  590.  
  591.     ifstr(i) $(DLGEVENT) == "DLGBUTTON1"
  592.             ui pop 1
  593.             
  594.             OpenRegKey $(!REG_H_LOCAL), "", +
  595.               "Software\Eicon\Ecnb\CurrentVersion", +
  596.               $(!REG_KEY_READ), KeyWANServices
  597.             ifstr(i) $(KeyWANServices) != {}
  598.                 GetRegValue $(KeyWANServices) "RootPath" RootPathValue
  599.                 ifstr(i) $(RootPathValue) != ""
  600.                     set !WANRootDir = *( $(RootPathValue), 4 )
  601.                 endif
  602.             endif
  603.  
  604.             RunProgram ExitCode "" "" $(!WANRootDir)\eccfgwnt.exe $(!WANRootDir)\eccfg.eic /DD /DA
  605.         goto begin
  606.     endif
  607.     
  608.     ifstr(i) $(DLGEVENT)        == "Exit"
  609.         set Status = STATUS_USERCANCEL
  610.     else
  611.         set Status = STATUS_SUCCESSFUL
  612.         set Error  = {}
  613.  
  614.         set ServiceTitle    = *( $(EditTextOut), 1 )
  615.         set LNUA        = *( $(EditTextOut), 2 )
  616.         set EcPort        = *( $(EditTextOut), 3 )
  617.         ifint $(EcPort) < 1
  618.             set Error = >( $(Error), ERROR_PORT )
  619.         else-ifint $(EcPort) > 48
  620.             set Error = >( $(Error), ERROR_PORT )
  621.         endif
  622.         set StationID        = *( $(EditTextOut), 4 )
  623.                 ;
  624.                 ; Convert to decimal
  625.                 ;
  626.                 ifstr(i) $(StationID) != ""
  627. ;                  set-hextodec StationID = "0x"$(StationID)
  628.                   set-hextodec StationID = $(StationID)
  629.                 endif
  630.         ifint $(StationID) < 1
  631.             set Error = >( $(Error), ERROR_STATION )
  632.         else-ifint $(StationID) > 255
  633.             set Error = >( $(Error), ERROR_STATION )
  634.         endif
  635.         ForListDo $(Error)
  636.             set Status = STATUS_REPEAT
  637.             ifstr(i) $($) == ERROR_PORT
  638.                 shell $(!P:SubroutineInf) SetupMessage $(!STF_LANGUAGE) +
  639.                       "NONFATAL" +
  640.                       "The EiconCard port parameter must be a number"$(!LF)+
  641.                       "between 1 and 48."$(!LF)$(!LF)+
  642.                       "Please reconfigure."
  643.             endif
  644.             ifstr(i) $($) == ERROR_STATION
  645.                 shell $(!P:SubroutineInf) SetupMessage $(!STF_LANGUAGE) +
  646.                       "NONFATAL" +
  647.                       "The station ID parameter must be a number"$(!LF)+
  648.                       "between 0x1 and 0xFF."$(!LF)$(!LF)+
  649.                       "Please reconfigure."
  650.             endif
  651.         EndForListDo
  652.     endif
  653.  
  654.     ifstr(i) $(Status) == STATUS_REPEAT
  655.         goto begin
  656.     endif
  657.  
  658.     ui pop 1
  659.  
  660.     Return $(Status), $(ServiceTitle), $(LNUA), $(EcPort), $(StationID)
  661.  
  662.  
  663.  
  664. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  665. ;
  666. ; Identify
  667. ;
  668. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  669. ;                as we are about to use.
  670. ;
  671. ; INPUT:         None
  672. ;
  673. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  674. ;                $($R1): Option Type (NetService...)
  675. ;                $($R2): Diskette description
  676. ;
  677. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  678.  
  679. [Identify]
  680.   read-syms Identification
  681.  
  682.   set Status     = STATUS_SUCCESSFUL
  683.   set Identifier = $(OptionType)
  684.   set Media      = #(Source Media Descriptions, 1, 1)
  685.  
  686.   Return $(Status) $(Identifier) $(Media)
  687.  
  688.  
  689. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  690. ;
  691. ; ReturnOptions
  692. ;
  693. ; DESCRIPTION:   To return the option list supported by this INF and the
  694. ;                localized text list representing the options.
  695. ;
  696. ;
  697. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  698. ;
  699. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  700. ;                                STATUS_NOLANGUAGE
  701. ;                                STATUS_FAILED
  702. ;
  703. ;                $($R1): Option List
  704. ;                $($R2): Option Text List
  705. ;
  706. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  707.  
  708. [ReturnOptions]
  709.   set Status         = STATUS_FAILED
  710.   set OptionList     = {}
  711.   set OptionTextList = {}
  712.  
  713. ;
  714. ; Check if the language requested is supported
  715. ;
  716.   set LanguageList = ^(LanguagesSupported, 1)
  717.   ifcontains(i) $($0) in $(LanguageList)
  718.     goto returnoptions
  719.   else
  720.     set Status = STATUS_NOLANGUAGE
  721.     goto finish_ReturnOptions
  722.   endif
  723.  
  724. ;++++++++++++++++++++++++++++++++++++
  725. ;
  726. ; returnoptions:
  727. ; get the options from the Options and OptionsText sections and set an
  728. ; appropriate return value.
  729. ;
  730. ;++++++++++++++++++++++++++++++++++++
  731. returnoptions =+
  732.   set OptionList     = ^(Options, 1)
  733.   set OptionTextList = ^(OptionsText$($0), 1)
  734.   set Status         = STATUS_SUCCESSFUL
  735.  
  736. ;++++++++++++++++++++++++++++++++++++
  737. ;
  738. ; finish_ReturnOptions:
  739. ;
  740. ;++++++++++++++++++++++++++++++++++++
  741. finish_ReturnOptions =+
  742.   Return $(Status) $(OptionList) $(OptionTextList)
  743.  
  744.  
  745. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  746. ;
  747. ; ReturnSNAOptions
  748. ;
  749. ; DESCRIPTION:   To return the option list supported by this INF and
  750. ;                recognized by SNA Services.  This script also returns
  751. ;                the localized text list representing those options.
  752. ;
  753. ; INPUT:         None
  754. ;
  755. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  756. ;                                STATUS_NOLANGUAGE
  757. ;                                STATUS_FAILED
  758. ;
  759. ;                $($R1): Option List
  760. ;                $($R2): Option Text List
  761. ;
  762. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  763.  
  764. [ReturnSNAOptions]
  765.   set Status            = STATUS_FAILED
  766.   set SNAOptionList     = {}
  767.   set SNAOptionTextList = {}
  768.   set LANG              = $(!STF_LANGUAGE)
  769.  
  770. ;
  771. ; Check if the language requested is supported
  772. ;
  773.   set LanguageList = ^(LanguagesSupported, 1)
  774.   ifcontains(i) $(LANG) in $(LanguageList)
  775.     goto returnSNAoptions
  776.   else
  777.     set Status = STATUS_NOLANGUAGE
  778.     goto finish_ReturnSNAOptions
  779.   endif
  780.  
  781. ;++++++++++++++++++++++++++++++++++++
  782. ;
  783. ; returnSNAoptions:
  784. ; get the options from the Options and OptionsText sections and set appropriate
  785. ; return values.
  786. ;
  787. ;++++++++++++++++++++++++++++++++++++
  788. returnSNAoptions =+
  789.   set SNAOptionList     = ^(SNAOptions, 1)
  790.   set OptionList        = ^(Options, 1)
  791.   set SNAOptionTextList = {}
  792.   set Status            = STATUS_SUCCESSFUL
  793.  
  794. ;
  795. ; Check that each of the SNA Options is a valid option and compile
  796. ; the list of text descriptions
  797. ;
  798.   ForListDo $(SNAOptionList)
  799.     ifcontains $($) in $(OptionList)
  800.       set SNAOptionTextList = >( $(SNAOptionTextList), +
  801.                                  #(OptionsText$(LANG), $($), 1) )
  802.     else
  803.       set Status = STATUS_FAILED
  804.       goto finish_ReturnSNAOptions
  805.     endif
  806.  
  807.   EndForListDo
  808.  
  809. ;++++++++++++++++++++++++++++++++++++
  810. ;
  811. ; finish_ReturnSNAOptions:
  812. ;
  813. ;++++++++++++++++++++++++++++++++++++
  814. finish_ReturnSNAOptions = +
  815.   Return $(Status) $(SNAOptionList) $(SNAOptionTextList)
  816.  
  817.  
  818. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  819. ;
  820. ; ReturnSNAAdds
  821. ;
  822. ; DESCRIPTION:   To return the list of dependencies and their text
  823. ;                descriptions for a particular option.
  824. ;
  825. ;
  826. ; INPUT:         $($0):  Option used.
  827. ;
  828. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  829. ;                                STATUS_NOLANGUAGE
  830. ;                                STATUS_FAILED
  831. ;
  832. ;                $($R1): Dependency List
  833. ;                $($R2): Dependency Text List
  834. ;
  835. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  836.  
  837. [ReturnSNAAdds]
  838.   set Status         = STATUS_FAILED
  839.   set SNAAddList     = {}
  840.   set SNAAddTextList = {}
  841.   set LANG           = $(!STF_LANGUAGE)
  842.  
  843. ;
  844. ; Check if the language requested is supported
  845. ;
  846.   set LanguageList = ^(LanguagesSupported, 1)
  847.   ifcontains(i) $(LANG) in $(LanguageList)
  848.     goto returnSNAadds
  849.   else
  850.     set Status = STATUS_NOLANGUAGE
  851.     goto finish_ReturnSNAAdds
  852.   endif
  853.  
  854. ;++++++++++++++++++++++++++++++++++++
  855. ;
  856. ; returnSNAadds:
  857. ; get the additional options for an option and compile their text list
  858. ;
  859. ;++++++++++++++++++++++++++++++++++++
  860. returnSNAadds =+
  861.   set SNAAddList = ^(SNAOptionAdds$($0), 1)
  862.   set OptionList = ^(Options, 1)
  863.   set Status     = STATUS_SUCCESSFUL
  864.  
  865. ;
  866. ; Check that each of the SNA Dependencies is a valid option and compile
  867. ; the list of text descriptions
  868. ;
  869.   ForListDo $(SNAAddList)
  870.     ifcontains $($) in $(OptionList)
  871.       set SNAAddTextList = >( $(SNAAddTextList), +
  872.                               #(OptionsText$(LANG), $($), 1) )
  873.     else
  874.       set Status = STATUS_FAILED
  875.       goto finish_ReturnSNAAdds
  876.     endif
  877.  
  878.   EndForListDo
  879.  
  880. ;++++++++++++++++++++++++++++++++++++
  881. ;
  882. ; finish_ReturnSNAAdds:
  883. ;
  884. ;++++++++++++++++++++++++++++++++++++
  885. finish_ReturnSNAAdds =+
  886.   Return $(Status) $(SNAAddList) $(SNAAddTextList)
  887.  
  888.  
  889. ;************************************************************************
  890. ;************************************************************************
  891. ;                    SNA INVOCATION SECTION
  892. ;************************************************************************
  893. ;************************************************************************
  894.  
  895. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  896. ;
  897. ; SnaInvocation
  898. ;
  899. ; DESCRIPTION:   To perform operations requested by the SNA Setup
  900. ;
  901. ; INPUT:         NTN_XXXXX  and STF_XXXXX  variables defined
  902. ;
  903. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  904. ;                                STATUS_NOLANGUAGE |
  905. ;                                STATUS_USERCANCEL |
  906. ;                                STATUS_FAILED
  907. ;
  908. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  909.  
  910. [SnaInvocation]
  911.  
  912.     set LongOption = $(!NTN_InfOption)
  913.     set Changes    = 0
  914.     set Instance   = "xx"
  915.  
  916.     Split-String $(LongOption) "_" OptionList
  917.     QueryListSize OptionSize $(OptionList)
  918.  
  919.     ifint $(OptionSize) == 3
  920.         set Option   = *( $(OptionList), 1 )
  921.         set Instance = *( $(OptionList), 3 )
  922.     else
  923.         set Option = $(LongOption)
  924.     endif
  925.  
  926.     ;
  927.     ; These three variables describe the execution of the installation.
  928.     ;   AddCopy adds the files in the file list to the copy list
  929.     ;   DoCopy actually copies the files on the spot
  930.     ;
  931.     ifstr(i) $(!NTN_InstallMode) == install
  932.         read-syms InstallSteps$(Option)
  933.         set !AddCopy  = $(AddFilesToCopyList)
  934.         set !DoCopy   = $(CopyFilesInCopyList)
  935.  
  936.     ifstr(i) $(!NTN_InfType) == "LOCAL"
  937.       set !AddCopy = NO
  938.       set !DoCopy  = NO
  939.     endif
  940.     Else
  941.         set !AddCopy  = NO
  942.         set !DoCopy   = NO
  943.     Endif
  944.  
  945.     shell "" CommonSection $(Option) $(Instance)
  946.  
  947.     set Status     = $($R0)
  948.     set ReturnData = $($R1)
  949. ;    set Changes    = $($R2)
  950.     set Changes = 1
  951.  
  952.     Return $(Status) $(ReturnData) $(Changes)
  953.  
  954. ;************************************************************************
  955. ;************************************************************************
  956. ;                    NCPA INVOCATION SECTION
  957. ;************************************************************************
  958. ;************************************************************************
  959.  
  960. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  961. ;
  962. ; InstallOption 
  963. ;
  964. ; DESCRIPTION:   To perform operations requested by the NCPA
  965. ;
  966. ; INPUT:          NTN_XXXXX  and STF_XXXXX  variables defined
  967. ;
  968. ; OUTPUT:         $($R0): STATUS: STATUS_SUCCESSFUL |
  969. ;                                   STATUS_NOLANGUAGE |
  970. ;                                STATUS_USERCANCEL |
  971. ;                                STATUS_FAILED
  972. ;
  973. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  974.  
  975. [InstallOption]
  976.  
  977.     set LongOption = $(!NTN_InfOption)
  978.     set Changes    = 0
  979.     set Instance   = "xx"
  980.  
  981.     set !SNA_ProductName = "SNA Server"
  982.  
  983.     Split-String $(LongOption) "_" OptionList
  984.     QueryListSize OptionSize $(OptionList)
  985.  
  986.     ifint $(OptionSize) == 3
  987.         set Option   = *( $(OptionList), 1 )
  988.         set Instance = *( $(OptionList), 3 )
  989.     else
  990.         set Option = $(LongOption)
  991.     endif
  992.  
  993.     ;
  994.     ; These three variables describe the execution of the installation.
  995.     ;   AddCopy adds the files in the file list to the copy list
  996.     ;   DoCopy actually copies the files on the spot
  997.     ;
  998.     ifstr(i) $(!NTN_InstallMode) == "install"
  999.         read-syms InstallSteps$(Option)
  1000.         set !AddCopy  = YES
  1001.         set !DoCopy   = YES
  1002.     else
  1003.         set !AddCopy  = NO
  1004.         set !DoCopy   = NO
  1005.     Endif
  1006.  
  1007.     ;
  1008.     ; Set SNA Root Directory before reading File Constants
  1009.     ;
  1010.     OpenRegKey $(!REG_H_LOCAL), "", +
  1011.         "Software\Microsoft\SNA Server\2.0\Setup", +
  1012.         $(!REG_KEY_READ), KeySNAServices
  1013.     ifstr(i) $(KeySNAServices) != {}
  1014.       GetRegValue $(KeySNAServices) "RootDir" RootDirValue
  1015.       ifstr(i) $(RootDirValue) != ""
  1016.         set !SNARootDir = *( $(RootDirValue), 4 )
  1017.       endif
  1018.     endif
  1019.  
  1020.     ;
  1021.     ; Set WAN Services Directory before reading File Constants
  1022.     ;
  1023.     OpenRegKey $(!REG_H_LOCAL), "", +
  1024.         "Software\Eicon\Ecnb\CurrentVersion", +
  1025.         $(!REG_KEY_READ), KeyWANServices
  1026.     ifstr(i) $(KeyWANServices) != {}
  1027.       GetRegValue $(KeyWANServices) "RootPath" RootPathValue
  1028.       ifstr(i) $(RootPathValue) != ""
  1029.         set !WANRootDir = *( $(RootPathValue), 4 )
  1030.       endif
  1031.     endif
  1032.  
  1033.     
  1034.     
  1035.     shell $(!UtilityInf) GetBusType
  1036.     ifstr(i) $($R0) == STATUS_SUCCESSFUL
  1037.       set !STF_BUSTYPE = $($R1)
  1038.     else
  1039.       set !STF_BUSTYPE = "ISA"
  1040.     endif
  1041.  
  1042.     ifstr(i) $(!NTN_InstallMode) != "install"
  1043.         read-syms FileConstants
  1044.         read-syms FileConstants$(Option)
  1045.  
  1046.         OpenRegKey $(!REG_H_LOCAL), "", +
  1047.                    $(ProductRegBase)"\"$(ProductFullName)"\CurrentVersion", +
  1048.                    $(!REG_KEY_READWRITE), KeyServiceIndex
  1049.         ifstr(i) $(KeyServiceIndex) == ""
  1050.             set ErrMesg = "Can't Find This Product Instance."
  1051.             set ErrProc = "InstallOption"
  1052.             set ErrFunc = "OpenRegKey (1)"
  1053.             goto fatal_registry
  1054.         endif
  1055.         GetRegValue $(KeyServiceIndex), "SNAVersion", SNAVersionInfo
  1056.         set !SNAVersion = *( $(SNAVersionInfo), 4 )
  1057.         CloseRegKey $(KeyServiceIndex)
  1058.  
  1059.         ;
  1060.         ; This is a Hack.
  1061.         ; Since the NCPA can (now) only configure and remove components, we'll
  1062.         ; assume that it's going to access them inside the SNA Server 
  1063.         ; root directory and not in floppy like install would.  Therefore,
  1064.         ; DriverDir = SNARootDir.
  1065.         ; At some future point in time, we might consider putting a path in the
  1066.         ; registry.
  1067.         ;
  1068.         set !DriverDir = $(!SNARootDir)"\system\hwsetup\"
  1069.  
  1070.     else
  1071.         ;
  1072.         ; This case shouldn't happen, but I honestly don't know how to deal
  1073.         ; with it when it does.  I guess I can check if SNA Server is
  1074.         ; installed, and if it's not, tell the user that it must be installed
  1075.         ; before link services can be installed
  1076.         ;
  1077.         set Hosed = "Probably"
  1078.     endif
  1079.  
  1080.     LoadLibrary "" $(DialogLibrary) !DLGHANDLE
  1081.             
  1082.     shell "" CommonSection $(Option) $(Instance)
  1083.     set Status = $($R0)
  1084.  
  1085.     ifstr(i) $($R2) == 1
  1086.       shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) "STATUS" +
  1087.             "For the changed parameters to be noticed, you must stop and"$(!LF)+
  1088.             "restart this link service with the "$(!SNA_ProductName)" Admin program."
  1089.  
  1090.     else-ifstr(i) $($R2) == 2
  1091.       shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) "STATUS" +
  1092.             "You must reboot for the changed parameters to be noticed."
  1093.     endif
  1094.  
  1095.     FreeLibrary $(!DLGHANDLE)
  1096.  
  1097.     Return $(Status)
  1098.  
  1099. fatal_registry = +
  1100.  
  1101.     set Error = +
  1102.         "Fatal Registry Error:"$(!LF)+
  1103.         $(ErrMesg)$(!LF)+
  1104.         "File: "$(ThisInf)$(!LF)+
  1105.         "Procedure: "$(ErrProc)$(!LF)+
  1106.         "Function: "$(ErrFunc)
  1107.  
  1108.     shell $(SubroutineInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error)
  1109.  
  1110.     Return STATUS_FAILED {} $(Changes)
  1111.  
  1112. ;************************************************************************
  1113. ;************************************************************************
  1114. ;                   COMMON SECTION
  1115. ;************************************************************************
  1116. ;************************************************************************
  1117.  
  1118. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  1119. ;
  1120. ; CommonSection
  1121. ;
  1122. ; DESCRIPTION:    To carry out the install/config/etc. operations
  1123. ;
  1124. ; INPUT:    NTN_XXXXX  and STF_XXXXX  variables defined
  1125. ;        $($0):  Option to be used
  1126. ;        $($1):  Instance to be used
  1127. ;
  1128. ; OUTPUT:    $($R0): STATUS:    STATUS_SUCCESSFUL |
  1129. ;                STATUS_NOLANGUAGE |
  1130. ;                STATUS_EXISTS     |
  1131. ;                STATUS_USERCANCEL |
  1132. ;                STATUS_FAILED
  1133. ;
  1134. ;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
  1135.  
  1136. [CommonSection]
  1137.  
  1138.     StartWait
  1139.  
  1140.     set Option   = $($0)
  1141.     set Instance = $($1)
  1142.     set Index    = "CurrentVersion"
  1143.     set RetData  = {}
  1144.     set Changes  = 0
  1145.  
  1146.     ;
  1147.     ; Check if the language requested is supported
  1148.     ;
  1149.     set LanguageList = ^(LanguagesSupported, 1)
  1150.     ifcontains(i) $(!STF_LANGUAGE) in $(LanguageList)
  1151.         goto languageexists
  1152.     else
  1153.         set Status = STATUS_NOLANGUAGE
  1154.         goto end
  1155.     endif
  1156.  
  1157.     
  1158. ;++++++++++++++++++++++++++++++++++++
  1159. ;
  1160. ; languageexists:
  1161. ;
  1162. ;++++++++++++++++++++++++++++++++++++
  1163. languageexists = +
  1164.  
  1165.     ;
  1166.     ; Define some constants, read some variable sections, and set the date
  1167.     ;
  1168.  
  1169.     StartWait
  1170.  
  1171.     read-syms GeneralConstants
  1172.  
  1173.     read-syms FileConstants
  1174.     read-syms FileConstants$(!STF_LANGUAGE)
  1175.     read-syms FileConstants$(Option)
  1176.     read-syms FileConstants$(Option)_$(!STF_LANGUAGE)
  1177.  
  1178.     install LoadSetupLibrary
  1179.     detect date
  1180.     install FreeSetupLibrary
  1181.  
  1182.     SetHelpFile $(!DriverDir)$(ThisHlp) $(HlpMin) $(HlpMax)
  1183.  
  1184.     LoadLibrary "" $(!DriverDir)$(ThisSrl) !IHVDLGHANDLE
  1185.     ifstr(i) $(!IHVDLGHANDLE) == ""
  1186.     goto set_status_failed
  1187.     endif
  1188.     
  1189.     set to   = Begin
  1190.     set from = Begin
  1191.  
  1192.     ;
  1193.     ; Assume that all is well as we begin
  1194.     ;
  1195.     set CommonStatus = STATUS_SUCCESSFUL
  1196.  
  1197.     EndWait
  1198.  
  1199.  
  1200. ;++++++++++++++++++++++++++++++++++++
  1201. ;
  1202. ; Begin:
  1203. ; Set up the operation-mode-based variables and gaily welcome
  1204. ; the user.  if the "install mode" variable is improperly set,
  1205. ; assume this is a new installation.
  1206. ;
  1207. ;++++++++++++++++++++++++++++++++++++
  1208. Begin = +
  1209.     ifstr(i)      $(!NTN_InstallMode)     == deinstall
  1210.         set StartLabel = remove_component
  1211.     else-ifstr(i) $(!NTN_InstallMode)    == fullremove
  1212.         set StartLabel = remove_component
  1213.     else-ifstr(i) $(!NTN_InstallMode)    == snaremove
  1214.         set StartLabel = remove_component
  1215.     else-ifstr(i) $(!NTN_InstallMode)    == getbindings
  1216.         set StartLabel = getbind_component
  1217.     else-ifstr(i) $(!NTN_InstallMode)     == bind
  1218.         set StartLabel = bind_component
  1219.     else-ifstr(i) $(!NTN_InstallMode)     == configure
  1220.         set StartLabel = config_component
  1221.     else                    ;; install
  1222.         set StartLabel = install_component
  1223.     endif
  1224.  
  1225.     goto set_defaults_$(Option)
  1226.  
  1227.  
  1228. ;++++++++++++++++++++++++++++++++++++
  1229. ;
  1230. ; set_defaults_ECX25
  1231. ;
  1232. ;++++++++++++++++++++++++++++++++++++
  1233. set_defaults_ECX25 =+
  1234.   set ServiceName  = $(Option)
  1235.   set ServiceTitle = $(ProductTitle)
  1236.   set ServiceDesc  = $(ProductDesc)
  1237.   set LNUA              = "000000000000000"
  1238.   set EcPort       = "1"
  1239.   set StationID    = "193"      ; 0xC1
  1240.  
  1241.  
  1242.   goto finish_defaults
  1243.  
  1244. ;++++++++++++++++++++++++++++++++++++
  1245. ;
  1246. ; set_defaults_IHVDDRV
  1247. ;
  1248. ;++++++++++++++++++++++++++++++++++++
  1249. ;set_defaults_IHVDDRV =+
  1250. ;  set ServiceName  = $(Option)
  1251. ;  set ServiceTitle = $(ProductTitle)
  1252. ;  set ServiceDesc  = $(ProductDesc)
  1253. ;
  1254. ;  goto finish_defaults
  1255.  
  1256. ;++++++++++++++++++++++++++++++++++++
  1257. ;
  1258. ; finish_defaults:
  1259. ;
  1260. ;++++++++++++++++++++++++++++++++++++
  1261. finish_defaults =+
  1262.   set from = end
  1263.   set to   = end
  1264.  
  1265.   goto $(StartLabel)
  1266.  
  1267. ;++++++++++++++++++++++++++++++++++++
  1268. ;
  1269. ; install_component:
  1270. ;
  1271. ;++++++++++++++++++++++++++++++++++++
  1272. install_component = +
  1273.  
  1274.     ;
  1275.     ; First, check if there are any existing services of this product
  1276.     ; already in the registry.
  1277.     ;
  1278.     shell $(UtilityInf) FindSNAProductServices, $(ProductRegBase), +
  1279.                             $(ProductFullName)
  1280.     ifint $($ShellCode) != 0
  1281.         goto ShellCodeError
  1282.     endif
  1283.  
  1284.     set Status        = $($R0)
  1285.     set SvcIndexList    = $($R1)
  1286.     set SvcNameList        = $($R2)
  1287.     set SvcTitleList    = $($R3)
  1288.     set SvcDescList        = $($R4)
  1289.  
  1290.     ifstr(i) $(Status) == STATUS_FAILED
  1291.         set ErrMesg = "Can't Find This Product."
  1292.         set ErrProc = "install_component"
  1293.         set ErrFunc = "FindSNAProductServices"
  1294.         goto fatal_registry
  1295.     endif
  1296.  
  1297.     ;
  1298.     ; if there are no services of this product installed, it could mean
  1299.     ; that the product doesn't exist.  Either way, we are installing service
  1300.     ; index "01" and on to modify params.
  1301.     ;
  1302.  
  1303.     QueryListSize SvcIndexListSize $(SvcIndexList)
  1304.  
  1305.     set ProductExists = $(TRUE)
  1306.  
  1307.     ifint $(SvcIndexListSize) == 0
  1308.         ifstr(i) $(Status) == STATUS_NOSUCHPRODUCT
  1309.           set ProductExists = $(FALSE)
  1310.         endif
  1311.         set Instance = "01"
  1312.         goto install_nextstep
  1313.     endif
  1314.  
  1315.     ;
  1316.     ; If there is one instance of this service and this product is an
  1317.     ; exclusive install, return with the appropriate status.
  1318.     ;
  1319.     ifint $(ProductExclusive) != $(FALSE)
  1320.       ifint $(SvcIndexListSize) == 1
  1321.         set Status = STATUS_EXISTS
  1322.         ifint $(ProductExclusive) == $(NOTIFY)
  1323.           shell $(SubroutineInf) SetupMessage $(!STF_LANGUAGE), +
  1324.                 "NONFATAL", +
  1325.                 "This product is already installed and"$(!LF)+
  1326.                 "can only be installed once."
  1327.         endif
  1328.         goto end
  1329.       endif
  1330.     endif
  1331.  
  1332.     shell $(UtilityInf) FindNextAvailableIndex $(SvcIndexList)
  1333.     ifint $($ShellCode) != 0
  1334.         goto ShellCodeError
  1335.     endif
  1336.  
  1337.     set Status   = $($R0)
  1338.     set Instance = $($R1)
  1339.  
  1340.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1341.         goto end
  1342.     endif
  1343.  
  1344. ;++++++++++++++++++++++++++++++++++++
  1345. ;
  1346. ; install_nextstep:
  1347. ; we have a service index and are ready to start the
  1348. ; process of installing an instance.
  1349. ;
  1350. ;++++++++++++++++++++++++++++++++++++
  1351. install_nextstep = +
  1352.     read-syms FileConstants$(Option)
  1353.  
  1354.         set TmpStr = ""
  1355.         split-string $(Instance) "0" TmpList
  1356.         QueryListSize TmpSize $(TmpList)
  1357.         ifstr(i) *($(TmpList),1) != "0"
  1358.           set TmpStr = $(TmpStr)*($(TmpList),1)
  1359.         endif
  1360.         ifint $(TmpSize) > 1
  1361.           set TmpStr = $(TmpStr)*($(TmpList),2)
  1362.         endif
  1363.  
  1364.         set ServiceTitle = $(ProductTitle)" #"$(TmpStr)
  1365.  
  1366.     ifint $(ProductServiceQuery) == $(TRUE)
  1367.         shell $(UtilityInf) EnterServiceName, +
  1368.                     $(ProductTitle), +
  1369.                     $(ProductServicePrefix), +
  1370.                     $(Instance)
  1371.         ifint $($ShellCode) != 0
  1372.             goto ShellCodeError
  1373.         endif
  1374.     
  1375.         set Status     = $($R0)
  1376.         set ServiceName  = $($R1)
  1377.     
  1378.         ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1379.             goto end
  1380.         endif
  1381.     else
  1382.         set ServiceName = $(ProductServicePrefix)
  1383.     endif
  1384.     
  1385.     goto modify_params
  1386.  
  1387. ;++++++++++++++++++++++++++++++++++++
  1388. ;
  1389. ; config_component:
  1390. ; get the current values for all the parameters and prepare them for
  1391. ; modify_params.
  1392. ;
  1393. ;++++++++++++++++++++++++++++++++++++
  1394. config_component = +
  1395.     read-syms FileConstants$(Option)
  1396.  
  1397.     ;
  1398.     ; Try and open this product and see if it's even installed.
  1399.     ;
  1400.  
  1401.     shell $(UtilityInf) FindSNAProductServices $(ProductRegBase), +
  1402.                            $(ProductFullName)
  1403.     ifint $($ShellCode) != 0
  1404.         goto ShellCodeError
  1405.     endif
  1406.  
  1407.     set Status       = $($R0)
  1408.     set SvcIndexList = $($R1)
  1409.     set SvcNameList     = $($R2)
  1410.     set SvcTitleList = $($R3)
  1411.     set SvcDescList  = $($R4)
  1412.  
  1413.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1414.         set ErrMesg = "Can't Find This Product."
  1415.         set ErrProc = "config_component"
  1416.         set ErrFunc = "FindSNAProductServices"
  1417.         goto fatal_registry
  1418.     endif
  1419.  
  1420.     shell $(UtilityInf) GrepUniqueServiceInfo "Index", +
  1421.                             $(Instance), +
  1422.                            $(SvcIndexList), +
  1423.                            $(SvcNameList),+
  1424.                            $(SvcTitleList),+
  1425.                            $(SvcDescList)
  1426.     ifint $($ShellCode) != 0
  1427.         goto ShellCodeError
  1428.     endif
  1429.  
  1430.     set Status       = $($R0)
  1431.     set ServiceIndex = $($R1)
  1432.     set ServiceName  = $($R2)
  1433.     set ServiceTitle = $($R3)
  1434.     set ServiceDesc  = $($R4)
  1435.  
  1436.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1437.         goto end
  1438.     endif
  1439.  
  1440. ;++++++++++++++++++++++++++++++++++++
  1441. ;
  1442. ; read_params:
  1443. ; read the parameters from the SCA and assign them to the appropriate
  1444. ; variables.
  1445. ;
  1446. ;++++++++++++++++++++++++++++++++++++
  1447. read_params = +
  1448.  
  1449.     ;
  1450.     ; Find the entry in the Service Control Architecture and get a handle
  1451.     ; to the Parameters Key and to the ExtraParameters key if one exists.
  1452.     ;
  1453.  
  1454.     shell $(UtilityInf) FindSNAService, $(ServiceName)
  1455.     ifint $($ShellCode) != 0
  1456.         goto ShellCodeError
  1457.     endif
  1458.  
  1459.     set Status        = $($R0)
  1460.     set KeyService        = $($R1)
  1461.     set KeyParameters    = $($R2)
  1462.     set KeyExtraParams    = $($R3)
  1463.  
  1464.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1465.         CloseRegKey $(KeyService)
  1466.         CloseRegKey $(KeyParameters)
  1467.         CloseRegKey $(KeyExtraParams)
  1468.         set ErrMesg = "Can't Find Service Entry For Instance "$(ServiceName)
  1469.         set ErrProc = "read_params"
  1470.         set ErrFunc = "FindSNAService"
  1471.         goto fatal_registry
  1472.     endif
  1473.  
  1474.     set OldVersionExisted = $(TRUE)
  1475.  
  1476.     set ValueName = ""
  1477.     set ValueData = ""
  1478.     set ValueStr  = ""
  1479.     set ValueList = {}
  1480.  
  1481.     ;
  1482.     ; Get the old values from the parameters key
  1483.     ;
  1484.     EnumRegValue $(KeyParameters) ValueList
  1485.  
  1486.     ;
  1487.     ; if there's an ExtraParameters subkey, add those values to the list
  1488.     ;
  1489.     ifstr(i) $(KeyExtraParams) != $(KeyNull)
  1490.         EnumRegValue $(KeyExtraParams) ExtraValueList
  1491.         ForListDo $(ExtraValueList)
  1492.             set ValueList = >( $(ValueList), $($) )
  1493.         EndForListDo
  1494.     endif
  1495.  
  1496.     ForListDo $(ValueList)
  1497.         set ValueItem = $($)
  1498.         set ValueName = *($(ValueItem), 1)
  1499.         set ValueData = *($(ValueItem), 4)
  1500.  
  1501.         goto assign_value_$(Option)
  1502.  
  1503.                 ;++++++++++++++++++++++++++++++++++++
  1504.                 ;
  1505.                 ; assign_value_ECX25:
  1506.                 ;
  1507.                 ;++++++++++++++++++++++++++++++++++++
  1508.                 assign_value_ECX25 =+
  1509.  
  1510.  
  1511.             ifstr(i) $(ValueName) == "LNUA"
  1512.                 set LNUA = $(ValueData)
  1513.             else-ifstr(i) $(ValueName) == "EcPort"
  1514.                 set EcPort = $(ValueData)
  1515.             else-ifstr(i) $(ValueName) == "StationID"
  1516.                 set StationID = $(ValueData)
  1517.                     endif
  1518.   goto finish_assign_value
  1519.  
  1520. ;++++++++++++++++++++++++++++++++++++
  1521. ;
  1522. ; assign_value_IHVDDRV:
  1523. ;
  1524. ;++++++++++++++++++++++++++++++++++++
  1525. ;assign_value_IHVDDRV =+
  1526. ;  goto finish_assign_value
  1527.  
  1528. ;++++++++++++++++++++++++++++++++++++
  1529. ;
  1530. ; finish_assign_value:
  1531. ;
  1532. ;++++++++++++++++++++++++++++++++++++
  1533. finish_assign_value =+
  1534.   EndForListDo
  1535.  
  1536.   goto assign_extra_$(Option)
  1537.  
  1538. ;++++++++++++++++++++++++++++++++++++
  1539. ;
  1540. ; assign_extra_ECX25:
  1541. ;
  1542. ;++++++++++++++++++++++++++++++++++++
  1543. assign_extra_ECX25 = +
  1544.   goto finish_assign_extra
  1545.  
  1546. ;++++++++++++++++++++++++++++++++++++
  1547. ;
  1548. ; assign_extra_IHVDDRV:
  1549. ;
  1550. ;++++++++++++++++++++++++++++++++++++
  1551. ;assign_extra_IHVDDRV =+
  1552. ;  goto finish_assign_extra
  1553.  
  1554. ;++++++++++++++++++++++++++++++++++++
  1555. ;
  1556. ; finish_assign_extra:
  1557. ;
  1558. ;++++++++++++++++++++++++++++++++++++
  1559. finish_assign_extra =+
  1560.   goto modify_params
  1561.  
  1562. ;++++++++++++++++++++++++++++++++++++
  1563. ;
  1564. ; modify_params:
  1565. ; allow the user to bang away at the parameters until they are happy
  1566. ;
  1567. ;++++++++++++++++++++++++++++++++++++
  1568. modify_params =+
  1569.   set from = modify_params
  1570.  
  1571.   goto modify_params_$(Option)
  1572.  
  1573. ;++++++++++++++++++++++++++++++++++++
  1574. ;
  1575. ; modify_params_ECX25:
  1576. ;
  1577. ;++++++++++++++++++++++++++++++++++++
  1578. modify_params_ECX25 = +
  1579.  
  1580.   shell "" DoX25LSConfig $(ServiceName), +
  1581.                          $(ServiceTitle), +
  1582.                          $(LNUA), +
  1583.                          $(EcPort), +
  1584.                          $(StationID)
  1585.   ifint $($ShellCode) != 0
  1586.     goto ShellCodeError
  1587.   endif
  1588.  
  1589.   set Status = $($R0)
  1590.  
  1591.   ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1592.     goto end
  1593.  
  1594.   else
  1595.     set ServiceTitle  = $($R1)
  1596.     set LNUA          = $($R2)
  1597.     set EcPort        = $($R3)
  1598.     set StationID     = $($R4)
  1599.  
  1600.   endif
  1601.  
  1602.   goto finish_modify_params
  1603.  
  1604. ;++++++++++++++++++++++++++++++++++++
  1605. ;
  1606. ; modify_params_IHVDDRV:
  1607. ;
  1608. ;++++++++++++++++++++++++++++++++++++
  1609. ;modify_params_IHVDDRV =+
  1610. ;  goto finish_modify_params
  1611.  
  1612. ;++++++++++++++++++++++++++++++++++++
  1613. ;
  1614. ; finish_modify_params:
  1615. ;
  1616. ;++++++++++++++++++++++++++++++++++++
  1617. finish_modify_params =+
  1618.   goto adjust_params
  1619.  
  1620. ;++++++++++++++++++++++++++++++++++++
  1621. ;
  1622. ; adjust_params:
  1623. ; if there is an old version, the registry keys and values exist and all we
  1624. ; have to do is modify them.  otherwise, if we're installing from scratch,
  1625. ; we have to create those keys and values.
  1626. ;
  1627. ;++++++++++++++++++++++++++++++++++++
  1628. adjust_params = +
  1629.  
  1630.     ifint $(OldVersionExisted) == $(TRUE)
  1631.         ifstr(i) $(!NTN_InstallMode) == "configure"
  1632.             goto write_params
  1633.         endif
  1634.     endif
  1635.  
  1636. ;++++++++++++++++++++++++++++++++++++
  1637. ;
  1638. ; create_regvals:
  1639. ; create the necessary parts of the registry
  1640. ;
  1641. ;++++++++++++++++++++++++++++++++++++
  1642. create_regvals = +
  1643.  
  1644.     Shell $(UtilityInf) +
  1645.           CreateSNAService, +
  1646.             $(ServiceName), +
  1647.             $(SNAServiceType), +
  1648.             $(ProductImagePath), +
  1649.             $(ProductDepends), +
  1650.             $(ProductParams), +
  1651.             $(ProductExtraParams), +
  1652.             $(!SNARootDir)"\System\"$(ProductImagePath), +
  1653.             7
  1654.  
  1655.     ifint $($ShellCode) != 0
  1656.         goto ShellCodeError
  1657.     endif
  1658.  
  1659.     set Status            = $($R0)
  1660.     set KeyService        = $($R1)
  1661.     set KeyParameters    = $($R2)
  1662.     set KeyExtraParams    = $($R3)
  1663.  
  1664.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1665.         CloseRegKey $(KeyService)
  1666.         CloseRegKey $(KeyParameters)
  1667.         CloseRegKey $(KeyExtraParams)
  1668.         set ErrMesg = "Can't Create Service Entry For Instance."
  1669.         set ErrProc = "create_regvals"
  1670.         set ErrFunc = "CreateSNAService"
  1671.         goto fatal_registry
  1672.     endif
  1673.  
  1674.     Shell $(UtilityInf) CreateSNARegEntry, $(ProductRegBase), +
  1675.                            $(ProductFullName)
  1676.  
  1677.     ifint $($ShellCode) != 0
  1678.         goto ShellCodeError
  1679.     endif
  1680.  
  1681.     set Status            = $($R0)
  1682.     set KeyProductBase    = $($R1)
  1683.     set KeyProduct        = $($R2)
  1684.     set KeyServiceIndex    = $($R3)
  1685.     set KeyNetRules        = $($R4)
  1686.  
  1687.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1688.         CloseRegKey $(KeyProductBase)
  1689.         CloseRegKey $(KeyProduct)
  1690.         CloseRegKey $(KeyServiceIndex)
  1691.         CloseRegKey $(KeyNetRules)
  1692.         set ErrMesg = "Can't Create Product Entry For Instance."
  1693.         set ErrProc = "create_regvals"
  1694.         set ErrFunc = "CreateSNARegEntry"
  1695.         goto fatal_registry
  1696.     endif
  1697.  
  1698.     shell $(UtilityInf) AddValueList, $(KeyServiceIndex), +
  1699.         {    { ServiceName , $(NoTitle), $(!REG_VT_SZ), $(ServiceName)  }, +
  1700.         { InfName     , $(NoTitle), $(!REG_VT_SZ), $(FullInfName)  }, +
  1701.         { SoftwareType, $(NoTitle), $(!REG_VT_SZ), $(SoftwareType) }, +
  1702.         { SNAVersion  , $(NoTitle), $(!REG_VT_SZ), $(!SNAVersion)  } }
  1703.  
  1704.     set NROption    = $(Option)"_"$(Instance)
  1705.     set NRTitle    = $(NetRulesTitle)
  1706.     set NRClass    = { $(NetRulesClass) }
  1707.     set NRBindForm    = $(ServiceName)" yes yes container"
  1708.     set NRUse    = $(NetRulesUse)
  1709.     set NRBindable    = { $(NetRulesBindable) }
  1710.     set NetRulesValues = { +
  1711.             { InfName  , $(NoTitle), $(!REG_VT_SZ),       $(FullInfName)  }, +
  1712.             { InfOption, $(NoTitle), $(!REG_VT_SZ),       $(NROption)     }, +
  1713.             { title    , $(NoTitle), $(!REG_VT_SZ),       $(NRTitle)      }, +
  1714.             { use      , $(NoTitle), $(!REG_VT_SZ),       $(NRUse)        }, +
  1715.             { bindform , $(NoTitle), $(!REG_VT_SZ),       $(NRBindForm)   }, +
  1716.             { type     , $(NoTitle), $(!REG_VT_SZ),       $(NetRulesType) }, +
  1717.             { class    , $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRClass)      }, +
  1718.             { bindable , $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRBindable)   }  +
  1719.                  }
  1720.  
  1721.     shell $(UtilityInf) AddValueList $(KeyNetRules) $(NetRulesValues)
  1722.  
  1723.     ifint $(ProductExists) == $(FALSE)
  1724.         read-syms ProgressCopyVars
  1725.         install InstallRemove
  1726.     endif
  1727.  
  1728.     goto write_params
  1729.  
  1730. ;++++++++++++++++++++++++++++++++++++
  1731. ;
  1732. ; write_params:
  1733. ;
  1734. ;++++++++++++++++++++++++++++++++++++
  1735. write_params = +
  1736.  
  1737.     ifstr $(KeyProductBase) == $(KeyNull)
  1738.         shell $(UtilityInf) FindSNARegEntry, +
  1739.                             $(ProductRegBase), +
  1740.                             $(ProductFullName)
  1741.         ifint $($ShellCode) != 0
  1742.             goto ShellCodeError
  1743.         endif
  1744.  
  1745.         set Status          = $($R0)
  1746.         set KeyProductBase  = $($R1)
  1747.         set KeyProduct      = $($R2)
  1748.         set KeyServiceIndex = $($R3)
  1749.         set KeyNetRules     = $($R4)
  1750.  
  1751.         ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1752.             CloseRegKey $(KeyProductBase)
  1753.             CloseRegKey $(KeyProduct)
  1754.             CloseRegKey $(KeyServiceIndex)
  1755.             CloseRegKey $(KeyNetRules)
  1756.             set ErrMesg = "Can't Find Product Entry For Instance."
  1757.             set ErrProc = "write_params"
  1758.             set ErrFunc = "FindSNARegEntry"
  1759.             goto fatal_registry
  1760.         endif
  1761.     endif
  1762.  
  1763.     ifstr $(KeyService) == $(KeyNull)
  1764.         shell $(UtilityInf) FindSNAService, $(ServiceName)
  1765.         ifint $($ShellCode) != 0
  1766.             goto ShellCodeError
  1767.         endif
  1768.  
  1769.         set Status        = $($R0)
  1770.         set KeyService         = $($R1)
  1771.         set KeyParameters    = $($R2)
  1772.         set KeyExtraParams    = $($R3)
  1773.  
  1774.         ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1775.             CloseRegKey $(KeyService)
  1776.             CloseRegKey $(KeyParameters)
  1777.             CloseRegKey $(KeyExtraParams)
  1778.             set ErrMesg = "Can't Find Service Entry For Instance."
  1779.             set ErrProc = "write_params"
  1780.             set ErrFunc = "FindSNAService"
  1781.             goto fatal_registry
  1782.         endif
  1783.     endif
  1784.  
  1785.     goto write_params_$(Option)
  1786.  
  1787. ;++++++++++++++++++++++++++++++++++++
  1788. ;
  1789. ; write_params_ECX25:
  1790. ;
  1791. ;++++++++++++++++++++++++++++++++++++
  1792. write_params_ECX25 =+
  1793.         set FullOption    = $(Option)"_"$(Instance)
  1794.   set ProductParams = { +
  1795.         { IHVDLL       , $(NoTitle), $(!REG_VT_SZ)   , $(ProductDLL)    },+
  1796.         { InfName      , $(NoTitle), $(!REG_VT_SZ)   , $(FullInfName)   },+
  1797.         { InfOption    , $(NoTitle), $(!REG_VT_SZ)   , $(FullOption)    },+
  1798.     { DriverName   , $(NoTitle), $(!REG_VT_SZ), ""      } +
  1799.                       }
  1800.  
  1801.   set ProductExtraParams = { +
  1802.       { LNUA     , $(NoTitle), $(!REG_VT_SZ)   , $(LNUA)     }, +
  1803.       { EcPort,    $(NoTitle), $(!REG_VT_DWORD), $(EcPort)   }, +
  1804.       { StationID, $(NoTitle), $(!REG_VT_DWORD), $(StationID)}  +
  1805.           }
  1806.     
  1807.  
  1808. ;  OpenRegKey $(!REG_H_LOCAL), "", +
  1809. ;             "SYSTEM\CurrentControlSet\Services\"+
  1810. ;             "IHVDDRV\Parameters\ExtraParameters",+
  1811. ;             $(!REG_KEY_READWRITE), KeyDriverParams
  1812. ;
  1813. ;  ifstr(i) $(KeyDriverParams) == $(KeyNull)
  1814. ;    set ErrMesg = "Can't Find Device Driver Service Entry."
  1815. ;    set ErrProc = "write_params_IBMTRLS"
  1816. ;    set ErrFunc = "OpenRegKey"
  1817. ;    goto fatal_registry
  1818. ;  endif
  1819. ;
  1820. ;  shell $(UtilityInf) AddValueList, $(KeyDriverParams), +
  1821. ;          { +
  1822. ;      { LNUA     , $(NoTitle), $(!REG_VT_SZ)   , $(LNUA)     },+
  1823. ;      { EcPort,    $(NoTitle), $(!REG_VT_DWORD), $(EcPort)   }, +
  1824. ;      { StationID, $(NoTitle), $(!REG_VT_DWORD), $(StationID)} +
  1825. ;          }
  1826. ;
  1827. ;
  1828. ;  CloseRegKey $(KeyDriverParams)
  1829.  
  1830.   goto finish_write_params
  1831.  
  1832. ;++++++++++++++++++++++++++++++++++++
  1833. ;
  1834. ; write_params_IHVDDRV:
  1835. ;
  1836. ;++++++++++++++++++++++++++++++++++++
  1837. ;write_params_IHVDDRV =+
  1838. ;  set FullOption    = $(Option)"_"$(ServiceIndex)
  1839. ;  set ProductParams = { +
  1840. ;        { InfName  , $(NoTitle), $(!REG_VT_SZ), $(FullInfName) },+
  1841. ;        { InfOption, $(NoTitle), $(!REG_VT_SZ), $(FullOption)  } +
  1842. ;                      }
  1843. ;  set ProductExtraParams = {}
  1844. ;
  1845. ;  goto finish_write_params
  1846.  
  1847. ;++++++++++++++++++++++++++++++++++++
  1848. ;
  1849. ; finish_write_params:
  1850. ;
  1851. ;++++++++++++++++++++++++++++++++++++
  1852.  
  1853.  
  1854.     finish_write_params = +
  1855.  
  1856.         shell $(UtilityInf) AddValueList, $(KeyServiceIndex), +
  1857.             { +
  1858.             { Title      , $(NoTitle), $(!REG_VT_SZ), $(ServiceTitle) }, +
  1859.             { Description, $(NoTitle), $(!REG_VT_SZ), $(ServiceDesc)  } +
  1860.             }
  1861.         ifint $($ShellCode) != 0
  1862.             goto ShellCodeError
  1863.         endif
  1864.  
  1865.         shell $(UtilityInf) AddValueList, $(KeyParameters), +
  1866.             { +
  1867.             { Title      , $(NoTitle), $(!REG_VT_SZ), $(ServiceTitle) }, +
  1868.             { Description, $(NoTitle), $(!REG_VT_SZ), $(ServiceDesc)  } +
  1869.             }
  1870.         ifint $($ShellCode) != 0
  1871.             goto ShellCodeError
  1872.         endif
  1873.  
  1874.         ifstr(i) $(ProductParams) != {}
  1875.             shell $(UtilityInf) AddValueList, $(KeyParameters), +
  1876.                               $(ProductParams)
  1877.             ifint $($ShellCode) != 0
  1878.                 goto ShellCodeError
  1879.             endif
  1880.         endif
  1881.  
  1882.         ifstr(i) $(ProductExtraParams) != {}    
  1883.             shell $(UtilityInf) AddValueList, $(KeyExtraParams), +
  1884.                               $(ProductExtraParams)
  1885.             ifint $($ShellCode) != 0
  1886.                 goto ShellCodeError
  1887.             endif
  1888.         endif
  1889.     
  1890.         set RetData = >( $(RetData), { $(Instance), +
  1891.                         $(ServiceName), +
  1892.                         $(ServiceTitle), +
  1893.                         $(ServiceDesc), +
  1894.                         $(!NTN_InstallMode), +
  1895.                         } )
  1896.  
  1897.         CloseRegKey $(KeyProductBase)
  1898.         CloseRegKey $(KeyProduct)
  1899.         CloseRegKey $(KeyServiceIndex)
  1900.         CloseRegKey $(KeyNetRules)
  1901.         CloseRegKey $(KeyService)
  1902.         CloseRegKey $(KeyParameters)
  1903.         CloseRegKey $(KeyExtraParams)
  1904.  
  1905.         goto successful
  1906.  
  1907. ;++++++++++++++++++++++++++++++++++++
  1908. ;
  1909. ; getbind_component:
  1910. ;
  1911. ;++++++++++++++++++++++++++++++++++++
  1912. getbind_component = +
  1913.     goto getbind_$(Option)
  1914.  
  1915.  
  1916. ;++++++++++++++++++++++++++++++++++++
  1917. ;
  1918. ; getbind_ECX25:
  1919. ;
  1920. ;++++++++++++++++++++++++++++++++++++
  1921. getbind_ECX25 =+
  1922. ; ?????  set RetData = { { "01", "IHVDDRV", "", "", "getbindings" } }
  1923. ;    set RetData = { {"CurrentVersion", "IBMX25DD", "", "", "getbindings"} }
  1924. ;  set RetData = { { "01", "ECNB", "", "", "getbindings" } }
  1925.   goto finish_getbind_component
  1926.  
  1927. ;++++++++++++++++++++++++++++++++++++
  1928. ;
  1929. ; getbind_IHVDDRV:
  1930. ;
  1931. ;++++++++++++++++++++++++++++++++++++
  1932. ;getbind_IHVDDRV =+
  1933. ;  goto finish_getbind_component
  1934.  
  1935. ;++++++++++++++++++++++++++++++++++++
  1936. ;
  1937. ; finish_getbind_component:
  1938. ;
  1939. ;++++++++++++++++++++++++++++++++++++
  1940. finish_getbind_component =+
  1941.   goto successful
  1942.  
  1943.  
  1944. ;++++++++++++++++++++++++++++++++++++
  1945. ;
  1946. ; bind_component:
  1947. ;
  1948. ;++++++++++++++++++++++++++++++++++++
  1949. bind_component =+
  1950.   set Error = "Network bindings aren't implemented yet."
  1951.   goto fatal_msg
  1952.  
  1953.  
  1954. ;++++++++++++++++++++++++++++++++++++
  1955. ;
  1956. ; remove_component:
  1957. ;
  1958. ;++++++++++++++++++++++++++++++++++++
  1959.  
  1960. remove_component = +
  1961.     read-syms FileConstants$(Option)
  1962.     ;
  1963.     ; we need to set ourselved up with these variables for later use
  1964.     ;
  1965.     shell $(UtilityInf) FindSNAProductServices $(ProductRegBase), +
  1966.                            $(ProductFullName)
  1967.     ifint $($ShellCode) != 0
  1968.         goto ShellCodeError
  1969.     endif
  1970.  
  1971.     set Status          = $($R0)
  1972.     set SvcIndexList = $($R1)
  1973.     set SvcNameList     = $($R2)
  1974.     set SvcTitleList = $($R3)
  1975.     set SvcDescList  = $($R4)
  1976.  
  1977.     ifstr(i) $(Status) == STATUS_NOSUCHPRODUCT
  1978.         goto successful
  1979.     endif
  1980.  
  1981.     ifstr(i) $(Status) == STATUS_FAILED
  1982.         set ErrMesg = "Can't Open Product Entry In Registry."
  1983.         set ErrProc = "remove_component"
  1984.         set ErrFunc = "FindSNAProductServices"
  1985.         goto fatal_registry
  1986.     endif
  1987.  
  1988.     ;
  1989.     ; This will be a counter that will be used to decide whether or not
  1990.     ; the product key should be removed at the end
  1991.     ;
  1992.     QueryListSize SvcIndexListSize $(SvcIndexList)
  1993.  
  1994.     ifstr(i) $(!NTN_InstallMode) == "fullremove"
  1995.         set RemoveMode = "Full"
  1996.         goto remove_all_pieces
  1997.     endif
  1998.  
  1999.     set RemoveMode = "Partial"
  2000.  
  2001.     ifstr(i) $(!NTN_InstallMode) == "snaremove"
  2002.         ; Hack.  Here we search for bindings and remove only if nothing
  2003.         ; else needs this piece.
  2004. ;        ifstr(i) $(Option) == "IBMX25DD"
  2005. ;            set PN = #( FileConstantsIBMX25LS, ProductName, 1)
  2006. ;            set PV = #( FileConstantsIBMX25LS, ProductVersion, 1)
  2007. ;            shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
  2008. ;                                   $(PN)"_"$(PV)
  2009. ;            set _Status = $($R0)
  2010. ;            set _List   = $($R1)
  2011. ;
  2012. ;            ifstr(i) $(_List) != {}
  2013. ;                goto successful
  2014. ;            endif
  2015. ;            shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
  2016. ;                                   "IBMSDLCLS_1.0"
  2017. ;            set _Status = $($R0)
  2018. ;            set _List   = $($R1)
  2019. ;            ifstr(i) $(_Status) == STATUS_FAILED
  2020. ;                goto set_status_failed
  2021. ;            endif
  2022. ;            ifstr(i) $(_List) != {}
  2023. ;                goto successful
  2024. ;            endif
  2025.         endif
  2026.     endif
  2027.  
  2028.     shell $(UtilityInf) GrepUniqueServiceInfo "Index", +
  2029.                            $(Instance), +
  2030.                            $(SvcIndexList), +
  2031.                            $(SvcNameList), +
  2032.                            $(SvcTitleList), +
  2033.                            $(SvcDescList)
  2034.     ifint $($ShellCode) != 0
  2035.         goto ShellCodeError
  2036.     endif
  2037.  
  2038.     set Status         = $($R0)
  2039.     set RemoveIndex = $($R1)
  2040.     set RemoveName  = $($R2)
  2041.     set RemoveTitle = $($R3)
  2042.     set RemoveDesc  = $($R4)
  2043.  
  2044.     goto remove_one_piece
  2045.  
  2046. ;++++++++++++++++++++++++++++++++++++
  2047. ;
  2048. ; remove_all_pieces:
  2049. ;
  2050. ;++++++++++++++++++++++++++++++++++++
  2051. remove_all_pieces = +
  2052.  
  2053.     ForListDo $(SvcIndexList)
  2054.  
  2055.         ifstr(i) $(KeyProductBase) != $(KeyNull)
  2056.             CloseRegKey $(KeyProductBase)
  2057.         endif
  2058.  
  2059.         set RemoveIndex = $($)
  2060.  
  2061.         shell $(UtilityInf) GrepUniqueServiceInfo "Index", +
  2062.                                                    $(RemoveIndex), +
  2063.                                                    $(SvcIndexList), +
  2064.                                                    $(SvcNameList), +
  2065.                                                    $(SvcTitleList), +
  2066.                                                    $(SvcDescList)
  2067.         ifint $($ShellCode) != 0
  2068.             goto ShellCodeError
  2069.         endif
  2070.  
  2071.         set Status         = $($R0)
  2072.         set RemoveIndex = $($R1)
  2073.         set RemoveName  = $($R2)
  2074.         set RemoveTitle = $($R3)
  2075.         set RemoveDesc  = $($R4)
  2076.         
  2077.         ifstr(i) $(Status) != STATUS_SUCCESSFUL
  2078.             goto end
  2079.         endif
  2080.         
  2081.         set TInstance = $(Instance)
  2082.         set Instance  = $(RemoveIndex)
  2083.         read-syms FileConstants$(Option)
  2084.         set Instance  = $(TInstance)
  2085.  
  2086.         goto remove_one_piece
  2087.         
  2088.         ;++++++++++++++++++++++++++++++++++++
  2089.         ; 
  2090.         ; remove_next_piece:
  2091.         ;
  2092.         ;++++++++++++++++++++++++++++++++++++
  2093.         remove_next_piece = +
  2094.  
  2095.     EndForListDo
  2096.  
  2097.     goto remove_product
  2098.  
  2099. ;++++++++++++++++++++++++++++++++++++
  2100. ;
  2101. ; remove_one_piece:
  2102. ;
  2103. ;++++++++++++++++++++++++++++++++++++
  2104. remove_one_piece = +
  2105.     shell $(UtilityInf) FindSNARegEntry, $(ProductRegBase), +
  2106.                          $(ProductFullName)
  2107.     ifint $($ShellCode) != 0
  2108.         goto ShellCodeError
  2109.     endif
  2110.  
  2111.     set Status            = $($R0)
  2112.     set KeyProductBase    = $($R1)
  2113.     set KeyProduct        = $($R2)
  2114.     set KeyServiceIndex    = $($R3)
  2115.     set KeyNetRules        = $($R4)
  2116.  
  2117.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  2118.         CloseRegKey $(KeyProductBase)
  2119.         CloseRegKey $(KeyProduct)
  2120.         CloseRegKey $(KeyProductVer)
  2121.         CloseRegKey $(KeyNetRules)
  2122.         set ErrMesg = "Can't Find Product Entry For Instance."
  2123.         set ErrProc = "remove_one_piece"
  2124.         set ErrFunc = "FindSNARegEntry"
  2125.         goto fatal_registry
  2126.     endif
  2127.  
  2128.     ;
  2129.     ; Get rid of this service instance in the product keys
  2130.     ;
  2131.     CloseRegKey $(KeyServiceIndex)
  2132.     CloseRegKey $(KeyNetRules)
  2133.     DeleteRegTree $(KeyProduct) $(RemoveIndex)
  2134.     CloseRegKey $(KeyProduct)
  2135.  
  2136.     shell $(UtilityInf) DeleteSNAService $(RemoveName)
  2137.  
  2138.     set-sub SvcIndexListSize = $(SvcIndexListSize), 1
  2139.  
  2140.     OpenRegKey $(!REG_H_LOCAL), "", $(ProductRegBase), +
  2141.            $(!REG_KEY_READWRITE), KeyProductTemp
  2142.     ifstr(i) $(KeyProductTemp) != ""
  2143.       DeleteRegTree $(KeyProductTemp) $(ProductFullName)
  2144.       CloseRegKey $(KeyProductTemp)
  2145.     endif
  2146.  
  2147. ;    ;
  2148. ;    ; Delete the EventLog entry for the device driver.
  2149. ;    ;
  2150. ;    OpenRegKey $(!REG_H_LOCAL), "", +
  2151. ;           "System\CurrentControlSet\Services\EventLog\System", +
  2152. ;           $(!REG_KEY_READWRITE), KeyProduct
  2153.  
  2154. ;    ifstr(i) $(!NTN_InstallMode) == "fullremove"
  2155. ;      ifstr(i) $(KeyProduct) != $(KeyNull)
  2156. ;        DeleteRegTree $(KeyProduct), "IBMSYNCDD"
  2157. ;      endif
  2158. ;    endif
  2159.  
  2160. ;    CloseRegKey $(KeyProduct)
  2161.  
  2162.     ifstr(i) $(!NTN_InstallMode) == "fullremove"
  2163.       install InstallRemove
  2164.     endif
  2165.  
  2166.     set RetData = >( $(RetData), { $(RemoveIndex), +
  2167.                                    $(RemoveName), +
  2168.                                    $(RemoveTitle), +
  2169.                                    $(RemoveDesc), +
  2170.                                    $(!NTN_InstallMode), +
  2171.                                  } )
  2172.  
  2173.     ifstr(i) $(RemoveMode) == "Full"
  2174.         goto remove_next_piece
  2175.     endif
  2176.  
  2177. ;++++++++++++++++++++++++++++++++++++
  2178. ;
  2179. ; remove_product:
  2180. ;
  2181. ;++++++++++++++++++++++++++++++++++++
  2182. remove_product = +
  2183.     
  2184.     goto finish_remove_component
  2185.  
  2186. ;++++++++++++++++++++++++++++++++++++
  2187. ;
  2188. ; finish_remove_component:
  2189. ;
  2190. ;++++++++++++++++++++++++++++++++++++
  2191. finish_remove_component = +
  2192.   goto successful
  2193.  
  2194.  
  2195. ;++++++++++++++++++++++++++++++++++++
  2196. ;++++++++++++++++++++++++++++++++++++
  2197. ;
  2198. ; Escape Hatches:
  2199. ;
  2200. ;++++++++++++++++++++++++++++++++++++
  2201. ;++++++++++++++++++++++++++++++++++++
  2202.  
  2203. ;++++++++++++++++++++++++++++++++++++
  2204. ;
  2205. ; successful:
  2206. ; this part actually copies the files if the DoCopy variable is on
  2207. ;
  2208. ;++++++++++++++++++++++++++++++++++++
  2209. successful = +
  2210.     set Status = STATUS_SUCCESSFUL
  2211.     goto end
  2212.  
  2213. ;++++++++++++++++++++++++++++++++++++
  2214. ;
  2215. ; warning_msg:
  2216. ; a warning display
  2217. ;
  2218. ;++++++++++++++++++++++++++++++++++++
  2219. warning_msg = +
  2220.  
  2221.     ; TODO: This is how the template does warnings.  Do we have a better way?
  2222.     ;       Do we want to do it differently?
  2223.     ;       CODENAME: WARNINGS
  2224.     
  2225.     Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  2226.     ifint $($ShellCode) != 0
  2227.         goto ShellCodeError
  2228.     endif
  2229.     
  2230.     set DLGEVENT = $($R1)
  2231.  
  2232.     ifstr(i) $(DLGEVENT) == "OK"
  2233.            goto $(to)
  2234.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  2235.            goto $(from)
  2236.     else
  2237.         set Status = STATUS_FAILED
  2238.            goto end
  2239.     endif
  2240.  
  2241. ;++++++++++++++++++++++++++++++++++++
  2242. ;
  2243. ; nonfatal_msg:
  2244. ; a non-fatal display
  2245. ;
  2246. ;++++++++++++++++++++++++++++++++++++
  2247. nonfatal_msg = +
  2248.  
  2249.     ; TODO: See CODENAME: WARNINGS
  2250.  
  2251.     Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
  2252.     ifint $($ShellCode) != 0
  2253.         goto ShellCodeError
  2254.     endif
  2255.  
  2256.     set DLGEVENT = $($R1)
  2257.  
  2258.     ifstr(i) $(DLGEVENT) == "OK"
  2259.         goto $(from)
  2260.     else
  2261.         goto "end"
  2262.     endif
  2263.  
  2264. ;++++++++++++++++++++++++++++++++++++
  2265. ;
  2266. ; fatal_registry:
  2267. ; something failed in the registry access
  2268. ;
  2269. ;++++++++++++++++++++++++++++++++++++
  2270. fatal_registry = +
  2271.  
  2272.     set Error = +
  2273.         "Fatal Registry Error:"$(!LF)+
  2274.         $(ErrMesg)$(!LF)+
  2275.         "File: "$(ThisInf)$(!LF)+
  2276.         "Procedure: "$(ErrProc)$(!LF)+
  2277.         "Function: "$(ErrFunc)
  2278.  
  2279.     goto fatal_msg
  2280.  
  2281. ;++++++++++++++++++++++++++++++++++++
  2282. ;
  2283. ; fatal_msg:
  2284. ; a fatal error display
  2285. ;
  2286. ;++++++++++++++++++++++++++++++++++++
  2287. fatal_msg =    +
  2288.  
  2289.     ; TODO: See CODENAME: WARNINGS
  2290.  
  2291.     Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  2292.     ifint $($ShellCode) != 0
  2293.         goto ShellCodeError
  2294.     endif
  2295.  
  2296.     goto set_status_failed
  2297.  
  2298. ;++++++++++++++++++++++++++++++++++++
  2299. ;
  2300. ; ShellCodeError:
  2301. ; a shell error to be displayed
  2302. ;++++++++++++++++++++++++++++++++++++
  2303. ShellCodeError = +
  2304.  
  2305.     ; TODO: See CODENAME: WARNINGS
  2306.  
  2307.     set DlgType      = "MessageBox"
  2308.     set STF_MB_TITLE = "Error: "$(SetupTitle)
  2309.     set STF_MB_TEXT  = "Shell Code Error"
  2310.     set STF_MB_TYPE  = 1
  2311.     set STF_MB_ICON  = 3
  2312.     set STF_MB_DEF   = 1
  2313.     ui start "Error Message"
  2314.     goto set_status_failed
  2315.  
  2316. ;++++++++++++++++++++++++++++++++++++
  2317. ;
  2318. ; set_status_failed:
  2319. ; last step before exiting
  2320. ;
  2321. ;++++++++++++++++++++++++++++++++++++
  2322. set_status_failed = +
  2323.  
  2324.     set Status = STATUS_FAILED
  2325.     goto end
  2326.  
  2327. ;++++++++++++++++++++++++++++++++++++
  2328. ;
  2329. ; end:
  2330. ; this exit point sets the CommonStatus to the current status 
  2331. ; then returns the status and return data
  2332. ;
  2333. ;++++++++++++++++++++++++++++++++++++
  2334. end = +
  2335.     ifstr(i) $(!IHVDLGHANDLE) != ""
  2336.         FreeLibrary $(!IHVDLGHANDLE)
  2337.         set !IHVDLGHANDLE = ""
  2338.     endif
  2339.     set CommonStatus = $(Status)
  2340.     Return $(CommonStatus) $(RetData) $(Changes)
  2341.  
  2342. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2343. ;
  2344. ; INSTALLATION AND FILE SECTION
  2345. ; -----------------------------
  2346. ; This section is responsible for installing the component and listing all
  2347. ; the necessary files etc.
  2348. ;
  2349. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2350.  
  2351. ;========================================================================
  2352. ;
  2353. ; INSTALL
  2354. ; -------
  2355. ; The IHV should follow the following template for this section.  It is
  2356. ; responsible for file copying and registry initialization.
  2357. ;
  2358. ;========================================================================
  2359.  
  2360. [InstallRemove]
  2361.  
  2362.     set SNADirList  = { "hwsetup", "system" }
  2363.     set SNAToList   = { "system\hwsetup", "system" }
  2364.  
  2365.     ifstr(i) $(!NTN_InstallMode) == "install"
  2366.         ifstr(i) $(!AddCopy) == "YES"
  2367.             ForListDo $(SNADirList)
  2368.                 ifstr(i) $($) != "hwsetup"
  2369.                     set Ext = $(ThisFile)
  2370.                 else
  2371.                     set Ext = ""
  2372.                 endif
  2373.                 set To = *( $(SNAToList), $(#) )
  2374.                 AddSectionFilesToCopyList "FilesFor_"$($)"_"$(Option) +
  2375.                                           $(!DriverDir)$(Ext), +
  2376.                                           $(!SNARootDir)"\"$(To)
  2377.             EndForListDo
  2378.             CreateDir $(!SNARootDir)"\system\hwsetup\ecx25"
  2379.             AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
  2380.                                       $(!DriverDir)$(Ext), +
  2381.                                       $(!SNARootDir)"\system\hwsetup\ecx25"
  2382.         else
  2383.             AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
  2384.                                       $(!DriverDir)"ecx25\"$(Ext), +
  2385.                                       $(!SNARootDir)"\system"
  2386.             CopyFilesInCopyList
  2387.         endif
  2388.     
  2389.         ifstr(i) $(!DoCopy) == "YES"
  2390.             CopyFilesInCopyList
  2391.         endif
  2392.     else
  2393.         set !_FileRemoveList = {}
  2394.         ForListDo $(SNADirList)
  2395.             set SNADir   = *( $(SNAToList), $(#) )
  2396.             set FullPath = $(!SNARootDir)"\"$(SNADir)
  2397.             set FileList = ^( "FilesFor_"$($)"_"$(Option), 2 )
  2398.             ForListDo $(FileList)
  2399.                 set !_FileRemoveList = >( $(!_FileRemoveList), +
  2400.                                            $(FullPath)"\"$($) ) 
  2401.             EndForListDo
  2402.         EndForListDo
  2403.     endif
  2404.         
  2405.     exit
  2406.  
  2407. ;========================================================================
  2408. ;
  2409. ; FILES
  2410. ; -----
  2411. ; These should list the files to be installed for each particular option.
  2412. ;
  2413. ; FORMAT:
  2414. ; The format is "FilesFor_" concatenated with the directory where they will
  2415. ;   end up, another underscore, and the option whose files these are.
  2416. ;   Currently, directories that can take files are:
  2417. ;     ihvinf - the inf file, its help and libraries
  2418. ;     ntbin  - executables
  2419. ;     ntsys  - system files
  2420. ; The format includes an enumeration constant and a name for each file, as well
  2421. ; as a number of possible flags
  2422. ;    1,        file1.spu
  2423. ;    1,        file2.spu
  2424. ;    ...
  2425. ;
  2426. ;========================================================================
  2427.  
  2428. [FilesFor_hwsetup_ECX25]
  2429. 1, ecx25.inf
  2430. 1, ecx25.hlp
  2431. 1, ecx25.srl
  2432.  
  2433. [FilesFor_system_ECX25]
  2434. 1, ecx25.dll
  2435.  
  2436.