home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 November / VPR9611B.ISO / driver / iodata / rsa_140 / rsa_140.upd / NT / RSA98 / OEMSETUP.INF next >
INI File  |  1996-02-27  |  66KB  |  1,664 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 = POINTER
  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. ;-----------------------------------------------------------------------
  28. ; OPTION LIST
  29. ; -----------
  30. ; This section lists the Option key names.  These keys are locale
  31. ; independent and used to represent the option in a locale independent
  32. ; manner.
  33. ;
  34. ;-----------------------------------------------------------------------
  35.  
  36. [Options]
  37.     "SerRSA98"    = SerRSA98
  38.  
  39. ;-----------------------------------------------------------------------
  40. ; OPTION TEXT SECTION
  41. ; -------------------
  42. ; These are text strings used to identify the option to the user.  There
  43. ; are separate sections for each language supported.  The format of the
  44. ; section name is "OptionsText" concatenated with the Language represented
  45. ; by the section.
  46. ;
  47. ;-----------------------------------------------------------------------
  48.  
  49. [OptionsTextENG]
  50. ;;    "SerRSA98"    = "PC-9800 シリアルポート(2チャンネル)"
  51.       "SerRSA98"    = "アイ・オー・データ 高速シリアルボード RSA-98シリーズ"
  52.  
  53. [FileConstants]
  54.     !MAXIMUM_ALLOWED   = 33554432
  55.  
  56. ;-----------------------------------------------------------------------------------------
  57. ; RS-232C CARD DRIVERS:
  58. ;
  59. ; Order of the information:
  60. ;
  61. ; Class driver = Type, Group, ErrorControl, Tag, EventMessageFile, TypesSupported
  62. ;
  63. ;-----------------------------------------------------------------------------------------
  64.  
  65. [RsDrivers]
  66. ;;    SerRSA98  = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 5, 568
  67. ; fujino 960226
  68. ;      SerRSA98 = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 3, 20704,20704,6
  69.       SerRSA98 = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 3, 20704,20704,6,3,20705
  70.  
  71. ;     IRQ=3, IOBase=01B0h(432)
  72.  
  73. ;---------------------------------------------------------------------------
  74. ; 1. Identify
  75. ;
  76. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  77. ;                as we are choosing currently.
  78. ;
  79. ; INPUT:         None
  80. ;
  81. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  82. ;                $($R1): Option Type (COMPUTER ...)
  83. ;                $($R2): Diskette description
  84. ;---------------------------------------------------------------------------
  85.  
  86. [Identify]
  87.     ;
  88.     ;
  89.     read-syms Identification
  90.  
  91.     set Status     = STATUS_SUCCESSFUL
  92.     set Identifier = $(OptionType)
  93.     set Media      = #("Source Media Descriptions", 1, 1)
  94.  
  95.     Return $(Status) $(Identifier) $(Media)
  96.  
  97.  
  98.  
  99. ;------------------------------------------------------------------------
  100. ; 2. ReturnOptions:
  101. ;
  102. ; DESCRIPTION:   To return the option list supported by this INF and the
  103. ;                localised text list representing the options.
  104. ;
  105. ;
  106. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  107. ;
  108. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  109. ;                                STATUS_NOLANGUAGE
  110. ;                                STATUS_FAILED
  111. ;
  112. ;                $($R1): Option List
  113. ;                $($R2): Option Text List
  114. ;------------------------------------------------------------------------
  115.  
  116. [ReturnOptions]
  117.     ;
  118.     ;
  119.     set Status        = STATUS_FAILED
  120.     set OptionList     = {}
  121.     set OptionTextList = {}
  122.  
  123.     ;
  124.     ; Check if the language requested is supported
  125.     ;
  126.     set LanguageList = ^(LanguagesSupported, 1)
  127.     Ifcontains(i) $($0) in $(LanguageList)
  128.         goto returnoptions
  129.     else
  130.         set Status = STATUS_NOLANGUAGE
  131.         goto finish_ReturnOptions
  132.     endif
  133.  
  134.     ;
  135.     ; form a list of all the options and another of the text representing
  136.     ;
  137.  
  138. returnoptions = +
  139.     set OptionList     = ^(Options, 0)
  140.     set OptionTextList = ^(OptionsText$($0), 1)
  141.     set Status         = STATUS_SUCCESSFUL
  142.  
  143. finish_ReturnOptions = +
  144.     Return $(Status) $(OptionList) $(OptionTextList)
  145.  
  146.  
  147. ;
  148. ; 3. InstallOption:
  149. ;
  150. ; FUNCTION:  To copy files representing Options
  151. ;            To configure the installed option
  152. ;            To update the registry for the installed option
  153. ;
  154. ; INPUT:     $($0):  Language to use
  155. ;            $($1):  OptionID to install
  156. ;            $($2):  SourceDirectory
  157. ;            $($3):  AddCopy  (YES | NO)
  158. ;            $($4):  DoCopy   (YES | NO)
  159. ;            $($5):  DoConfig (YES | NO)
  160. ;
  161. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  162. ;                            STATUS_NOLANGUAGE |
  163. ;                            STATUS_USERCANCEL |
  164. ;                            STATUS_FAILED
  165. ;
  166.  
  167. [InstallOption]
  168.  
  169.     ;
  170.     ; Set default values for
  171.     ;
  172.     set Status = STATUS_FAILED
  173.     set DrivesToFree = {}
  174.     read-syms FileConstants
  175.  
  176.     ;
  177.     ; extract parameters
  178.     ;
  179.     set Option   = $($1)
  180.     set SrcDir   = $($2)
  181.     set AddCopy  = $($3)
  182.     set DoCopy   = $($4)
  183.     set DoConfig = $($5)
  184.  
  185.     ;
  186.     ; Check if the language requested is supported
  187.     ;
  188.     set LanguageList = ^(LanguagesSupported, 1)
  189.     Ifcontains(i) $($0) in $(LanguageList)
  190.     else
  191.         set Status = STATUS_NOLANGUAGE
  192.         goto finish_InstallOption
  193.     endif
  194.     read-syms Strings$($0)
  195.  
  196.     ;
  197.     ; check to see if Option is supported.
  198.     ;
  199.  
  200.     set OptionList = ^(Options, 0)
  201.     ifcontains $(Option) in $(OptionList)
  202.     else
  203. ;       Debug-Output "SCSI.INF: SCSI option is not supported."
  204.         goto finish_InstallOption
  205.     endif
  206.     set OptionList = ""
  207.  
  208.     ;
  209.     ; Option has been defined already
  210.     ;
  211.  
  212.     set RsDriver         =   #(Options,   $(Option),   1)
  213.     set Type             = $(#(RsDrivers, $(RsDriver), 1))
  214.     set Group            =   #(RsDrivers, $(RsDriver), 2)
  215.     set ErrorControl     = $(#(RsDrivers, $(RsDriver), 3))
  216.     set Tag              =   #(RsDrivers, $(RsDriver), 4)
  217.     set EventMessageFile =   #(RsDrivers, $(RsDriver), 5)
  218.     set TypesSupported   =   #(RsDrivers, $(RsDriver), 6)
  219.     set Interrupt        =   #(RsDrivers, $(RsDriver), 7)
  220.     set PortAddress      =   #(RsDrivers, $(RsDriver), 8)
  221.     set TimerPortAddress =   #(RsDrivers, $(RsDriver), 9)
  222.     set TimerValue       =   #(RsDrivers, $(RsDriver), 10)
  223.     set Interrupt2        =   #(RsDrivers, $(RsDriver), 11)
  224.     set PortAddress2      =   #(RsDrivers, $(RsDriver), 12)
  225.     set Start            =   $(!SERVICE_AUTO_START)
  226.  
  227. installtheoption = +
  228.  
  229.     ;
  230.     ; Code to add files to copy list
  231.     ;
  232.  
  233.     ifstr(i) $(AddCopy) == "YES"
  234.         set DoActualCopy = NO
  235.         set FileToCheck = #(Files-RsDrivers, $(RsDriver), 2)
  236.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
  237.         ifstr(i) $(STATUS) == NO
  238.             set DoActualCopy = YES
  239.         endif
  240.  
  241.         ifstr(i) $(DoActualCopy) == NO
  242.             shell "subroutn.inf" DriversExist $($0) $(String1)
  243.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  244.                 goto finish_InstallOption
  245.             endif
  246.  
  247.             ifstr(i) $($R0) == STATUS_CURRENT
  248.             else-ifstr(i) $($R0) == STATUS_NEW
  249.                 set DoActualCopy = YES
  250.             else-ifstr(i) $($R0) == STATUS_USERCANCEL
  251.                 goto finish_InstallOption
  252.             else
  253.                 goto finish_InstallOption
  254.             endif
  255.         endif
  256.  
  257.         ifstr(i) $(DoActualCopy) == YES
  258.  
  259.             shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
  260.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  261.                 goto finish_InstallOption
  262.             endif
  263.  
  264.             ifstr(i) $($R0) == STATUS_SUCCESSFUL
  265.                 set SrcDir = $($R1)
  266.                 ifstr(i) $($R2) != ""
  267.                     set DrivesToFree = >($(DrivesToFree), $($R2))
  268.                 endif
  269.             else
  270.                 goto finish_InstallOption
  271.             endif
  272.  
  273.             install Install-AddCopyOption
  274.             ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
  275.                 goto finish_InstallOption
  276.             endif
  277.         else
  278.             set DoCopy = NO
  279.         endif
  280.  
  281.     endif
  282.  
  283.     ifstr(i) $(DoCopy) == "YES"
  284.         read-syms ProgressCopy$($0)
  285.         install Install-DoCopyOption
  286.         ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  287.             Debug-Output "Copying files failed"
  288.             goto finish_InstallOption
  289.         else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  290.             set Status = STATUS_USERCANCEL
  291.             goto finish_InstallOption
  292.         endif
  293.     endif
  294.  
  295.     ifstr(i) $(DoConfig) == "YES"
  296.         ;
  297.         ; first run a privilege check on modifying the setup node
  298.         ;
  299.  
  300.         shell "registry.inf" CheckSetupModify
  301.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  302.             goto finish_InstallOption
  303.         endif
  304.  
  305.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  306.             goto finish_InstallOption
  307.         endif
  308.  
  309.         ;
  310.         ; then make a new RS-232C entry, the entry is created automatically
  311.         ; enabled
  312.         ;
  313.  
  314.         set ServiceNode   = $(RsDriver)
  315.         set ServiceBinary = System32\drivers\#(Files-RsDrivers, $(RsDriver), 2)
  316.  
  317.         set ServicesValues   = { +
  318.                 {Type,           0, $(!REG_VT_DWORD),     $(Type)                  }, +
  319.                 {Start,          0, $(!REG_VT_DWORD),     $(Start)                 }, +
  320.                 {Group,          0, $(!REG_VT_SZ),        $(Group)                 }, +
  321.                 {ErrorControl,   0, $(!REG_VT_DWORD),     $(ErrorControl)          }, +
  322.                 {Tag,            0, $(!REG_VT_DWORD),     $(Tag)                   }, +
  323.                 {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary)         }  +
  324.                 }
  325.         set ParametersValues = { +
  326.                 {TimerPortAddress,  0, $(!REG_VT_DWORD),     $(TimerPortAddress)     },  +
  327.                 {TimerValue,        0, $(!REG_VT_DWORD),     $(TimerValue)           }  +
  328.                 }
  329. ;        set DeviceValues     = {}
  330.         set RSAValues     = { +
  331.                 {Interrupt,      0, $(!REG_VT_DWORD),     $(Interrupt)             }, +
  332.                 {PortAddress,    0, $(!REG_VT_DWORD),     $(PortAddress)           }  +
  333.                 }
  334.         set RSA2Values     = { +
  335.                 {Interrupt,      0, $(!REG_VT_DWORD),     $(Interrupt2)             }, +
  336.                 {PortAddress,    0, $(!REG_VT_DWORD),     $(PortAddress2)           }  +
  337.                 }
  338.         set EventLogValues   = { +
  339.                 {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
  340.                 {TypesSupported,   0, $(!REG_VT_DWORD),     $(TypesSupported)   }  +
  341.                 }
  342.  
  343. ; fujino 960226
  344. ;        shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
  345.         shell "" MakeServicesEntry2 $(ServiceNode)      +
  346.                                                 $(ServicesValues)   +
  347.                                                 $(ParametersValues) +
  348. ;                                                $(DeviceValues)     +
  349.                                                 $(RSAValues)     +
  350.                                                 $(EventLogValues)   +
  351.                                                 Parameters +
  352.                                                 "RSA1"
  353.  
  354.         shell "" MakeServicesEntry2 $(ServiceNode)      +
  355.                                                 $(ServicesValues)   +
  356.                                                 $(ParametersValues) +
  357. ;                                                $(DeviceValues)     +
  358.                                                 $(RSA2Values)     +
  359.                                                 $(EventLogValues)   +
  360.                                                 Parameters        +
  361.                                                 "RSA2"
  362.  
  363.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  364.             Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
  365.             goto finish_InstallOption
  366.         endif
  367.  
  368.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  369.             Debug-Output "MakeServicesEntry failed for RS-232C"
  370.             goto finish_InstallOption
  371.         endif
  372.  
  373.         ;
  374.         ; Delete CurrentControlSet\Services\SerRSA98 Value
  375.         ;
  376.         set SerRSA98ServiceName = "SYSTEM\CurrentControlSet\Services\SerRSA98"
  377.         OpenRegKey $(!REG_H_LOCAL) "" $(SerRSA98ServiceName) $(!MAXIMUM_ALLOWED) KeyService
  378.         Ifstr(i) $(KeyService) != $(KeyNull)
  379.             DeleteRegValue $(KeyService) "ImagePath"
  380. ;            DeleteRegValue $(KeyService) "Tag"
  381.             DeleteRegKey $(KeyService) "Security"
  382.             CloseRegKey $(KeyService)
  383.             Debug-Output "SerRSA98 Service Value Deleted(Imagepath, Tag, Security)"
  384.         else
  385.             Debug-Output "SYSTEM\CurrentControlSet\Services\SerRSA98 KeyService Open Error"
  386.         endif
  387.  
  388.  
  389. ;;;;;;;H.K
  390.         set Parameters1 = "SYSTEM\CurrentControlSet\Services\SerRSA98\Parameters"
  391.         set ParametersKey = ""
  392.  
  393. ;;fujino 960226
  394. ;;      OpenRegKey $(KeyService) "" $("Parameters1") $(!MAXIMUM_ALLOWED) ParametersKey
  395.         OpenRegKey $(KeyService) "" $(Parameters1) $(!MAXIMUM_ALLOWED) ParametersKey
  396.  
  397.         Ifstr(i) $(ParametersKey) != $(KeyNull)
  398.             CloseRegKey $(ParametersKey)
  399. ;            Debug-Output "SerRSA98 Service Value Deleted(Imagepath, Tag, Security)"
  400.         else
  401. ;            Debug-Output "SYSTEM\CurrentControlSet\Services\SerRSA98 KeyService Open Error"
  402.         endif
  403.  
  404.         set RSAValues     = { +
  405.                 {Interrupt2,      0, $(!REG_VT_DWORD),     $(Interrupt)             }, +
  406.                 {PortAddress2,    0, $(!REG_VT_DWORD),     $(PortAddress)           }  +
  407.                 }
  408. ;    shell "" AddValueList $(ParametersKey) $(RSAValues)
  409.  
  410.  
  411.  
  412.         set DirRSA = "SYSTEM\CurrentControlSet\Services\SerRSA98\Parameters\RSA"
  413.         set RSAKey = ""
  414.         set RSATmp = {"RSA","",""}
  415.         set NoTitle = 0
  416. ;        CreateRegKey $(ParametersKSey) $(RSATmp) 0 $(!MAXIMUM_ALLOWED) "" RSAKey
  417.  
  418. ;fujino 960226
  419. ;       CreateRegKey $(ParametersKSey) {"RSA",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" RSAKey
  420. ;        CreateRegKey $(ParametersKSey) {"RSA98",$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" RSAKey
  421.  
  422.         Ifstr(i) $(RSAKey) != $(KeyNull)
  423.             CloseRegKey $(RSAKey)
  424. ;            Debug-Output "SerRSA98 Service Value Deleted(Imagepath, Tag, Security)"
  425.         else
  426. ;            Debug-Output "SYSTEM\CurrentControlSet\Services\SerRSA98 KeyService Open Error"
  427.         endif
  428. ;;;        
  429.  
  430.     endif
  431.  
  432.     set Status = STATUS_SUCCESSFUL
  433. finish_InstallOption = +
  434.     ForListDo $(DrivesToFree)
  435.         LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
  436.     EndForListDo
  437.  
  438.     Return $(Status)
  439.  
  440.  
  441. [Install-AddCopyOption]
  442.  
  443.     ;
  444.     ; Add the files to the copy list
  445.     ;
  446.     AddSectionKeyFileToCopyList   Files-RsDrivers                +
  447.                                   $(RsDriver)                    +
  448.                                   $(SrcDir)                      +
  449.                                   $(!STF_WINDOWSSYSPATH)\drivers
  450.  
  451.     exit
  452.  
  453.  
  454. [Install-DoCopyOption]
  455.  
  456.     ;
  457.     ; Copy files in the copy list
  458.     ;
  459.     CopyFilesInCopyList
  460.     exit
  461.  
  462. ;-------------------------------------------------------------------------
  463. ; 4. DeInstallOption:
  464. ;
  465. ; FUNCTION:  To remove files representing Option
  466. ;            To remove the registry entry corresponding to the Option
  467. ;
  468. ; INPUT:     $($0):  Language to use
  469. ;            $($1):  OptionID to install
  470. ;
  471. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  472. ;                            STATUS_NOLANGUAGE |
  473. ;                            STATUS_USERCANCEL |
  474. ;                            STATUS_FAILED
  475. ;-------------------------------------------------------------------------
  476. [DeInstallOption]
  477.     ;
  478.     ; Set default values for
  479.     ;
  480.     set Status   = STATUS_FAILED
  481.     ;
  482.     ; extract parameters
  483.     ;
  484.     set Option   = $($1)
  485.  
  486.     ;
  487.     ; Check if the language requested is supported
  488.     ;
  489.     set LanguageList = ^(LanguagesSupported, 1)
  490.     Ifcontains(i) $($0) in $(LanguageList)
  491.     else
  492.         set Status = STATUS_NOLANGUAGE
  493.         goto finish_DeInstallOption
  494.     endif
  495.     read-syms Strings$($0)
  496.  
  497.     ;
  498.     ; check to see if Option is supported.
  499.     ;
  500.  
  501.     set OptionList = ^(Options, 0)
  502.     ifcontains $(Option) in $(OptionList)
  503.     else
  504.         goto finish_DeInstallOption
  505.     endif
  506.     set OptionList = ""
  507.  
  508.     ;
  509.     ; fetch details about option
  510.     ;
  511.  
  512.     set RsDriver = #(Options, $(Option), 1)
  513.     set MiniportFile   = #(Files-RsDrivers, $(RsDriver), 2)
  514.     set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)
  515.  
  516.     ;
  517.     ; check to see if file is installed
  518.     ; if not give success
  519.     ;
  520.  
  521.     LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  522.     ifstr(i) $(STATUS) == "NO"
  523.         set Status = STATUS_SUCCESSFUL
  524.         goto finish_DeInstallOption
  525.     endif
  526.  
  527.     shell "registry.inf" GetServicesEntryStart $(RsDriver)
  528.     ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
  529.         ; this could happen if there is no start value or there is no
  530.         ; key, in which case the option is not installed
  531.         set Status = STATUS_SUCCESSFUL
  532.         goto finish_DeInstallOption
  533.     endif
  534.  
  535. ;    ifstr(i) $($R1) == $(!SERVICE_BOOT_START)
  536. ;        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(String3)
  537. ;        ifstr(i) $($R0) != STATUS_SUCCESSFUL
  538. ;            goto do_removal
  539. ;        endif
  540. ;        ifstr(i) $($R1) == "CANCEL"
  541. ;            goto finish_DeInstallOption
  542. ;        endif
  543. ;    endif
  544.  
  545. do_removal =+
  546.     ;
  547.     ; disable the registry entry
  548.     ;
  549.  
  550.     shell "registry.inf" RemoveServicesEntry $(RsDriver)
  551.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  552.         goto finish_DeInstallOption
  553.     endif
  554.  
  555.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  556.         goto finish_DeInstallOption
  557.     endif
  558.  
  559.     ;
  560.     ; we won't remove the file because we can only do so during the next boot.
  561.     ; if the user chooses to reinstall the same driver during this boot
  562.     ; he will still end up deleting the driver on next boot. if the file
  563.     ; should be deleted a warning should be put up saying that the user should
  564.     ; not try to reinstall the driver during this boot
  565.     ;
  566.     ;    AddFileToDeleteList $(FilePath)
  567.  
  568.     set Status = STATUS_SUCCESSFUL
  569.  
  570. finish_DeInstallOption =+
  571.     return $(Status)
  572.  
  573.  
  574. ;-------------------------------------------------------------------------
  575. ; 5. GetInstalledOptions:
  576. ;
  577. ; FUNCTION:  To find out the list of options which are installed
  578. ;
  579. ; INPUT:     $($0): Language to Use
  580. ;
  581. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  582. ;                            STATUS_FAILED
  583. ;
  584. ;            $($R1): List of options installed
  585. ;            $($R2): Option installed Text List
  586. ;-------------------------------------------------------------------------
  587. [GetInstalledOptions]
  588.     set Status = STATUS_FAILED
  589.     set InstalledOptions = {}
  590.     set InstalledOptionsText = {}
  591.  
  592.     ;
  593.     ; Check if the language requested is supported
  594.     ;
  595.     set LanguageList = ^(LanguagesSupported, 1)
  596.     Ifcontains(i) $($0) in $(LanguageList)
  597.     else
  598.         set Status = STATUS_NOLANGUAGE
  599.         goto finish_GetInstalledOptions
  600.     endif
  601.  
  602.     set OptionList = ^(Options, 0)
  603.     ForListDo $(OptionList)
  604.         set RsDriver = #(Options, $($), 1)
  605.         set MiniportFile   = #(Files-RsDrivers, $(RsDriver), 2)
  606.         set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)
  607.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  608.         ifstr(i) $(STATUS) == "YES"
  609.             shell "registry.inf" GetServicesEntryStart $(RsDriver)
  610.             ifint $($ShellCode) == $(!SHELL_CODE_OK)
  611.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  612.                     ifstr(i) $($R1) != $(!SERVICE_DISABLED)
  613.  
  614.                         set OptionText = #(OptionsText$($0), $($), 1)
  615.                         set InstalledOptions     = >($(InstalledOptions), $($))
  616.                         set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText))
  617.  
  618.                     endif
  619.                 endif
  620.             endif
  621.         endif
  622.     EndForListDo
  623.     set Status = STATUS_SUCCESSFUL
  624. finish_GetInstalledOptions =+
  625.     Return $(Status) $(InstalledOptions) $(InstalledOptionsText)
  626.  
  627.  
  628. ;; start registry
  629.  
  630.  
  631. [RegistryConstants]
  632.     MaskAllAccess          = 33554432
  633.     NoTitle                = 0
  634.     RegLastError           = $(!REG_ERROR_SUCCESS)
  635. [WinNTKeyCreate]
  636.     set Status = STATUS_FAILED
  637.     read-syms RegistryConstants
  638.     set KeyPath   = { +
  639.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  640.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  641.                      {"Windows NT",      $(NoTitle), $(MaskAllAccess)}, +
  642.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  643.                     }
  644.     ifstr(i) $(!STF_NTUPGRADE) == "YES"
  645.         set KeyValues = { +
  646.                          {PathName,               $(NoTitle), $(!REG_VT_SZ),    *($($0), 1) },       +
  647.                          {SoftwareType,           $(NoTitle), $(!REG_VT_SZ),    *($($0), 2) },       +
  648.                          {InstallDate,            $(NoTitle), $(!REG_VT_DWORD), *(*($($0), 5), 1) }, +
  649.                          {SourcePath,             $(NoTitle), $(!REG_VT_SZ),    *($($0), 7) },       +
  650.                          {ProductId,              $(NoTitle), $(!REG_VT_SZ),    *($($0), 8) }        +
  651.                         }
  652.     else
  653.         set KeyValues = { +
  654.                          {PathName,               $(NoTitle), $(!REG_VT_SZ),    *($($0), 1) },       +
  655.                          {SoftwareType,           $(NoTitle), $(!REG_VT_SZ),    *($($0), 2) },       +
  656.                          {RegisteredOwner,        $(NoTitle), $(!REG_VT_SZ),    *($($0), 3) },       +
  657.                          {RegisteredOrganization, $(NoTitle), $(!REG_VT_SZ),    *($($0), 4) },       +
  658.                          {InstallDate,            $(NoTitle), $(!REG_VT_DWORD), *(*($($0), 5), 1) }, +
  659.                          {SourcePath,             $(NoTitle), $(!REG_VT_SZ),    *($($0), 7) },       +
  660.                          {ProductId,              $(NoTitle), $(!REG_VT_SZ),    *($($0), 8) }        +
  661.                         }
  662.     endif
  663.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  664.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  665.         goto endWinNT
  666.     endif
  667.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  668.         goto endWinNT
  669.     else
  670.         CloseRegKey $($R1)
  671.     endif
  672.     set KeyPath   = { +
  673.                      {System,             $(NoTitle), $(MaskAllAccess)}, +
  674.                      {$(!STF_CONTROLSET), $(NoTitle), $(MaskAllAccess)}, +
  675.                      {Control,            $(NoTitle), $(MaskAllAccess)}, +
  676.                      {ProductOptions,     $(NoTitle), $(MaskAllAccess)}  +
  677.                     }
  678.     set KeyValues = { +
  679.                      {ProductType,        $(NoTitle), $(!REG_VT_SZ), *($($0), 6) } +
  680.                     }
  681.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  682.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  683.         goto endWinNT
  684.     endif
  685.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  686.         goto endWinNT
  687.     else
  688.         CloseRegKey $($R1)
  689.     endif
  690.     ifstr(i) $(!STF_NTUPGRADE) != "YES"
  691.         ifstr(i) *($($0), 6) != "WinNT"
  692.             set KeyPath   = { +
  693.                              {System,             $(NoTitle), $(MaskAllAccess)}, +
  694.                              {$(!STF_CONTROLSET), $(NoTitle), $(MaskAllAccess)}, +
  695.                              {Control,            $(NoTitle), $(MaskAllAccess)}, +
  696.                              {"Session Manager",  $(NoTitle), $(MaskAllAccess)}  +
  697.                             }
  698.             set KeyValues = { +
  699.                              {RegisteredProcessors, $(NoTitle), $(!REG_VT_DWORD), 4 } +
  700.                             }
  701.             shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  702.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  703.                 goto endWinNT
  704.             endif
  705.             ifstr(i) $($R0) != STATUS_SUCCESSFUL
  706.                 goto endWinNT
  707.             else
  708.                 CloseRegKey $($R1)
  709.             endif
  710.         endif
  711.     endif
  712.     set Status = STATUS_SUCCESSFUL
  713. endWinNT = +
  714.     Return $(Status)
  715. [WinNTAddPid]
  716.     set Status = STATUS_FAILED
  717.     read-syms RegistryConstants
  718.     set KeyPath   = { +
  719.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  720.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  721.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  722.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  723.                     }
  724.     set KeyValues = { +
  725.                      {ProductId,      $(NoTitle), $(!REG_VT_SZ), *($($0), 1) }        +
  726.                     }
  727.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  728.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  729.         goto endWinNTAdd
  730.     endif
  731.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  732.         goto endWinNTAdd
  733.     else
  734.         CloseRegKey $($R1)
  735.     endif
  736.     set Status = STATUS_SUCCESSFUL
  737. endWinNTAdd = +
  738.     Return $(Status)
  739. [MakeStartupEntry]
  740.     set Status = STATUS_FAILED
  741.     read-syms RegistryConstants
  742.     set KeyPath   = { +
  743.                      {SOFTWARE,          $(NoTitle), $(MaskAllAccess)}, +
  744.                      {Microsoft,         $(NoTitle), $(MaskAllAccess)}, +
  745.                      {"Windows NT",      $(NoTitle), $(MaskAllAccess)}, +
  746.                      {CurrentVersion,    $(NoTitle), $(MaskAllAccess)}, +
  747.                      {"Program Manager", $(NoTitle), $(MaskAllAccess)}, +
  748.                      {Settings,          $(NoTitle), $(MaskAllAccess)}  +
  749.                     }
  750.     set KeyValues = { +
  751.                      {Startup, $(NoTitle), $(!REG_VT_SZ), $($0)} +
  752.                     }
  753.     shell "" CreateKey $(!REG_H_CUSER) $(KeyPath) $(KeyValues)
  754.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  755.         goto end_MakeStartupEntry
  756.     endif
  757.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  758.         goto end_MakeStartupEntry
  759.     else
  760.         CloseRegKey $($R1)
  761.     endif
  762.     set Status = STATUS_SUCCESSFUL
  763. end_MakeStartupEntry = +
  764.     Return $(Status)
  765. [GetNTSource]
  766.     set Status = STATUS_SUCCESSFUL
  767.     read-syms RegistryConstants
  768.     set NTSource = A:\
  769.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  770.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  771.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  772.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  773.         goto end_getntsource
  774.     endif
  775.     GetRegValue $(KeyHandle) "SourcePath" SourcePathValue
  776.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  777.         CloseRegKey $(KeyHandle)
  778.         goto end_getntsource
  779.     endif
  780.     set NTSource =  *($(SourcePathValue), 4)
  781.     CloseRegKey $(KeyHandle)
  782. end_getntsource = +
  783.     Return $(Status) $(NTSource)
  784. [AppendToBootExecute]
  785.     set Status           = STATUS_FAILED
  786.     set AppendLines      = $($0)
  787.     read-syms RegistryConstants
  788.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager"
  789.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  790.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  791.         Debug-Output "REGISTRY.INF: Couldn't open session manager node for read/write access"
  792.         goto finish_appendbootexecute
  793.     endif
  794.     GetRegValue $(KeyHandle) "BootExecute" BootExecuteValue
  795.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  796.         set BootExecute = {}
  797.     else
  798.         set BootExecute = *($(BootExecuteValue), 4)
  799.     endif
  800.     set NewBootExecute = {}
  801.     ForListDo $(BootExecute)
  802.         set NewBootExecute = >($(NewBootExecute), $($))
  803.     EndForListDo
  804.     ForListDo $(AppendLines)
  805.         set NewBootExecute = >($(NewBootExecute), $($))
  806.     EndForListDo
  807.     set ValueInfo = {BootExecute, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NewBootExecute)}
  808.     SetRegValue $(KeyHandle) $(ValueInfo)
  809.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  810.         CloseRegKey $(KeyHandle)
  811.         Debug-Output "REGISTRY.INF: Couldn't set BootExecute value"
  812.         goto finish_appendbootexecute
  813.     endif
  814.     CloseRegKey $(KeyHandle)
  815.     set Status = STATUS_SUCCESSFUL
  816. finish_appendbootexecute = +
  817.     Return $(Status)
  818. [AppendToSystemPath]
  819.     set Status           = STATUS_FAILED
  820.     read-syms RegistryConstants
  821.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Environment"
  822.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  823.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  824.         Debug-Output "REGISTRY.INF: Couldn't open session manager\environment node for read/write access"
  825.         goto finish_appendsystempath0
  826.     endif
  827.     GetRegValue $(KeyHandle) "Path" PathValue
  828.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  829.         goto finish_appendsystempath1
  830.     endif
  831.     set NewPathValue = *($(PathValue),4)";"$($0)
  832.     set ValueInfo = {"Path", $(NoTitle), $(!REG_VT_EXPAND_SZ), $(NewPathValue)}
  833.     SetRegValue $(KeyHandle) $(ValueInfo)
  834.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  835.         Debug-Output "REGISTRY.INF: Couldn't set Path value"
  836.         goto finish_appendsystempath1
  837.     endif
  838.     set Status = STATUS_SUCCESSFUL
  839. finish_appendsystempath1 = +
  840.     CloseRegKey $(KeyHandle)
  841. finish_appendsystempath0 = +
  842.     Return $(Status)
  843. [EnumeratePagingFiles]
  844.     set Status       = STATUS_FAILED
  845.     set PagingFiles  = {}
  846.     read-syms RegistryConstants
  847.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  848.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  849.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  850.         Debug-Output "REGISTRY.INF: Couldn't open pagefile node for read access"
  851.         goto endenumpagefile
  852.     endif
  853.     GetRegValue $(KeyHandle) "PagingFiles" PagingFilesValue
  854.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  855.         Debug-Output "REGISTRY.INF: Couldn't read PagingFiles value"
  856.         CloseRegKey $(KeyHandle)
  857.         goto endenumpagefile
  858.     endif
  859.     CloseRegKey $(KeyHandle)
  860.     ifstr(i) $(PagingFilesValue) == ""
  861.         set Status = STATUS_SUCCESSFUL
  862.         goto endenumpagefile
  863.     endif
  864.     set PagefileList = *($(PagingFilesValue), 4)
  865.     ForListDo $(PagefileList)
  866.        ifstr(i) $($) != ""
  867.            set Pagefile = $($)
  868.            Split-String $(Pagefile) " " SplitString
  869.            set PagefilePath  = ""
  870.            set PagefileSize  = ""
  871.            ForListDo $(SplitString)
  872.               ifstr(i) $($) != " "
  873.                  ifstr(i) $(PagefilePath) == ""
  874.                      set PagefilePath = $($)
  875.                  else-ifstr(i) $(PagefileSize) == ""
  876.                      set PagefileSize = $($)
  877.                  endif
  878.               endif
  879.            EndForListDo
  880.            ifstr(i) $(PagefilePath) == ""
  881.            else-ifstr(i) $(PagefileSize) == ""
  882.            else
  883.                set PagingFiles = >($(PagingFiles), {$(PagefilePath),$(PagefileSize)})
  884.            endif
  885.        endif
  886.     EndForListDo
  887.     set Status = STATUS_SUCCESSFUL
  888. endenumpagefile = +
  889.     Return $(Status) $(PagingFiles)
  890. [SetPagingFiles]
  891.     set Status       = STATUS_FAILED
  892.     set PagingFiles  = {}
  893.     read-syms RegistryConstants
  894.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  895.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  896.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  897.         goto endsetpagingfiles
  898.     endif
  899.     set PagefileList = {}
  900.     ForListDo $($0)
  901.         set PagefileList = >($(PagefileList), *($($), 1)" "*($($), 2) )
  902.     EndForListDo
  903.     Debug-Output "REGISTRY.INF: New Paging files are "$(PagefileList)
  904.     set ValueInfo = {PagingFiles, $(NoTitle), $(!REG_VT_MULTI_SZ), $(PagefileList)}
  905.     SetRegValue $(KeyHandle) $(ValueInfo)
  906.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  907.         CloseRegKey $(KeyHandle)
  908.         Debug-Output "REGISTRY.INF: Couldn't set paging files value"
  909.         goto endsetpagingfiles
  910.     endif
  911.     CloseRegKey $(KeyHandle)
  912.     set Status = STATUS_SUCCESSFUL
  913. endsetpagingfiles = +
  914.     Return $(Status)
  915. [MakeQuotaEntries]
  916.     set Status       = STATUS_FAILED
  917.     read-syms RegistryConstants
  918.     set PagedPoolSize     = $($0)
  919.     set RegistrySizeLimit = $($1)
  920.     set MBMultiplier  = 1024
  921.     set-mul MBMultiplier  = $(MBMultiplier) 1024
  922.     set-mul PagedPoolSize     = $(PagedPoolSize)     $(MBMultiplier)
  923.     set-mul RegistrySizeLimit = $(RegistrySizeLimit) $(MBMultiplier)
  924.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  925.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  926.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  927.         Debug-Output "REGISTRY.INF: Couldn't open memory management key"
  928.         goto end_MakeQuotaEntries
  929.     endif
  930.     set ValueInfo = {PagedPoolSize, $(NoTitle), $(!REG_VT_DWORD), $(PagedPoolSize)}
  931.     SetRegValue $(KeyHandle) $(ValueInfo)
  932.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  933.         CloseRegKey $(KeyHandle)
  934.         Debug-Output "REGISTRY.INF: Couldn't set pagepoolsize value"
  935.         goto end_MakeQuotaEntries
  936.     endif
  937.     CloseRegKey $(KeyHandle)
  938.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control"
  939.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  940.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  941.         Debug-Output "REGISTRY.INF: Couldn't open control key"
  942.         goto end_MakeQuotaEntries
  943.     endif
  944.     set ValueInfo = {RegistrySizeLimit, $(NoTitle), $(!REG_VT_DWORD), $(RegistrySizeLimit)}
  945.     SetRegValue $(KeyHandle) $(ValueInfo)
  946.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  947.         CloseRegKey $(KeyHandle)
  948.         Debug-Output "REGISTRY.INF: Couldn't set registry size limit value"
  949.         goto end_MakeQuotaEntries
  950.     endif
  951.     CloseRegKey $(KeyHandle)
  952.     set Status = STATUS_SUCCESSFUL
  953. end_MakeQuotaEntries = +
  954.     Return $(Status)
  955. [MakeWOWEntry]
  956.     set Status = STATUS_FAILED
  957.     read-syms  RegistryConstants
  958.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\WOW" $(MaskAllAccess) WOWKey
  959.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  960.         Debug-Output "REGISTRY.INF: Failed to open layout key"
  961.         goto finish_MakeWOWEntry
  962.     endif
  963.     set wowcmdline = "ntvdm -m -w -f%SystemRoot%\system32 -a %SystemRoot%\system32\"$($0)
  964.     set KeyValues = { +
  965.                     {wowcmdline,   $(NoTitle), $(!REG_VT_EXPAND_SZ), $(wowcmdline)}  +
  966.                     }
  967.     shell "" AddValueList $(WOWKey) $(KeyValues)
  968.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  969.         goto finish_MakeWOWEntry
  970.     endif
  971.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  972.         goto finish_MakeWOWEntry
  973.     endif
  974.     CloseRegKey $(WOWKey)
  975.     set Status = STATUS_SUCCESSFUL
  976. finish_MakeWOWEntry = +
  977.     Return $(Status)
  978. [MakeLayoutEntry]
  979.     set Status = STATUS_FAILED
  980.     read-syms  RegistryConstants
  981.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\Keyboard Layout" $(MaskAllAccess) LayoutKey
  982.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  983.         Debug-Output "REGISTRY.INF: Failed to open layout key"
  984.         goto finish_MakeLayoutEntry
  985.     endif
  986.     set KeyValues = { +
  987.                       {$($0),   $(NoTitle), $(!REG_VT_SZ), $($1)       }  +
  988.                     }
  989.     shell "" AddValueList $(LayoutKey) $(KeyValues)
  990.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  991.         goto finish_MakeLayoutEntry
  992.     endif
  993.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  994.         goto finish_MakeLayoutEntry
  995.     endif
  996.     CloseRegKey $(LayoutKey)
  997.     LibraryProcedure STATUS, $(!LIBHANDLE), SetCurrentLayout $($0)
  998.     ifstr(i) $(STATUS) != "SUCCESS"
  999.         Debug-Output "REGISTRY.INF: Failed in SetCurrentLayout function"
  1000.         goto finish_MakeLayoutEntry
  1001.     endif
  1002.     set Status = STATUS_SUCCESSFUL
  1003. finish_MakeLayoutEntry = +
  1004.     Return $(Status)
  1005. [MakeLocaleEntry]
  1006.     set Status = STATUS_FAILED
  1007.     read-syms  RegistryConstants
  1008.     ifstr(i) $($1) != "locale.nls"
  1009.         OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\OEMLocale" $(MaskAllAccess) OEMLocaleKey
  1010.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1011.             Debug-Output "REGISTRY.INF: Failed to open OEMLocale key"
  1012.             goto finish_MakeLocaleEntry
  1013.         endif
  1014.         set KeyValues = { +
  1015.                           {$($0), $(NoTitle), $(!REG_VT_SZ), $($1)}  +
  1016.                         }
  1017.         shell "" AddValueList $(OEMLocaleKey) $(KeyValues)
  1018.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1019.             Debug-Output "REGISTRY.INF: Failed to find function AddValueList"
  1020.             goto finish_MakeLocaleEntry
  1021.         endif
  1022.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1023.             Debug-Output "REGISTRY.INF: Failed to create OEMLocale value"
  1024.             goto finish_MakeLocaleEntry
  1025.         endif
  1026.         CloseRegKey $(OEMLocaleKey)
  1027.     endif
  1028.     ifstr(i) $(!STF_INSTALL_TYPE) == SETUPBOOTED
  1029.         set ModifyCPL = YES
  1030.     else
  1031.         set ModifyCPL = NO
  1032.     endif
  1033.     LibraryProcedure STATUS, $(!LIBHANDLE), SetCurrentLocale $($0) $(ModifyCPL)
  1034.     ifstr(i) $(STATUS) != "SUCCESS"
  1035.         ifstr(i) $(STATUS) == ERROR_UNSUPPORTED
  1036.             set Status = ERROR_UNSUPPORTED
  1037.         endif
  1038.         Debug-Output "REGISTRY.INF: Failed in SetCurrentLocale function"
  1039.         goto finish_MakeLocaleEntry
  1040.     endif
  1041.     OpenRegKey $(!REG_H_CUSER) "" "Control Panel\International" $(MaskAllAccess) LocaleKey
  1042.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1043.         Debug-Output "REGISTRY.INF: Failed to open cuser international key"
  1044.         goto finish_MakeLocaleEntry
  1045.     endif
  1046.     set KeyValues = { +
  1047.                       {Locale, $(NoTitle), $(!REG_VT_SZ), $($0)        } +
  1048.                     }
  1049.     shell "" AddValueList $(LocaleKey) $(KeyValues)
  1050.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1051.         Debug-Output "REGISTRY.INF: Failed to find function AddValueList"
  1052.         CloseRegKey $(LocaleKey)
  1053.         goto finish_MakeLocaleEntry
  1054.     endif
  1055.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1056.         Debug-Output "REGISTRY.INF: Failed to create Current User Locale value"
  1057.         CloseRegKey $(LocaleKey)
  1058.         goto finish_MakeLocaleEntry
  1059.     endif
  1060.     set KeyValues = {}
  1061.     set Num = 1
  1062.     ForListDo $($2)
  1063.         set KeyValues = >($(KeyValues), {$(Num), $(NoTitle), $(!REG_VT_SZ), $($)})
  1064.     EndForListDo
  1065.     set KeyPath = {{"Sorting Order", $(NoTitle), $(MaskAllAccess)}}
  1066.     shell "" CreateKey $(LocaleKey) $(KeyPath) $(KeyValues)
  1067.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1068.         CloseRegKey $(LocaleKey)
  1069.         goto finish_MakeLocaleEntry
  1070.     endif
  1071.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1072.         CloseRegKey $(LocaleKey)
  1073.         goto finish_MakeLocaleEntry
  1074.     else
  1075.         CloseRegKey $($R1)
  1076.     endif
  1077.     CloseRegKey $(LocaleKey)
  1078.     set Status = STATUS_SUCCESSFUL
  1079. finish_MakeLocaleEntry = +
  1080.     Return $(Status)
  1081. [MakeLanguageEntry]
  1082.     set Status = STATUS_FAILED
  1083.     read-syms  RegistryConstants
  1084.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\Language" $(MaskAllAccess) LanguageKey
  1085.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1086.         Debug-Output "REGISTRY.INF: Failed to open Language key"
  1087.         goto finish_MakeLanguageEntry
  1088.     endif
  1089.     set KeyValues = { +
  1090.                       {Default, $(NoTitle), $(!REG_VT_SZ), $($0)       }, +
  1091.                       {$($0),   $(NoTitle), $(!REG_VT_SZ), $($1)       }  +
  1092.                     }
  1093.     shell "" AddValueList $(LanguageKey) $(KeyValues)
  1094.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1095.         goto finish_MakeLanguageEntry
  1096.     endif
  1097.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1098.         goto finish_MakeLanguageEntry
  1099.     endif
  1100.     CloseRegKey $(LanguageKey)
  1101.     set Status = STATUS_SUCCESSFUL
  1102. finish_MakeLanguageEntry = +
  1103.     Return $(Status)
  1104. [MakeCodePageEntry]
  1105.     set Status = STATUS_FAILED
  1106.     read-syms  RegistryConstants
  1107.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\CodePage" $(MaskAllAccess) CodePageKey
  1108.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1109.         Debug-Output "REGISTRY.INF: Failed to open CodePage key"
  1110.         goto finish_MakeCodePageEntry
  1111.     endif
  1112.     set KeyValues = { +
  1113.                       {ACP,   $(NoTitle), $(!REG_VT_SZ), $($0) }, +
  1114.                       {OEMCP, $(NoTitle), $(!REG_VT_SZ), $($2) }, +
  1115.                       {MACCP, $(NoTitle), $(!REG_VT_SZ), $($4) }, +
  1116.                       {$($0), $(NoTitle), $(!REG_VT_SZ), $($1) }, +
  1117.                       {$($2), $(NoTitle), $(!REG_VT_SZ), $($3) }, +
  1118.                       {$($4), $(NoTitle), $(!REG_VT_SZ), $($5) }, +
  1119.                       {OEMHAL,$(NoTitle), $(!REG_VT_SZ), $($8) }  +
  1120.                     }
  1121.     ForListDo $($6)
  1122.        set CodePageValue = {$($), $(NoTitle), $(!REG_VT_SZ), *($($7), $(#)) }
  1123.        set KeyValues = >($(KeyValues), $(CodePageValue))
  1124.     EndForListDo
  1125.     shell "" AddValueList $(CodePageKey) $(KeyValues)
  1126.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1127.         goto finish_MakeCodePageEntry
  1128.     endif
  1129.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1130.         goto finish_MakeCodePageEntry
  1131.     endif
  1132.     CloseRegKey $(CodePageKey)
  1133.     set Status = STATUS_SUCCESSFUL
  1134. finish_MakeCodePageEntry = +
  1135.     Return $(Status)
  1136. [MakeFontEntries]
  1137.     set Status = STATUS_FAILED
  1138.     read-syms  RegistryConstants
  1139.     set OemFontFile   = $($0)
  1140.     set WoaFontFile   = $($1)
  1141.     set Cga40FontFile = $($2)
  1142.     set Cga80FontFile = $($3)
  1143.     set Ega40FontFile = $($4)
  1144.     set Ega80FontFile = $($5)
  1145.     set FixFontFile   = $($6)
  1146.     set SysFontFile   = $($7)
  1147.     set MSShellDlgFontFile = $($8)
  1148.     set DlgFontFileNameFile = $($9)
  1149.     set TaggedFontName = $($10)
  1150.     set CourFontFile = $($11)
  1151.     set SerifFontFile = $($12)
  1152.     set SmallFontFile = $($13)
  1153.     install Install-Ini-Font-Alter
  1154.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  1155.         goto finish_MakeFontEntries
  1156.     endif
  1157.     set Status = STATUS_SUCCESSFUL
  1158. finish_MakeFontEntries = +
  1159.     Return $(Status)
  1160. [Install-Ini-Font-Alter]
  1161.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "OEMFONT.FON",  $(OemFontFile)
  1162.     ReplaceIniKeyValue "system.ini", boot.description, "oemfonts.fon", $(OemFontFile)
  1163.     ReplaceIniKeyValue "system.ini", 386Enh,           "woafont",      $(WoaFontFile)
  1164.     ReplaceIniKeyValue "system.ini", 386Enh,           "CGA40WOA.FON", $(Cga40FontFile)
  1165.     ReplaceIniKeyValue "system.ini", 386Enh,           "CGA80WOA.FON", $(Cga80FontFile)
  1166.     ReplaceIniKeyValue "system.ini", 386Enh,           "EGA40WOA.FON", $(Ega40FontFile)
  1167.     ReplaceIniKeyValue "system.ini", 386Enh,           "EGA80WOA.FON", $(Ega80FontFile)
  1168.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "FIXEDFON.FON",  $(FixFontFile)
  1169.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "FONTS.FON",  $(SysFontFile)
  1170.     ReplaceIniKeyValue "win.ini",    FontSubstitutes,  "MS Shell Dlg",  $(MSShellDlgFontFile)
  1171.     ReplaceIniKeyValue "win.ini",    Fonts, "MS Sans Serif 8,10,12,14,18,24 (VGA res)",  $(DlgFontFileNameFile)
  1172.     ReplaceIniKeyValue "win.ini",    Fonts, "Courier 10,12,15 (VGA res)",  $(CourFontFile)
  1173.     ReplaceIniKeyValue "win.ini",    Fonts, "MS Serif 8,10,12,14,18,24 (VGA res)",  $(SerifFontFile)
  1174.     ReplaceIniKeyValue "win.ini",    Fonts, "Small Fonts (VGA res)",  $(SmallFontFile)
  1175.     ifstr(i) $(TaggedFontName) == ""
  1176.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial TRK"
  1177.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New TRK"
  1178.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman TRK"
  1179.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial CE"
  1180.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New CE"
  1181.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman CE"
  1182.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial CYR"
  1183.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New CYR"
  1184.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman CYR"
  1185.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial Greek"
  1186.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New Greek"
  1187.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman Greek"
  1188.     endif
  1189.     ifstr(i) $(TaggedFontName) == "CE"
  1190.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CE", "Arial"
  1191.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CE", "Courier New"
  1192.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CE", "Times New Roman"
  1193.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CYR", "Arial"
  1194.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CYR", "Courier New"
  1195.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CYR", "Times New Roman"
  1196.     endif
  1197.     ifstr(i) $(TaggedFontName) == "CYR"
  1198.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CYR", "Arial"
  1199.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CYR", "Courier New"
  1200.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CYR", "Times New Roman"
  1201.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CE", "Arial"
  1202.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CE", "Courier New"
  1203.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CE", "Times New Roman"
  1204.     endif
  1205.     ifstr(i) $(TaggedFontName) == "Greek"
  1206.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial Greek", "Arial"
  1207.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New Greek", "Courier New"
  1208.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman Greek", "Times New Roman"
  1209.     endif
  1210.     ifstr(i) $(TaggedFontName) == "TRK"
  1211.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial TRK", "Arial"
  1212.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New TRK", "Courier New"
  1213.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman TRK", "Times New Roman"
  1214.     endif
  1215.     exit
  1216.  
  1217. ; fujino 960226
  1218. ; [MakeServicesEntry]
  1219. [MakeServicesEntry2]
  1220.     set Status = STATUS_FAILED
  1221.     read-syms RegistryConstants
  1222.     Debug-Output "REGISTRY.INF: Creating Services node: "$($0)
  1223.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\services" $(MaskAllAccess) ServicesKey
  1224.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1225.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1226.         goto finish_MakeServicesEntry
  1227.     endif
  1228.     set StandardSet = { Type,           +
  1229.                         Start,          +
  1230.                         ErrorControl,   +
  1231.                         Group,          +
  1232.                         Dependencies,   +
  1233.                         StartName,      +
  1234.                         Password,       +
  1235.                         BinaryPathName, +
  1236.                         DisplayName     +
  1237.                       }
  1238.     ForListDo $(StandardSet)
  1239.         set $($) = ""
  1240.     EndForListDo
  1241.     set KeyValues = {}
  1242.     ForListDo $($1)
  1243.        set Var   = *($($), 1)
  1244.        set Value = *($($), 4)
  1245.        ifcontains(i) $(Var) in $(StandardSet)
  1246.            set $(Var) = $(Value)
  1247.        else
  1248.            set KeyValues = >($(KeyValues), $($))
  1249.        endif
  1250.     EndForListDo
  1251.     set Error = NO
  1252.     ForListDo { Type, Start, ErrorControl, BinaryPathName }
  1253.         ifstr(i) $($($)) == ""
  1254.             set Error = YES
  1255.         endif
  1256.     EndForListDo
  1257.     ifstr(i) $(Error) == YES
  1258.         Debug-Output "REGISTRY.INF: MakeServicesEntry was not passed in one of the three values: Type, Start, ErrorControl"
  1259.         CloseRegKey $(ServicesKey)
  1260.         goto finish_MakeServicesEntry
  1261.     endif
  1262.     set ServiceName = $($0)
  1263.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupCreateService $(ServiceName)      +
  1264.                                                                $(DisplayName)      +
  1265.                                                                $(Type)             +
  1266.                                                                $(Start)            +
  1267.                                                                $(ErrorControl)     +
  1268.                                                                $(BinaryPathName)   +
  1269.                                                                $(Group)            +
  1270.                                                                $(Dependencies)     +
  1271.                                                                $(StartName)        +
  1272.                                                                $(Password)
  1273.     ifstr(i) $(STATUS) != "SUCCESS"
  1274.         Debug-Output "REGISTRY.INF: MakeServicesEntry: SetupCreateService function failed"
  1275.         CloseRegKey $(ServicesKey)
  1276.         goto finish_MakeServicesEntry
  1277.     endif
  1278.     set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  1279.     shell "" CreateKey $(ServicesKey) $(KeyPath) $(KeyValues)
  1280.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1281.         Debug-Output "REGISTRY.INF: Failed to shell CreateKey."
  1282.         CloseRegKey $(ServicesKey)
  1283.         goto error_MakeServicesEntry
  1284.     endif
  1285.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1286.         Debug-Output "REGISTRY.INF: Failed to create services node."
  1287.         CloseRegKey $(ServicesKey)
  1288.         goto error_MakeServicesEntry
  1289.     endif
  1290.     set MiniportKey = $($R1)
  1291.     ifstr(i) $($2) != ""
  1292.         set KeyPath   = {{$($5), $(NoTitle), $(MaskAllAccess)}}
  1293.         set KeyValues = $($2)
  1294.         shell "" CreateKey $(MiniportKey) $(KeyPath) $(KeyValues)
  1295.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1296.             CloseRegKey $(ServicesKey)
  1297.             CloseRegKey $(MiniportKey)
  1298.             goto error_MakeServicesEntry
  1299.         endif
  1300.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1301.             CloseRegKey $(ServicesKey)
  1302.             CloseRegKey $(MiniportKey)
  1303.             goto error_MakeServicesEntry
  1304.         endif
  1305.         set ParametersKey = $($R1)
  1306.  
  1307.        ForListDo $($3)
  1308.             set-sub DeviceNum = $(#) 1
  1309. ;fujino  960226
  1310. ;           set EntryName = "Device"$(DeviceNum)
  1311.            set EntryName = $($6)
  1312.  
  1313.             set KeyPath   = {{$(EntryName), $(NoTitle), $(MaskAllAccess)}}
  1314.             set KeyValues = $($3)
  1315.             shell "" CreateKey $(ParametersKey) $(KeyPath) $(KeyValues)
  1316.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1317.                 CloseRegKey $(ServicesKey)
  1318.                 CloseRegKey $(MiniportKey)
  1319.                 CloseRegKey $(ParametersKey)
  1320.                 goto error_MakeServicesEntry
  1321.             endif
  1322.             ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1323.                 CloseRegKey $(ServicesKey)
  1324.                 CloseRegKey $(MiniportKey)
  1325.                 CloseRegKey $(ParametersKey)
  1326.                 goto error_MakeServicesEntry
  1327.             endif
  1328.             CloseRegKey $($R1)
  1329.        EndForListDo
  1330.  
  1331.         CloseRegKey $(ParametersKey)
  1332.     endif
  1333.     CloseRegKey $(MiniportKey)
  1334.     ifstr(i) $($4) != {}
  1335.         OpenRegKey $(ServicesKey) "" "eventlog\system" $(MaskAllAccess) EventLogKey
  1336.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1337.             Debug-Output "REGISTRY.INF: Failed to open eventlog key"
  1338.             CloseRegKey $(ServicesKey)
  1339.             goto error_MakeServicesEntry
  1340.         endif
  1341.         set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  1342.         set KeyValues = $($4)
  1343.         shell "" CreateKey $(EventLogKey) $(KeyPath) $(KeyValues)
  1344.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1345.             CloseRegKey $(ServicesKey)
  1346.             CloseRegKey $(EventLogKey)
  1347.             goto error_MakeServicesEntry
  1348.         endif
  1349.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1350.             CloseRegKey $(ServicesKey)
  1351.             CloseRegKey $(EventLogKey)
  1352.             goto error_MakeServicesEntry
  1353.         endif
  1354.         CloseRegKey $($R1)
  1355.         CloseRegKey $(EventLogKey)
  1356.     endif
  1357.     CloseRegKey $(ServicesKey)
  1358.     set Status = STATUS_SUCCESSFUL
  1359.     goto finish_MakeServicesEntry
  1360. error_MakeServicesEntry = +
  1361.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  1362. finish_MakeServicesEntry = +
  1363.     Return $(Status)
  1364.  
  1365. [GetServicesEntryStart]
  1366.     set Status     = STATUS_FAILED
  1367.     set StartValue = ""
  1368.     read-syms RegistryConstants
  1369.     Debug-Output "REGISTRY.INF: Get Services node Start value: "$($0)
  1370.     set KeyName = "system\"$(!STF_CONTROLSET)"\services\"$($0)
  1371.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  1372.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1373.         Debug-Output "REGISTRY.INF: Couldn't open services node for read access"
  1374.         goto finish_GetServicesEntryStart
  1375.     endif
  1376.     GetRegValue $(KeyHandle) "Start" StartValueList
  1377.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1378.         Debug-Output "REGISTRY.INF: Couldn't read Start value"
  1379.         CloseRegKey $(KeyHandle)
  1380.         goto finish_GetServicesEntryStart
  1381.     endif
  1382.     CloseRegKey $(KeyHandle)
  1383.     set StartValue = *($(StartValueList), 4)
  1384.     set Status = STATUS_SUCCESSFUL
  1385. finish_GetServicesEntryStart = +
  1386.     Return $(Status) $(StartValue)
  1387. [RemoveServicesEntry]
  1388.     set Status = STATUS_FAILED
  1389.     read-syms RegistryConstants
  1390.     Debug-Output "REGISTRY.INF: Removing Services node: "$($0)
  1391.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  1392.     Return $($R0)
  1393. [MakeSetupKey]
  1394.     set Status = STATUS_FAILED
  1395.     read-syms  RegistryConstants
  1396.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  1397.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1398.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1399.         goto finish_MakeSetupKey
  1400.     endif
  1401.     set KeyPath   = { +
  1402.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  1403.                     }
  1404.     set KeyValues = {}
  1405.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  1406.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1407.         CloseRegKey $(ControlKey)
  1408.         goto finish_MakeSetupKey
  1409.     endif
  1410.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1411.         CloseRegKey $(ControlKey)
  1412.         goto finish_MakeSetupKey
  1413.     endif
  1414.     CloseRegKey $($R1)
  1415.     CloseRegKey $(ControlKey)
  1416.     set Status = STATUS_SUCCESSFUL
  1417. finish_MakeSetupKey = +
  1418.     Return $(Status)
  1419. [CheckSetupModify]
  1420.     set Status = STATUS_FAILED
  1421.     read-syms  RegistryConstants
  1422.     LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
  1423.     ifstr(i) $(STATUS) == "YES"
  1424.         set Status = STATUS_SUCCESSFUL
  1425.     endif
  1426.     Return $(Status)
  1427. [MakeSetupOptionEntry]
  1428.     set Status = STATUS_FAILED
  1429.     read-syms  RegistryConstants
  1430.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  1431.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1432.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1433.         goto finish_MakeSetupOptionEntry
  1434.     endif
  1435.     set KeyPath   = { +
  1436.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  1437.                     }
  1438.     set KeyValues = { +
  1439.                       {$($0), $(NoTitle), $(!REG_VT_SZ), $($1)} +
  1440.                     }
  1441.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  1442.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1443.         CloseRegKey $(ControlKey)
  1444.         goto finish_MakeSetupOptionEntry
  1445.     endif
  1446.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1447.         CloseRegKey $(ControlKey)
  1448.         goto finish_MakeSetupOptionEntry
  1449.     endif
  1450.     CloseRegKey $($R1)
  1451.     CloseRegKey $(ControlKey)
  1452.     set Status = STATUS_SUCCESSFUL
  1453. finish_MakeSetupOptionEntry = +
  1454.     Return $(Status)
  1455. [ResetSetupProgressValue]
  1456.     set Status = STATUS_FAILED
  1457.     read-syms  RegistryConstants
  1458.     OpenRegKey $(!REG_H_LOCAL) "" "system\setup" $(MaskAllAccess) SetupKey
  1459.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1460.         Debug-Output "REGISTRY.INF: Failed to open Setup key"
  1461.         goto finish_ResetSetupProgressValue
  1462.     endif
  1463.     set ValueInfo = {SystemSetupInProgress, $(NoTitle), $(!REG_VT_DWORD), 0}
  1464.     SetRegValue $(SetupKey) $(ValueInfo)
  1465.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1466.         CloseRegKey $(SetupKey)
  1467.         Debug-Output "REGISTRY.INF: Couldn't set SystemSetupInProgress value"
  1468.         goto finish_ResetSetupProgressValue
  1469.     endif
  1470.     ifstr(i) $(!STF_NTUPGRADE) == "YES"
  1471.         set ValueInfo = {UpgradeInProgress, $(NoTitle), $(!REG_VT_DWORD), 0}
  1472.         SetRegValue $(SetupKey) $(ValueInfo)
  1473.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1474.             CloseRegKey $(SetupKey)
  1475.             Debug-Output "REGISTRY.INF: Couldn't set UpgradeInProgress value"
  1476.             goto finish_ResetSetupProgressValue
  1477.         endif
  1478.     endif
  1479.     CloseRegKey $(SetupKey)
  1480.     set Status = STATUS_SUCCESSFUL
  1481. finish_ResetSetupProgressValue = +
  1482.     Return $(Status)
  1483. [ModifyServicesEntry]
  1484.     read-syms RegistryConstants
  1485.     set Status = STATUS_FAILED
  1486.     set StartValue = $($1)
  1487.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupChangeServiceStart $($0) $(StartValue)
  1488.     ifstr(i) $(STATUS) != "SUCCESS"
  1489.         Debug-Output "REGISTRY.INF: ModifyServicesEntry: SetupChangeServiceStart function failed"
  1490.         goto finish_ModifyServicesEntry
  1491.     endif
  1492.     set Status = STATUS_SUCCESSFUL
  1493. finish_ModifyServicesEntry = +
  1494.     Return $(Status)
  1495. [CreateKey]
  1496.     set Status = STATUS_FAILED
  1497.     read-syms RegistryConstants
  1498.     set BaseHandle = $($0)
  1499.     set KeyHandle  = $(BaseHandle)
  1500.  
  1501.    ForListDo $($1)
  1502.         set KeyInfo = $($)
  1503.         set KeyName = *($(KeyInfo), 1)
  1504.         OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1505.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1506.             Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  1507.             set RegLastError = 0
  1508.             CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
  1509.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1510.                 set Status = STATUS_ERROR_CREATEKEY
  1511.                 Debug-Output "REGISTRY.INF: Error in creating key"
  1512.                 goto endcreate
  1513.             endif
  1514.         endif
  1515.         ifstr(i) $(BaseHandle) != $($0)
  1516.             CloseRegKey $(BaseHandle)
  1517.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1518.                 set Status = STATUS_ERROR_CREATEKEY
  1519.                 Debug-Output "REGISTRY.INF: Error in closing base handle"
  1520.                 goto endcreate
  1521.             endif
  1522.         endif
  1523.         set BaseHandle = $(KeyHandle)
  1524.     EndForListDo
  1525.  
  1526.     ifstr(i) $($2) != {}
  1527.         shell "" AddValueList $(KeyHandle) $($2)
  1528.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1529.             set Status = STATUS_ERROR_CREATEVALUE
  1530.             goto endcreate
  1531.         endif
  1532.     endif
  1533.  
  1534.     set Status = STATUS_SUCCESSFUL
  1535. endcreate = +
  1536.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1537.         Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  1538.     endif
  1539.     Return $(Status) $(KeyHandle)
  1540. [AddValueList]
  1541.    set Status = STATUS_FAILED
  1542.    read-syms RegistryConstants
  1543.    ForListDo $($1)
  1544.        SetRegValue $($0) $($)
  1545.        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1546.            Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
  1547.            goto end_addvaluelist
  1548.        endif
  1549.    EndForListDo
  1550.    set Status = STATUS_SUCCESSFUL
  1551. end_addvaluelist = +
  1552.    return $(Status)
  1553. [EnableCrashDump]
  1554.     OpenRegKey $(!REG_H_LOCAL) "" system\currentcontrolset\control\CrashControl $(!REG_KEY_SET_VALUE) CrashControlKey
  1555.     ifstr $(CrashControlKey) != ""
  1556.         shell "" AddValueList $(CrashControlKey) {{LogEvent        ,0,$(!REG_VT_DWORD),1},+
  1557.                                                   {SendAlert       ,0,$(!REG_VT_DWORD),1},+
  1558.                                                   {CrashDumpEnabled,0,$(!REG_VT_DWORD),1},+
  1559.                                                   {AutoReboot      ,0,$(!REG_VT_DWORD),1}}
  1560.         CloseRegKey $(CrashControlKey)
  1561.     endif
  1562.     return
  1563. [FixQuotaEntries]
  1564.     set Status       = STATUS_SUCCESSFUL
  1565.     read-syms RegistryConstants
  1566.     set OldPagedPoolSize = 0
  1567.     set OldRegistrySizeLimit = 0
  1568.     set NewPagedPoolSize     = 0
  1569.     set NewRegistrySizeLimit = 0
  1570.     set BogusPagedPoolSize     = 48
  1571.     set BogusRegistrySizeLimit = 24
  1572.     set MBMultiplier  = 1024
  1573.     set-mul MBMultiplier  = $(MBMultiplier) 1024
  1574.     set-mul BogusPagedPoolSize     = $(BogusPagedPoolSize)     $(MBMultiplier)
  1575.     set-mul BogusRegistrySizeLimit = $(BogusRegistrySizeLimit) $(MBMultiplier)
  1576.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  1577.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1578.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1579.         Debug-Output "REGISTRY.INF: Couldn't open memory management key"
  1580.         set Status = STATUS_FAILED
  1581.         goto fix_next_entry
  1582.     endif
  1583.     GetRegValue $(KeyHandle) "PagedPoolSize" OldPagedPoolSizeInfo
  1584.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1585.         Debug-Output "REGISTRY.INF: Couldn't read PagedPoolSize value"
  1586.         set Status = STATUS_FAILED
  1587.         goto close_first_handle
  1588.     endif
  1589.     set OldPagedPoolSize = *($(OldPagedPoolSizeInfo), 4)
  1590.     ifint $(OldPagedPoolSize) == $(BogusPagedPoolSize)
  1591.         set ValueInfo = {PagedPoolSize, $(NoTitle), $(!REG_VT_DWORD), $(NewPagedPoolSize)}
  1592.         SetRegValue $(KeyHandle) $(ValueInfo)
  1593.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1594.             set Status = STATUS_FAILED
  1595.             Debug-Output "REGISTRY.INF: Couldn't set PagePoolSize value"
  1596.         endif
  1597.     endif
  1598. close_first_handle = +
  1599.     CloseRegKey $(KeyHandle)
  1600. fix_next_entry = +
  1601.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control"
  1602.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1603.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1604.         set Status = STATUS_FAILED
  1605.         Debug-Output "REGISTRY.INF: Couldn't open control key"
  1606.         goto end_FixQuotaEntries
  1607.     endif
  1608.     GetRegValue $(KeyHandle) "RegistrySizeLimit" OldRegistrySizeLimitInfo
  1609.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1610.         Debug-Output "REGISTRY.INF: Couldn't read RegistrySizeLimit value"
  1611.         set Status = STATUS_FAILED
  1612.         goto close_second_handle
  1613.     endif
  1614.     set OldRegistrySizeLimit = *($(OldRegistrySizeLimitInfo), 4)
  1615.     ifint $(OldRegistrySizeLimit) == $(BogusRegistrySizeLimit)
  1616.         set ValueInfo = {RegistrySizeLimit, $(NoTitle), $(!REG_VT_DWORD), $(RegistrySizeLimit)}
  1617.         SetRegValue $(KeyHandle) $(ValueInfo)
  1618.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1619.             set Status = STATUS_FAILED
  1620.             Debug-Output "REGISTRY.INF: Couldn't set RegistrySizeLimit value"
  1621.         endif
  1622.     endif
  1623. close_second_handle = +
  1624.     CloseRegKey $(KeyHandle)
  1625. end_FixQuotaEntries = +
  1626.     Return $(Status)
  1627.  
  1628.  
  1629.  
  1630.  
  1631. ;; end registry.inf
  1632.  
  1633. ;**************************************************************************
  1634. ; PROGRESS GUAGE VARIABLES
  1635. ;**************************************************************************
  1636.  
  1637. [ProgressCopyENG]
  1638.     ProCaption   = "Windows NT セットアップ"
  1639.     ProCancel    = "キャンセル"
  1640.     ProCancelMsg = "Windows NT は正しく組み込まれていません。"+
  1641.                    "ファイルのコピーを中止しますか?"
  1642.     ProCancelCap = "セットアップ メッセージ"
  1643.     ProText1     = "コピー元:"
  1644.     ProText2     = "コピー先:"
  1645.  
  1646. [StringsENG]
  1647.     String1 = "RSA-98シリーズ"
  1648.     String2 = "RSAー98シリーズ ファイルへのドライブ名からのフルパスを入力してください。"+
  1649. ;              "セットアップ フロッピー ディスクからファイルを組み込む場合は、"+
  1650. ;              "ドライブ名 (A: など) を入力してください。"+
  1651. ;              "セットアップは適切なディスクを挿入するよう指示します。"+
  1652.               "これらの操作が終わったら[続行]を選んでください。"
  1653. ;    String3 = "シリアルポート(2チャンネル)を削除すると、システムは"+
  1654. ;              "使用不可になる可能性があります。削除してもよろしいですか?"
  1655.  
  1656. [Source Media Descriptions]
  1657. ;;    1  = "PC-9800 シリアルポート(2チャンネル) Controller Drivers Disk 1 of 1"  , TAGFILE = disk1
  1658. ;      1  = "アイ・オー・データ 高速シリアルボード RSA-98シリーズ サポートソフトウェアディスク"  , TAGFILE = disk1
  1659.       1  = "アイ・オー・データ 高速シリアルボード RSA-98シリーズ サポートソフトウェアディスク"
  1660.  
  1661. [Files-RsDrivers]
  1662. ;;SerRSA98 = 1,SerRSA98.sys , SIZE=999
  1663.   SerRSA98 = 1,SerRSA98.sys , SIZE=999
  1664.