home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 Extra / Chip_Extra_1999.iso / chip / gratis / seagate / drivers / I386 / oemsetup.inf < prev    next >
INI File  |  1998-10-21  |  23KB  |  600 lines

  1. ;-----------------------------------------------------------------------
  2. ; OPTION TYPE
  3. ; -----------
  4. ; This identifies the Option type we are dealing with.  The different
  5. ; possible types are:
  6. ;
  7. ; COMPUTER, VIDEO, POINTER, KEYBOARD, LAYOUT, SCSI, TAPE, PRINTER, ...
  8. ;-----------------------------------------------------------------------
  9.  
  10. [Identification]
  11.     OptionType = TAPE
  12.  
  13. ;-----------------------------------------------------------------------
  14. ; LANGUAGES SUPPORTED
  15. ; -------------------
  16. ;
  17. ; The languages supported by the INF, For every language supported
  18. ; we need to have a separate text section for every displayable text
  19. ; section.
  20. ;
  21. ;-----------------------------------------------------------------------
  22.  
  23. [LanguagesSupported]
  24.     ENG
  25.  
  26. ;-----------------------------------------------------------------------
  27. ; OPTION LIST
  28. ; -----------
  29. ; This section lists the Option key names.  These keys are locale
  30. ; independent and used to represent the option in a locale independent
  31. ; manner.
  32. ;
  33. ;-----------------------------------------------------------------------
  34.  
  35. [Options]
  36.     4MMDAT---SEAGATE = 4mmdat--SESFT
  37.     ARCHQIC--SEAGATE = archqic-SESFT
  38.     DLTTAPE--SEAGATE = dlttape-SESFT
  39.     EXABMQIC-SEAGATE = exabmqicSESFT
  40.     EXABYTE1-SEAGATE = exabyte1SESFT
  41.     EXABYTE2-SEAGATE = exabyte2SESFT
  42.     SONYSDX--SEAGATE = sonysdx-SESFT
  43.     TANDMQIC-SEAGATE = tandmqicSESFT
  44.     TANDQIC--SEAGATE = tandqic-SESFT
  45.     TRATAPI--SEAGATE = tratapi-SESFT
  46.     TRSCSI---SEAGATE = trscsi--SESFT
  47.     WANGQIC--SEAGATE = wangqic-SESFT
  48.     WANGQIC2-SEAGATE = wangqic2SESFT
  49.     SCSIOPTICAL  = SCSIOptical
  50.     SCSIOPTICALF = SCSIOpticalF
  51.  
  52. ;-----------------------------------------------------------------------
  53. ; OPTION TEXT SECTION
  54. ; -------------------
  55. ; These are text strings used to identify the option to the user.  There
  56. ; are separate sections for each language supported.  The format of the
  57. ; section name is "OptionsText" concatenated with the Language represented
  58. ; by the section.
  59. ;
  60. ;-----------------------------------------------------------------------
  61.  
  62. [OptionsTextENG]
  63.     4MMDAT---SEAGATE = "Seagate 4mmdat   (4mm DAT drives, all except Sony)"
  64.     ARCHQIC--SEAGATE = "Seagate archqic  (Conner/Archive QIC SCSI drives, all)"
  65.     DLTTAPE--SEAGATE = "Seagate dlttape  (Quantum/DEC/Cipher DLT SCSI drives, all)"
  66.     EXABMQIC-SEAGATE = "Seagate exabmqic (Exabyte mini data cartridge SCSI drives)"
  67.     EXABYTE1-SEAGATE = "Seagate exabyte1 (Exabyte 8xxx SCSI-1 drives, all)"
  68.     EXABYTE2-SEAGATE = "Seagate exabyte2 (Exabyte 8xxx SCSI-2 drives, all)"
  69.     SONYSDX--SEAGATE = "Seagate sonysdx  (Sony 4mm DAT and 8mm drives)"
  70.     TANDMQIC-SEAGATE = "Seagate tandmqic (Tandberg Data mini data cartridge SCSI drives)"
  71.     TANDQIC--SEAGATE = "Seagate tandqic  (Tandberg Data QIC SCSI drives, all)"
  72.     TRATAPI--SEAGATE = "Seagate tratapi  (Mini data cartridge ATAPI drives)"
  73.     TRSCSI---SEAGATE = "Seagate trscsi   (Mini data cartridge SCSI drives)"
  74.     WANGQIC--SEAGATE = "Seagate wangqic  (WANGTEK QIC SCSI-1 drives, all)"
  75.     WANGQIC2-SEAGATE = "Seagate wangqic2 (WANGTEK 9500 QIC SCSI-2 drive)"
  76.     SCSIOPTICAL  =     "Seagate optical  (tape emulation) driver"
  77.     SCSIOPTICALF =     "Seagate optical  (tape emulation w/FAT) driver"
  78.  
  79. ;-----------------------------------------------------------------------------------------
  80. ; TAPE CLASS DRIVERS:
  81. ;
  82. ; Order of the information:
  83. ;
  84. ; Class driver = Type, Group, ErrorControl, Dependencies, EventMessageFile, TypesSupported, Start
  85. ;
  86. ; NOTE: \ in the dependency list means that the dependency is on a group.
  87. ;-----------------------------------------------------------------------------------------
  88.  
  89. [ClassDrivers]
  90.     4mmdat--SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\4mmdat.sys"  , 7, !SERVICE_SYSTEM_START
  91.     archqic-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\archqic.sys" , 7, !SERVICE_SYSTEM_START
  92.     dlttape-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\dlttape.sys" , 7, !SERVICE_SYSTEM_START
  93.     exabmqicSESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\exabmqic.sys", 7, !SERVICE_SYSTEM_START
  94.     exabyte1SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\exabyte1.sys", 7, !SERVICE_SYSTEM_START
  95.     exabyte2SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\exabyte2.sys", 7, !SERVICE_SYSTEM_START
  96.     sonysdx-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\sonysdx.sys" , 7, !SERVICE_SYSTEM_START
  97.     tandmqicSESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\tandmqic.sys", 7, !SERVICE_SYSTEM_START
  98.     tandqic-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\tandqic.sys" , 7, !SERVICE_SYSTEM_START
  99.     tratapi-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\tratapi.sys" , 7, !SERVICE_SYSTEM_START
  100.     trscsi--SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\trscsi.sys", 7, !SERVICE_SYSTEM_START
  101.     wangqic-SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\wangqic.sys" , 7, !SERVICE_SYSTEM_START
  102.     wangqic2SESFT = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\wangqic2.sys", 7, !SERVICE_SYSTEM_START
  103.     SCSIOptical = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\scsiopt.sys"   , 7, !SERVICE_SYSTEM_START
  104.     SCSIOpticalF = !SERVICE_KERNEL_DRIVER, "SCSI Class" , !SERVICE_ERROR_NORMAL, "\SCSI Miniport", "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\scsioptf.sys"  , 7, !SERVICE_SYSTEM_START
  105.  
  106. ;---------------------------------------------------------------------------
  107. ; 1. Identify
  108. ;
  109. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  110. ;                as we are choosing currently.
  111. ;
  112. ; INPUT:         None
  113. ;
  114. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  115. ;                $($R1): Option Type (COMPUTER ...)
  116. ;                $($R2): Diskette description
  117. ;---------------------------------------------------------------------------
  118.  
  119. [Identify]
  120.     ;
  121.     ;
  122.     read-syms Identification
  123.  
  124.     set Status     = STATUS_SUCCESSFUL
  125.     set Identifier = $(OptionType)
  126.     set Media      = #("Source Media Descriptions", 1, 1)
  127.  
  128.     Return $(Status) $(Identifier) $(Media)
  129.  
  130.  
  131.  
  132. ;------------------------------------------------------------------------
  133. ; 2. ReturnOptions:
  134. ;
  135. ; DESCRIPTION:   To return the option list supported by this INF and the
  136. ;                localised text list representing the options.
  137. ;
  138. ;
  139. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  140. ;
  141. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  142. ;                                STATUS_NOLANGUAGE
  143. ;                                STATUS_FAILED
  144. ;
  145. ;                $($R1): Option List
  146. ;                $($R2): Option Text List
  147. ;------------------------------------------------------------------------
  148.  
  149. [ReturnOptions]
  150.     ;
  151.     ;
  152.     set Status        = STATUS_FAILED
  153.     set OptionList     = {}
  154.     set OptionTextList = {}
  155.  
  156.     ;
  157.     ; Check if the language requested is supported
  158.     ;
  159.     set LanguageList = ^(LanguagesSupported, 1)
  160.     Ifcontains(i) $($0) in $(LanguageList)
  161.         goto returnoptions
  162.     else
  163.         set Status = STATUS_NOLANGUAGE
  164.         goto finish_ReturnOptions
  165.     endif
  166.  
  167.     ;
  168.     ; form a list of all the options and another of the text representing
  169.     ;
  170.  
  171. returnoptions = +
  172.     set OptionList     = ^(Options, 0)
  173.     set OptionTextList = ^(OptionsText$($0), 1)
  174.     set Status         = STATUS_SUCCESSFUL
  175.  
  176. finish_ReturnOptions = +
  177.     Return $(Status) $(OptionList) $(OptionTextList)
  178.  
  179.  
  180. ;------------------------------------------------------------------------
  181. ; 3. InstallOption:
  182. ;
  183. ; FUNCTION:  To copy files representing Options
  184. ;            To configure the installed option
  185. ;            To update the registry for the installed option
  186. ;
  187. ; INPUT:     $($0):  Language to use
  188. ;            $($1):  OptionID to install
  189. ;            $($2):  SourceDirectory
  190. ;            $($3):  AddCopy  (YES | NO)
  191. ;            $($4):  DoCopy   (YES | NO)
  192. ;            $($5):  DoConfig (YES | NO)
  193. ;
  194. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  195. ;                            STATUS_NOLANGUAGE |
  196. ;                            STATUS_USERCANCEL |
  197. ;                            STATUS_FAILED
  198. ;------------------------------------------------------------------------
  199.  
  200. [InstallOption]
  201.  
  202.     ;
  203.     ; Set default values for
  204.     ;
  205.     set Status   = STATUS_FAILED
  206.     set DrivesToFree = {}
  207.  
  208.     ;
  209.     ; Check if NONE or UNKNOWN
  210.     ;
  211.     ifstr(i) $($1) == NONE
  212.         set Status = STATUS_SUCCESSFUL
  213.         goto finish_InstallOption
  214.     else-ifstr(i) $($1) == UNKNOWN
  215.         set Status = STATUS_SUCCESSFUL
  216.         goto finish_InstallOption
  217.     endif
  218.  
  219.     ;
  220.     ; extract parameters
  221.     ;
  222.     set Option   = $($1)
  223.     set SrcDir   = $($2)
  224.     set AddCopy  = $($3)
  225.     set DoCopy   = $($4)
  226.     set DoConfig = $($5)
  227.  
  228.     ;
  229.     ; Check if the language requested is supported
  230.     ;
  231.     set LanguageList = ^(LanguagesSupported, 1)
  232.     Ifcontains(i) $($0) in $(LanguageList)
  233.     else
  234.         set Status = STATUS_NOLANGUAGE
  235.         goto finish_InstallOption
  236.     endif
  237.     read-syms Strings$($0)
  238.  
  239.     ;
  240.     ; check to see if Option is supported.
  241.     ;
  242.  
  243.     set OptionList = ^(Options, 0)
  244.     ifcontains $(Option) in $(OptionList)
  245.     else
  246.         goto finish_InstallOption
  247.     endif
  248.     set OptionList = ""
  249.  
  250.     ;
  251.     ; Option has been defined already
  252.     ;
  253.  
  254.     set ClassDriver      =   #(Options,      $(Option),      1)
  255.     set Type             = $(#(ClassDrivers, $(ClassDriver), 1))
  256.     set Group            =   #(ClassDrivers, $(ClassDriver), 2)
  257.     set ErrorControl     = $(#(ClassDrivers, $(ClassDriver), 3))
  258.     set Dependencies     =   #(ClassDrivers, $(ClassDriver), 4)
  259.     set EventMessageFile =   #(ClassDrivers, $(ClassDriver), 5)
  260.     set TypesSupported   =   #(ClassDrivers, $(ClassDriver), 6)
  261.     set Start            = $(#(ClassDrivers, $(ClassDriver), 7))
  262.  
  263. installtheoption = +
  264.  
  265.     ;
  266.     ; Code to add files to copy list
  267.     ;
  268.  
  269.     ifstr(i) $(AddCopy) == "YES"
  270.         set DoActualCopy = NO
  271.         set FileToCheck = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  272.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
  273.         ifstr(i) $(STATUS) == NO
  274.             set DoActualCopy = YES
  275.         endif
  276.  
  277.         ifstr(i) $(DoActualCopy) == NO
  278.             shell "subroutn.inf" DriversExist $($0) $(String1)
  279.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  280.                 Debug-Output "TAPE.INF: shelling DriversExist failed"
  281.                 goto finish_InstallOption
  282.             endif
  283.  
  284.             ifstr(i) $($R0) == STATUS_CURRENT
  285.             else-ifstr(i) $($R0) == STATUS_NEW
  286.                 set DoActualCopy = YES
  287.             else-ifstr(i) $($R0) == STATUS_USERCANCEL
  288.                 Debug-Output "TAPE.INF: User cancelled Tape installation"
  289.                 goto finish_InstallOption
  290.             else
  291.                 Debug-Output "TAPE.INF: Error reported in DriversExist routine in SUBROUTN.INF"
  292.                 goto finish_InstallOption
  293.             endif
  294.         endif
  295.  
  296.         ifstr(i) $(DoActualCopy) == YES
  297.  
  298.             shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
  299.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  300.                 Debug-Output "TAPE.INF: shelling DoAskSource failed"
  301.                 goto finish_InstallOption
  302.             endif
  303.  
  304.             ifstr(i) $($R0) == STATUS_SUCCESSFUL
  305.                 set SrcDir = $($R1)
  306.                 ifstr(i) $($R2) != ""
  307.                     set DrivesToFree = >($(DrivesToFree), $($R2))
  308.                 endif
  309.             else
  310.                 Debug-Output "TAPE.INF: User cancelled asking source."
  311.                 goto finish_InstallOption
  312.             endif
  313.  
  314.             install Install-AddCopyOption
  315.             ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
  316.                 Debug-Output "Adding mouse files to copy list failed"
  317.                 goto finish_InstallOption
  318.             endif
  319.         else
  320.             set DoCopy = NO
  321.         endif
  322.  
  323.     endif
  324.  
  325.     ifstr(i) $(DoCopy) == "YES"
  326.         read-syms ProgressCopy$($0)
  327.         install Install-DoCopyOption
  328.         ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  329.             Debug-Output "Copying files failed"
  330.             goto finish_InstallOption
  331.         else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  332.             set Status = STATUS_USERCANCEL
  333.             goto finish_InstallOption
  334.         endif
  335.     endif
  336.  
  337.     ifstr(i) $(DoConfig) == "YES"
  338.         ;
  339.         ; first run a privilege check on modifying the setup node
  340.         ;
  341.  
  342.         shell "registry.inf" CheckSetupModify
  343.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  344.             goto finish_InstallOption
  345.         endif
  346.  
  347.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  348.             goto finish_InstallOption
  349.         endif
  350.  
  351.         ;
  352.         ; then make a new tape entry, the entry is created automatically
  353.         ; enabled
  354.         ;
  355.  
  356.         set ServiceNode      = $(ClassDriver)
  357.         set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-TapeClassDrivers, $(ClassDriver), 2)
  358.  
  359.         set ServicesValues   = { +
  360.                 {Type,           0, $(!REG_VT_DWORD),     $(Type)                  }, +
  361.                 {Start,          0, $(!REG_VT_DWORD),     $(Start)                 }, +
  362.                 {Group,          0, $(!REG_VT_SZ),        $(Group)                 }, +
  363.                 {ErrorControl,   0, $(!REG_VT_DWORD),     $(ErrorControl)          }, +
  364.                 {Dependencies,   0, $(!REG_VT_MULTI_SZ),  {$(Dependencies)}        }, +
  365.                 {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary)         }  +
  366.                 }
  367.         set ParametersValues = ""
  368.         set DeviceValues     = {}
  369.         set EventLogValues   = { +
  370.                 {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
  371.                 {TypesSupported,   0, $(!REG_VT_DWORD),     $(TypesSupported)   }  +
  372.                 }
  373.  
  374.  
  375.         shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
  376.                                                 $(ServicesValues)   +
  377.                                                 $(ParametersValues) +
  378.                                                 $(DeviceValues)     +
  379.                                                 $(EventLogValues)   +
  380.                                                 Parameters
  381.  
  382.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  383.             Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
  384.             goto finish_InstallOption
  385.         endif
  386.  
  387.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  388.             Debug-Output "MakeServicesEntry failed for tape"
  389.             goto finish_InstallOption
  390.         endif
  391.  
  392.     endif
  393.  
  394.     set Status = STATUS_SUCCESSFUL
  395. finish_InstallOption = +
  396.     ForListDo $(DrivesToFree)
  397.         LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
  398.     EndForListDo
  399.  
  400.     Return $(Status)
  401.  
  402.  
  403. [Install-AddCopyOption]
  404.  
  405.     ;
  406.     ; Add the files to the copy list
  407.     ;
  408.     AddSectionKeyFileToCopyList   Files-TapeClassDrivers         +
  409.                                   $(ClassDriver)                 +
  410.                                   $(SrcDir)                      +
  411.                                   $(!STF_WINDOWSSYSPATH)\drivers
  412.  
  413.     exit
  414.  
  415.  
  416. [Install-DoCopyOption]
  417.  
  418.     ;
  419.     ; Copy files in the copy list
  420.     ;
  421.     CopyFilesInCopyList
  422.     exit
  423.  
  424.  
  425. ;-------------------------------------------------------------------------
  426. ; 4. DeInstallOption:
  427. ;
  428. ; FUNCTION:  To remove files representing Option
  429. ;            To remove the registry entry corresponding to the Option
  430. ;
  431. ; INPUT:     $($0):  Language to use
  432. ;            $($1):  OptionID to install
  433. ;
  434. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  435. ;                            STATUS_NOLANGUAGE |
  436. ;                            STATUS_USERCANCEL |
  437. ;                            STATUS_FAILED
  438. ;-------------------------------------------------------------------------
  439. [DeInstallOption]
  440.     ;
  441.     ; Set default values for
  442.     ;
  443.     set Status   = STATUS_FAILED
  444.  
  445.     ;
  446.     ; extract parameters
  447.     ;
  448.     set Option   = $($1)
  449.  
  450.     ;
  451.     ; Check if the language requested is supported
  452.     ;
  453.     set LanguageList = ^(LanguagesSupported, 1)
  454.     Ifcontains(i) $($0) in $(LanguageList)
  455.     else
  456.         set Status = STATUS_NOLANGUAGE
  457.         goto finish_DeInstallOption
  458.     endif
  459.     read-syms Strings$($0)
  460.  
  461.     ;
  462.     ; check to see if Option is supported.
  463.     ;
  464.  
  465.     set OptionList = ^(Options, 0)
  466.     ifcontains $(Option) in $(OptionList)
  467.     else
  468.         goto finish_DeInstallOption
  469.     endif
  470.     set OptionList = ""
  471.  
  472.     ;
  473.     ; fetch details about option
  474.     ;
  475.  
  476.     set ClassDriver = #(Options, $(Option), 1)
  477.     set ClassFile   = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  478.     set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(ClassFile)
  479.  
  480.     ;
  481.     ; disable the registry entry
  482.     ;
  483.  
  484.     shell "registry.inf" RemoveServicesEntry $(ClassDriver)
  485.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  486.         Debug-Output "TAPE.INF: Failed to shell RemoveServicesEntry"
  487.         goto finish_DeInstallOption
  488.     endif
  489.  
  490.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  491.         Debug-Output "TAPE.INF: Failed to disable services entry"
  492.         goto finish_DeInstallOption
  493.     endif
  494.  
  495.     ;
  496.     ; we won't remove the file because we can only do so during the next boot.
  497.     ; if the user chooses to reinstall the same driver during this boot
  498.     ; he will still end up deleting the driver on next boot. if the file
  499.     ; should be deleted a warning should be put up saying that the user should
  500.     ; not try to reinstall the driver during this boot
  501.     ;
  502.     ;    AddFileToDeleteList $(FilePath)
  503.  
  504.  
  505.     set Status = STATUS_SUCCESSFUL
  506.  
  507. finish_DeInstallOption =+
  508.     return $(Status)
  509.  
  510.  
  511. ;-------------------------------------------------------------------------
  512. ; 5. GetInstalledOptions:
  513. ;
  514. ; FUNCTION:  To find out the list of options which are installed
  515. ;
  516. ; INPUT:     $($0): Language to Use
  517. ;
  518. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  519. ;                            STATUS_FAILED
  520. ;
  521. ;            $($R1): List of options installed
  522. ;            $($R2): Option installed Text List
  523. ;-------------------------------------------------------------------------
  524. [GetInstalledOptions]
  525.     set Status = STATUS_FAILED
  526.     set InstalledOptions = {}
  527.     set InstalledOptionsText = {}
  528.  
  529.     ;
  530.     ; Check if the language requested is supported
  531.     ;
  532.     set LanguageList = ^(LanguagesSupported, 1)
  533.     Ifcontains(i) $($0) in $(LanguageList)
  534.     else
  535.         set Status = STATUS_NOLANGUAGE
  536.         goto finish_GetInstalledOptions
  537.     endif
  538.  
  539.     set OptionList = ^(Options, 0)
  540.     ForListDo $(OptionList)
  541.         set ClassDriver = #(Options, $($), 1)
  542.         set ClassFile   = #(Files-TapeClassDrivers, $(ClassDriver), 2)
  543.         set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(ClassFile)
  544.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  545.         ifstr(i) $(STATUS) == "YES"
  546.             shell "registry.inf" GetServicesEntryStart $(ClassDriver)
  547.             ifint $($ShellCode) == $(!SHELL_CODE_OK)
  548.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  549.                     ifstr(i) $($R1) != $(!SERVICE_DISABLED)
  550.                         set OptionText = #(OptionsText$($0), $($), 1)
  551.                         set InstalledOptions     = >($(InstalledOptions), $($))
  552.                         set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText))
  553.                     endif
  554.                 endif
  555.             endif
  556.         endif
  557.     EndForListDo
  558.     set Status = STATUS_SUCCESSFUL
  559. finish_GetInstalledOptions =+
  560.     Return $(Status) $(InstalledOptions) $(InstalledOptionsText)
  561.  
  562. ;**************************************************************************
  563. ; PROGRESS GUAGE VARIABLES
  564. ;**************************************************************************
  565.  
  566. [ProgressCopyENG]
  567.     ProCaption   = "Windows NT Setup"
  568.     ProCancel    = "Cancel"
  569.     ProCancelMsg = "Windows NT is not correcly installed.  Are you sure you want "+
  570.                    "to cancel copying files?"
  571.     ProCancelCap = "Setup Message"
  572.     ProText1     = "Copying:"
  573.     ProText2     = "To:"
  574.  
  575. [StringsENG]
  576.     String1 = "Tape Device"
  577.     String2 = "Please enter the full path to the OEM Tape Device "+
  578.               "files.  Then choose Continue."
  579.  
  580. [Source Media Descriptions]
  581.     1  = "OEM DISK (TAPE)"  , TAGFILE = disk1
  582.  
  583. [Files-TapeClassDrivers]
  584. 4mmdat--SESFT = 1, 4mmdat.sys, SIZE=999
  585. archqic-SESFT = 1, archqic.sys, SIZE=999
  586. dlttape-SESFT = 1, dlttape.sys, SIZE=999
  587. exabmqicSESFT = 1, exabmqic.sys, SIZE=999
  588. exabyte1SESFT = 1, exabyte1.sys, SIZE=999
  589. exabyte2SESFT = 1, exabyte2.sys, SIZE=999
  590. sonysdx-SESFT = 1, sonysdx.sys, SIZE=999
  591. tandmqicSESFT = 1, tandmqic.sys, SIZE=999
  592. tandqic-SESFT = 1, tandqic.sys, SIZE=999
  593. tratapi-SESFT = 1, tratapi.sys, SIZE=999
  594. trscsi--SESFT = 1, trscsi.sys, SIZE=999
  595. wangqic-SESFT = 1, wangqic.sys, SIZE=999
  596. wangqic2SESFT = 1, wangqic2.sys, SIZE=999
  597. SCSIOptical = 1, scsiopt.sys, SIZE=999
  598. SCSIOpticalF = 1, scsioptf.sys, SIZE=999
  599.  
  600.