home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 February / VPR9602A.ISO / mpr / i386 / update.inf < prev   
INI File  |  1995-10-27  |  37KB  |  852 lines

  1. [FileKeyedClasses]
  2.     Hal            = hal.dll
  3.     Ntoskrnl       = ntoskrnl.exe
  4. [FilesKeyedSections]
  5.     FilesHal       = $(STF_HALDEST)
  6.     FilesNtoskrnl  = $(STF_WINDOWSSYSPATH)
  7. [FilesHal]
  8. [FilesNtoskrnl]
  9. [FileSections]
  10.     FilesPrimary        = C:
  11.     FilesOsLoader       = $(STF_OSLDEST)
  12.     FilesPal            = $(STF_HALDEST)
  13.     FilesWinnt          = $(STF_WINDOWSPATH)
  14.     FilesSystem32       = $(STF_WINDOWSSYSPATH)
  15.     FilesSystem         = $(STF_WINDOWSPATH)\system
  16.     FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
  17.     FilesConfig         = $(STF_WINDOWSSYSPATH)\config
  18.     FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
  19.     FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)
  20.     FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
  21.     FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
  22.     FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
  23.     FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
  24.     FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
  25.     FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
  26.     FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
  27.     FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
  28. [FileSectionsCopyAlways]
  29.     FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
  30.     FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
  31. [FileSectionsWINNT]
  32.     FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
  33. [FileSectionsLANMANNT]
  34.     FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
  35. [FileSectionsCopyAlwaysWINNT]
  36.     FilesSystem32CopyAlwaysWinnt = $(STF_WINDOWSSYSPATH)
  37. [FileSectionsCopyAlwaysLANMANNT]
  38.     FilesSystem32CopyAlwaysLanmanNT = $(STF_WINDOWSSYSPATH)
  39. [FilesPrimary]
  40.  
  41. [FilesOsLoader]
  42.  
  43. [FilesPal]
  44.  
  45. [FilesWinnt]
  46. [FilesSystem32]
  47. 1 = 1, IPXCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  48. 2 = 1, TCPCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  49. 3 = 1, IPXROUTE.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
  50. 4 = 1, CONTROL.HLP, RENAME=$(NEWFILE), NOLOG, UNDO
  51. 5 = 1, NWSAP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  52. 6 = 1, IPRIP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  53. 7 = 1, RELAY.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  54. 8 = 1, ROUTER.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
  55. 9 = 1, TRACE.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  56.  
  57. [FilesSystem]
  58. [FilesDrivers]
  59. [FilesConfig]
  60. [FilesWinspool]
  61. [FilesPrnDriver]
  62. [FilesPrnProc]
  63. [FilesDbgCom]
  64. [FilesDbgCpl]
  65. [FilesDbgDll]
  66. [FilesDbgDrv]
  67. [FilesDbgExe]
  68. [FilesDbgScr]
  69. [FilesDbgSys]
  70.  
  71. [FilesInfWinnt]
  72. 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  73. 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  74. 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  75.  
  76. [FilesInfLanmanNT]
  77. 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  78. 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  79. 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  80.  
  81. [FilesSystem32CopyAlways]
  82. [FilesDriversCopyAlways]
  83.  
  84. [FilesSystem32CopyAlwaysWINNT]
  85. 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  86.  
  87. [FilesSystem32CopyAlwaysLANMANNT]
  88. 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  89. 2 = 1, OEMNSVBR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  90. 3 = 1, OEMNSVIR.INF, RENAME=$(NEWFILE), NOLOG, UNDO
  91. 4 = 1, RACFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
  92.  
  93. [ProcessorID]
  94.     ProcessorID_I386  = I386
  95.     ProcessorID_I486  = I486
  96.     ProcessorID_I586  = I586
  97.     ProcessorID_R4000 = R4000
  98. [UiVars]
  99.     STF_PLATFORMDET    = "" ? $(!LIBHANDLE) GetPlatform
  100.     STF_CSDVER         = 512
  101.     STF_BUILDVER       = 1057
  102.     STF_CSD1_NT35      = 256
  103.     STF_NT31_BUILDVER  = 528
  104.     STF_NT35_BUILDVER  = 807
  105.     STF_NT351_BUILDVER = 1057
  106.     STF_NT351_MAJORVER = 3
  107.     STF_NT351_MINORVER = 51
  108.     STF_PRIMARY        = "C:"
  109.     STF_NTDRIVE        = ""
  110.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  111.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  112.     STF_CONTROLSET     = CurrentControlSet
  113.     VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
  114.     VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
  115.     VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
  116.     DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
  117. [FreeSpaceI386]
  118.     RequiredFreeWinnt  = 5
  119. [FreeSpaceMips]
  120.     RequiredFreeWinnt  = 5
  121. [FreeSpaceppc]
  122.     RequiredFreeWinnt  = 5
  123. [FreeSpaceAlpha]
  124.     RequiredFreeWinnt  = 5
  125. [NVRAMVars]
  126.     SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
  127.     OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
  128.     OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
  129.     OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
  130. [Shell Commands]
  131.     set-title "Windows NT Setup"
  132.     set-subst CR = "\r"
  133.     set-subst LF = "\n"
  134.     set STF_LANGUAGE = ENG
  135.     read-syms Strings
  136.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
  137.     set BillboardPushed = TRUE
  138.     set !LIBHANDLE      = ""
  139.     set !PATCHLIBHANDLE = ""
  140.     install   LoadSetupLibrary
  141.     read-syms ProductType
  142.     ifstr(i) $(!STF_PLATFORM) == I386
  143.         set STF_PRNPLATFORM = "w32x86"
  144.     else-ifstr(i) $(!STF_PLATFORM) == Mips
  145.         set STF_PRNPLATFORM = "w32mips"
  146.     else-ifstr(i) $(!STF_PLATFORM) == ppc
  147.         set STF_PRNPLATFORM = "w32ppc"
  148.     else-ifstr(i) $(!STF_PLATFORM) == Alpha
  149.         set STF_PRNPLATFORM = "w32alpha"
  150.     endif
  151.     read-syms UiVars
  152.     detect    UiVars
  153.     read-syms FreeSpace$(!STF_PLATFORM)
  154.     ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
  155.          ifstr(i) $(BillboardPushed) == TRUE
  156.              shell "subroutn.inf" PopBillboard
  157.              set BillboardPushed = FALSE
  158.          endif
  159.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
  160.          goto patchnotdone
  161.     endif
  162.     shell "registry.inf" CheckSetupModify
  163.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  164.         ifstr(i) $(BillboardPushed) == TRUE
  165.             shell "subroutn.inf" PopBillboard
  166.             set BillboardPushed = FALSE
  167.         endif
  168.         Debug-Output "shelling CheckSetupModify failed"
  169.         goto patchnotdone
  170.     else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
  171.         ifstr(i) $(BillboardPushed) == TRUE
  172.             shell "subroutn.inf" PopBillboard
  173.             set BillboardPushed = FALSE
  174.         endif
  175.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  176.         goto patchnotdone
  177.     endif
  178.     install   LoadPatchLibrary
  179.     shell "" GetCheckedFree
  180.     ifint $($ShellCode) == $(!SHELL_CODE_OK)
  181.         ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
  182.             ifstr(i) $($R1) == "checked"
  183.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15)
  184.                 goto patchnotdone
  185.             endif
  186.         endif
  187.     endif
  188.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMajorVersion
  189.     ifint $(STATUS) > $(STF_NT351_MAJORVER)
  190.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  191.         goto patchnotdone
  192.     else-ifint $(STATUS) = $(STF_NT351_MAJORVER)
  193.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMinorVersion
  194.         ifint $(STATUS) > $(STF_NT351_MINORVER)
  195.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  196.             goto patchnotdone
  197.         endif
  198.     endif
  199.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion
  200.     ifint $(STATUS) <= $(STF_NT35_BUILDVER)
  201.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String16)
  202.         goto patchnotdone
  203.     else-ifint $(STATUS) < $(STF_NT351_BUILDVER)
  204.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17)
  205.         goto patchnotdone
  206.     else-ifint $(STATUS) > $(STF_NT351_BUILDVER)
  207.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  208.         goto patchnotdone
  209.     endif
  210.     ifstr(i) $(!STF_PLATFORM) == ppc
  211.         OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion" 33554432 KeyCurrentVersion
  212.         ifstr(i) $(KeyCurrentVersion) != ""
  213.             GetRegValue $(KeyCurrentVersion) "CSDVersion" CSDVersionList
  214.             ifstr(i) $(CSDVersionList) == "Power Managed Version X"
  215.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
  216.                 goto patchnotdone
  217.             endif
  218.             GetRegValue $(KeyCurrentVersion) "PowerManagedVersion" PMVersionList
  219.             ifstr(i) $(PMVersionList) != ""
  220.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
  221.                 goto patchnotdone
  222.             endif
  223.         endif
  224.     endif
  225. skip_patchvercheck = +
  226.     GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
  227.     ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
  228.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
  229.         goto patchnotdone
  230.     endif
  231.     set STF_PRODUCT = ""
  232.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
  233.     ifstr(i) $(KeyProductOption) != ""
  234.         GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
  235.         set TempProductType = *($(ProductTypeList),4)
  236.         ifstr(i) $(TempProductType) == "winnt"
  237.             set !STF_PRODUCT = WINNT
  238.             set !PRODUCT_DIR = WINNT
  239.         else-ifstr(i) $(TempProductType) == "lanmannt"
  240.             set !STF_PRODUCT = LANMANNT
  241.             set !PRODUCT_DIR = NTAS
  242.         else-ifstr(i) $(TempProductType) == "servernt"
  243.             set !STF_PRODUCT = SERVERNT
  244.             set !PRODUCT_DIR = NTAS
  245.         endif
  246.         CloseRegKey $(KeyProductOptions)
  247.     endif
  248.     ifstr(i) $(STF_PRODUCT) == ""
  249.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
  250.         goto patchnotdone
  251.     endif
  252.     ifstr(i) $(!STF_PLATFORM) == I386
  253.         set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
  254.         set STF_OSLDEST = C:\
  255.     else
  256.         read-syms NVRAMVars
  257.         detect    NVRAMVars
  258.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
  259.                                                          $(SystemPartition) +
  260.                                                          $(OsLoader)        +
  261.                                                          $(OsLoadPartition) +
  262.                                                          $(OsLoadFilename)
  263.         ifstr(i) $(STATUS) == ERROR
  264.             goto patchnotdone
  265.         else
  266.             set STF_OSLDEST = $(STATUS)
  267.             set STF_HALDEST = $(STATUS)
  268.         endif
  269.     endif
  270.     read-syms FilesKeyedSections
  271.     set KeyedClassKeys  = ^(FileKeyedClasses, 0)
  272.     set KeyedClassFiles = ^(FileKeyedClasses, 1)
  273.     set KeyedClassFilesList = {}
  274.     ForListDo $(KeyedClassKeys)
  275.         set TmpKey       = Files$($)
  276.         set TmpFile      = #(FileKeyedClasses, $($), 1)
  277.         set TmpFilePath  = $($(TmpKey))\$(TmpFile)
  278.         set KeyedClassFilesList = >($(KeyedClassFilesList), $(TmpFilePath))
  279.     EndForListDo
  280.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFilesList)
  281.     ifstr(i) $(STATUS) == ERROR
  282.         goto patchnotdone
  283.     else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
  284.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
  285.         goto patchnotdone
  286.     else
  287.         ForListDo $(KeyedClassKeys)
  288.             set $($)Type = *($(STATUS), $(#))
  289.         EndForListDo
  290.     endif
  291.     ifstr(i) $(BillboardPushed) == TRUE
  292.         shell "subroutn.inf" PopBillboard
  293.         set BillboardPushed = FALSE
  294.     endif
  295.     shell "" QueryOkCancel $(String9)
  296.     ifstr(i) $($R1) == "OK"
  297.     else
  298.         set String = $(String12)
  299.         goto finish2
  300.     endif
  301.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
  302.     set BillboardPushed = TRUE
  303.     set MoveFileExList  = {}
  304.     read-syms FileSections
  305.     set FileSectionsList = ^(FileSections, 0)
  306.     set FileSource  = $(!STF_SRCDIR)
  307.     ForListDo $(FileSectionsList)
  308.         set FileSection = $($)
  309.         set FileDest    = $($($))
  310.         set FileList    = ^($(FileSection), 0)
  311.         ForListDo $(FileList)
  312.             set FileKey = $($)
  313.             set File    = #($(FileSection), $(FileKey), 2)
  314.             set FileDestFullPath = $(FileDest)\$(File)
  315.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  316.             ifstr(i) $(STATUS) == YES
  317.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  318.                 ifstr(i) $(STATUS) == ERROR
  319.                     goto patchnotdone
  320.                 else
  321.                     ifstr(i) $(STATUS) == "YES"
  322.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  323.                         ifstr(i) $(NEWFILE) == ERROR
  324.                             goto patchnotdone
  325.                         else
  326.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  327.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  328.                         endif
  329.                     else
  330.                         set NEWFILE = $(File)
  331.                     endif
  332.                     install Install-File
  333.                 endif
  334.             endif
  335.         EndForListDo
  336.     EndForListDO
  337.     set FileSource  = $(!STF_SRCDIR)
  338.     ForListDo $(KeyedClassKeys)
  339.         set FileSection = Files$($)
  340.         set FileDest    = $($(FileSection))
  341.         set FileKey     = $($($)Type)
  342.         set KeyedClassChoices = ^(Files$($), 0)
  343.         ifcontains(i) $(FileKey) in $(KeyedClassChoices)
  344.             set File             = #(FileKeyedClasses, $($), 1)
  345.             set FileDestFullPath = $(FileDest)\$(File)
  346.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  347.             ifstr(i) $(STATUS) == YES
  348.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  349.                 ifstr(i) $(STATUS) == ERROR
  350.                     goto patchnotdone
  351.                 else
  352.                     ifstr(i) $(STATUS) == "YES"
  353.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  354.                         ifstr(i) $(NEWFILE) == ERROR
  355.                             goto patchnotdone
  356.                         else
  357.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  358.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  359.                         endif
  360.                     else
  361.                         set NEWFILE = $(File)
  362.                     endif
  363.                     install Install-File
  364.                 endif
  365.             endif
  366.         endif
  367.     EndForListDo
  368.     ifstr(i) $(STF_PRODUCT) == "WINNT"
  369.         set TEMP_PRODUCT = WINNT
  370.     else
  371.         set TEMP_PRODUCT = LANMANNT
  372.     endif
  373.     read-syms FileSections$(TEMP_PRODUCT)
  374.     set FileSectionsList = ^(FileSections$(TEMP_PRODUCT), 0)
  375.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  376.     ForListDo $(FileSectionsList)
  377.         set FileSection = $($)
  378.         set FileDest    = $($($))
  379.         set FileList    = ^($(FileSection), 0)
  380.         ForListDo $(FileList)
  381.             set FileKey = $($)
  382.             set File    = #($(FileSection), $(FileKey), 2)
  383.             set FileDestFullPath = $(FileDest)\$(File)
  384.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  385.             ifstr(i) $(STATUS) == YES
  386.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  387.                 ifstr(i) $(STATUS) == ERROR
  388.                     goto patchnotdone
  389.                 else
  390.                     ifstr(i) $(STATUS) == "YES"
  391.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  392.                         ifstr(i) $(NEWFILE) == ERROR
  393.                             goto patchnotdone
  394.                         else
  395.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  396.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  397.                         endif
  398.                     else
  399.                         set NEWFILE = $(File)
  400.                     endif
  401.                     install Install-File
  402.                 endif
  403.             endif
  404.         EndForListDo
  405.     EndForListDO
  406.     ifstr(i) $(BillboardPushed) == TRUE
  407.         shell "subroutn.inf" PopBillboard
  408.         set BillboardPushed = FALSE
  409.     endif
  410.     read-syms FileSectionsCopyAlways
  411.     set FileSectionsList = ^(FileSectionsCopyAlways, 0)
  412.     set FileSource  = $(!STF_SRCDIR)
  413.     ForListDo $(FileSectionsList)
  414.         set FileSection = $($)
  415.         set FileDest    = $($($))
  416.         set FileList    = ^($(FileSection), 0)
  417.         ForListDo $(FileList)
  418.             set FileKey = $($)
  419.             set File    = #($(FileSection), $(FileKey), 2)
  420.             set NEWFILE = $(File)
  421.             set FileDestFullPath = $(FileDest)\$(File)
  422.             install Install-File
  423.         EndForListDo
  424.     EndForListDO
  425.     read-syms FileSectionsCopyAlways$(TEMP_PRODUCT)
  426.     set FileSectionsList = ^(FileSectionsCopyAlways$(TEMP_PRODUCT), 0)
  427.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  428.     ForListDo $(FileSectionsList)
  429.         set FileSection = $($)
  430.         set FileDest    = $($($))
  431.         set FileList    = ^($(FileSection), 0)
  432.         ForListDo $(FileList)
  433.             set FileKey = $($)
  434.             set File    = #($(FileSection), $(FileKey), 2)
  435.             set NEWFILE = $(File)
  436.             set FileDestFullPath = $(FileDest)\$(File)
  437.             install Install-File
  438.         EndForListDo
  439.     EndForListDO
  440.     read-syms ProgressCopy$(!STF_LANGUAGE)
  441.     install   Install-DoCopy
  442.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  443.         goto patchnotdone
  444.     else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  445.         goto patchnotdone
  446.     endif
  447. processmovefileex=+
  448.     ForListDo $(MoveFileExList)
  449.         set ExistingPath = *($($), 1)
  450.         set NewPath      = *($($), 2)
  451.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
  452.         ifstr(i) $(STATUS) == ERROR
  453.             goto patchnotdone
  454.         endif
  455.     EndForListDo
  456. patchdone =+
  457.     ifstr(i) $(BillboardPushed) == TRUE
  458.         shell "subroutn.inf" PopBillboard
  459.         set BillboardPushed = FALSE
  460.     endif
  461.     shell "" DoRegistryModifications $(!STF_CSDVER)
  462.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  463.     ui start "SetupDone"
  464.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  465.         ui pop 1
  466.         goto rebootend
  467.     else
  468.         ui pop 1
  469.         goto finish1
  470.     endif
  471. patchnotdone =+
  472.     set String = $(String2)
  473. finish2 =+
  474.     ifstr(i) $(BillboardPushed) == TRUE
  475.         shell "subroutn.inf" PopBillboard
  476.         set BillboardPushed = FALSE
  477.     endif
  478.     shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
  479.     goto finish1
  480. finish1 =+
  481.     install   FreeSetupLibrary
  482. finish =+
  483.     install   FreePatchLibrary
  484.     exit
  485. rebootend =+
  486.     set Reboot = YES
  487.     install   Install-Shutdown
  488.     goto finish1
  489.     exit
  490. [LoadPatchLibrary]
  491.     LoadLibrary "x" patchdll.dll !PATCHLIBHANDLE
  492.     exit
  493. [FreePatchLibrary]
  494.     ifstr(i) $(!PATCHLIBHANDLE) != ""
  495.         FreeLibrary $(!PATCHLIBHANDLE)
  496.     endif
  497.     exit
  498. [LoadSetupLibrary]
  499.     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
  500.     exit
  501. [FreeSetupLibrary]
  502.     ifstr(i) $(!LIBHANDLE) != ""
  503.         FreeLibrary $(!LIBHANDLE)
  504.     endif
  505.     exit
  506. [Install-File]
  507.     set STF_VITAL = ""
  508.     AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
  509.     exit
  510. [Install-DoCopy]
  511.     CopyFilesInCopyList
  512.     exit
  513. [Install-Shutdown]
  514.     LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
  515.     exit
  516. [RegistryConstants]
  517.     MaskAllAccess          = 33554432
  518.     NoTitle                = 0
  519.     RegLastError           = $(!REG_ERROR_SUCCESS)
  520. [DoRegistryModifications]
  521.     set Status = STATUS_FAILED
  522.     read-syms RegistryConstants
  523.     set KeyPath   = { +
  524.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  525.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  526.                      {Package,                 $(NoTitle), $(MaskAllAccess)}  +
  527.                     }
  528.     set KeyValues = { +
  529.                      {"", $(NoTitle), $(!REG_VT_SZ), "Package" } +
  530.                     }
  531.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  532.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  533.         goto endCSDVersionCreate
  534.     endif
  535.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  536.         goto endCSDVersionCreate
  537.     else
  538.         CloseRegKey $($R1)
  539.     endif
  540.     set KeyPath   = { +
  541.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  542.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  543.                      {CLSID,                   $(NoTitle), $(MaskAllAccess)}  +
  544.                      {"{0003000C-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  545.                     }
  546.     set KeyValues = { +
  547.                      {"", $(NoTitle), $(!REG_VT_SZ), "Package" } +
  548.                     }
  549.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  550.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  551.         goto endCSDVersionCreate
  552.     endif
  553.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  554.         goto endCSDVersionCreate
  555.     else
  556.         CloseRegKey $($R1)
  557.     endif
  558.     set KeyPath   = { +
  559.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  560.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  561.                      {Interface,               $(NoTitle), $(MaskAllAccess)}  +
  562.                      {"{00020400-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  563.                      {ProxyStubClsid,          $(NoTitle), $(MaskAllAccess)}  +
  564.                     }
  565.     set KeyValues = { +
  566.                      {"", $(NoTitle), $(!REG_VT_SZ), "{00020420-0000-0000-C000-000000000046}" } +
  567.                     }
  568.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  569.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  570.         goto endCSDVersionCreate
  571.     endif
  572.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  573.         goto endCSDVersionCreate
  574.     else
  575.         CloseRegKey $($R1)
  576.     endif
  577.     set KeyPath   = { +
  578.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  579.                      {Classes,                 $(NoTitle), $(MaskAllAccess)}, +
  580.                      {Interface,               $(NoTitle), $(MaskAllAccess)}  +
  581.                      {"{00020400-0000-0000-C000-000000000046}",     $(NoTitle), $(MaskAllAccess)}  +
  582.                      {ProxyStubClsid32,        $(NoTitle), $(MaskAllAccess)}  +
  583.                     }
  584.     set KeyValues = { +
  585.                      {"", $(NoTitle), $(!REG_VT_SZ), "{00020420-0000-0000-C000-000000000046}" } +
  586.                     }
  587.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  588.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  589.         goto endCSDVersionCreate
  590.     endif
  591.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  592.         goto endCSDVersionCreate
  593.     else
  594.         CloseRegKey $($R1)
  595.     endif
  596.     set KeyPath   = { +
  597.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  598.                      {Microsoft,               $(NoTitle), $(MaskAllAccess)}, +
  599.                      {"Windows NT",              $(NoTitle), $(MaskAllAccess)}, +
  600.                      {CurrentVersion,          $(NoTitle), $(MaskAllAccess)}, +
  601.                      {Embedding,               $(NoTitle), $(MaskAllAccess)}  +
  602.                     }
  603.     set KeyValues = { +
  604.                      {Package, $(NoTitle), $(!REG_VT_SZ), "Package,Package,packgr32.exe,picture" } +
  605.                     }
  606.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  607.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  608.         goto endCSDVersionCreate
  609.     endif
  610.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  611.         goto endCSDVersionCreate
  612.     else
  613.         CloseRegKey $($R1)
  614.     endif
  615.     set KeyPath   = { +
  616.                      {SOFTWARE,                $(NoTitle), $(MaskAllAccess)}, +
  617.                      {Microsoft,               $(NoTitle), $(MaskAllAccess)}, +
  618.                      {"Windows NT",            $(NoTitle), $(MaskAllAccess)}, +
  619.                      {CurrentVersion,          $(NoTitle), $(MaskAllAccess)}, +
  620.                      {"Time Zones",            $(NoTitle), $(MaskAllAccess)}, +
  621.                      {"E. South America Standard Time",     $(NoTitle), $(MaskAllAccess)}  +
  622.                     }
  623.     set KeyValues = { +
  624.                      {Display, $(NoTitle), $(!REG_VT_SZ), "(GMT-03:00) Brasilia" } +
  625.                     }
  626.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  627.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  628.         goto endCSDVersionCreate
  629.     endif
  630.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  631.         goto endCSDVersionCreate
  632.     else
  633.         CloseRegKey $($R1)
  634.     endif
  635.     set KeyPath   = { +
  636.                      {SYSTEM,                  $(NoTitle), $(MaskAllAccess)}, +
  637.                      {ControlSet001,           $(NoTitle), $(MaskAllAccess)}, +
  638.                      {Control,                 $(NoTitle), $(MaskAllAccess)}, +
  639.                      {ServiceGroupOrder,       $(NoTitle), $(MaskAllAccess)}  +
  640.                     }
  641.     set KeyValues = { +
  642.                      {List, $(NoTitle), $(!REG_VT_MULTI_SZ), {                       +
  643.                                                               "System Bus Extender", +
  644.                                                               "SCSI miniport",       +
  645.                                                               "port",                +
  646.                                                               "Primary disk",        +
  647.                                                               "SCSI class",          +
  648.                                                               "SCSI CDROM class",    +
  649.                                                               "filter",              +
  650.                                                               "boot file system",    +
  651.                                                               "Base",                +
  652.                                                               "Pointer Port",        +
  653.                                                               "Keyboard Port",       +
  654.                                                               "Pointer Class",       +
  655.                                                               "Keyboard Class",      +
  656.                                                               "Video Init",          +
  657.                                                               "Video",               +
  658.                                                               "Video Save",          +
  659.                                                               "file system",         +
  660.                                                               "Event log",           +
  661.                                                               "Streams Drivers",     +
  662.                                                               "NDIS",                +
  663.                                                               "TDI",                 +
  664.                                                               "NetBIOSGroup",        +
  665.                                                               "SpoolerGroup",        +
  666.                                                               "NetDDEGroup",         +
  667.                                                               "Parallel arbitrator", +
  668.                                                               "extended base",       +
  669.                                                               "RemoteValidation",    +
  670.                                                               "PCI Configuration"    +
  671.                                                              } }  +
  672.                     }
  673.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  674.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  675.         goto endCSDVersionCreate
  676.     endif
  677.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  678.         goto endCSDVersionCreate
  679.     else
  680.         CloseRegKey $($R1)
  681.     endif
  682.     set KeyPath   = { +
  683.                      {SYSTEM,            $(NoTitle), $(MaskAllAccess)}, +
  684.                      {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, +
  685.                      {Control,           $(NoTitle), $(MaskAllAccess)}, +
  686.                      {ProductOptions,    $(NoTitle), $(MaskAllAccess)}, +
  687.                     }
  688.     set KeyValues = { +
  689.                      {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
  690.                     }
  691.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  692.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  693.         goto endCSDVersionCreate
  694.     endif
  695.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  696.         goto endCSDVersionCreate
  697.     else
  698.         CloseRegKey $($R1)
  699.     endif
  700.     set Status = STATUS_SUCCESSFUL
  701. endCSDVersionCreate = +
  702.     Return $(Status)
  703. [GetCSDVersion]
  704.     set Status = STATUS_SUCCESSFUL
  705.     read-syms RegistryConstants
  706.     set CSDVersion = 0
  707.     set KeyName = "SYSTEM\CurrentControlSet\Control\ProductOptions"
  708.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  709.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  710.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  711.         goto end_GetCSDVersion
  712.     endif
  713.     GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
  714.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  715.         CloseRegKey $(KeyHandle)
  716.         goto end_GetCSDVersion
  717.     endif
  718.     set CSDVersion =  *($(CSDVersionValue), 4)
  719.     CloseRegKey $(KeyHandle)
  720. end_GetCSDVersion = +
  721.     Return $(Status) $(CSDVersion)
  722. [GetCheckedFree]
  723.     set Status = STATUS_SUCCESSFUL
  724.     read-syms RegistryConstants
  725.     set System = Free
  726.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  727.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  728.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  729.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  730.         goto end_GetCheckedFree
  731.     endif
  732.     GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue
  733.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  734.         CloseRegKey $(KeyHandle)
  735.         goto end_GetCheckedFree
  736.     endif
  737.     Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList
  738.     ForListDo $(CurrentTypeList)
  739.        ifstr(i) $($) == "free"
  740.           set System = free
  741.        else-ifstr(i) $($) == "checked"
  742.           set System = checked
  743.        endif
  744.     EndForListDo
  745.     CloseRegKey $(KeyHandle)
  746. end_GetCheckedFree = +
  747.     Return $(Status) $(System)
  748. [QueryOkCancel]
  749.     set DlgText = $($0)
  750.     read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
  751.     ui start "SetupMessage"
  752.     ifstr(i) $(DLGEVENT) == "OK"
  753.         set Status     = STATUS_SUCCESSFUL
  754.         set UserAction = $(DLGEVENT)
  755.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  756.         set Status     = STATUS_SUCCESSFUL
  757.         set UserAction = $(DLGEVENT)
  758.     else
  759.         set Status     = STATUS_FAILED
  760.         set UserAction = "CANCEL"
  761.     endif
  762.     Return $(Status) $(UserAction)
  763. [Source Media Descriptions]
  764.     1 = "Windows NT Workstation CD-ROM" , TAGFILE = cdrom.w
  765. [Signature]
  766.     FileType = MICROSOFT_FILE
  767. [GetSignature]
  768.     read-syms Signature
  769.     return $(FileType)
  770. [ProductType]
  771. STF_PRODUCT  = Winnt
  772. STF_PLATFORM = I386
  773. [Source Media Descriptions]
  774.     1  = "Windows NT 3.51 Update Disk #1"  , TAGFILE = disk1
  775.     2  = "Windows NT 3.51 Update Disk #2"  , TAGFILE = disk2
  776.     3  = "Windows NT 3.51 Update Disk #3"  , TAGFILE = disk3
  777.     4  = "Windows NT 3.51 Update Disk #4"  , TAGFILE = disk4
  778.     5  = "Windows NT 3.51 Update Disk #5"  , TAGFILE = disk5
  779.     6  = "Windows NT 3.51 Update Disk #6"  , TAGFILE = disk6
  780.     7  = "Windows NT 3.51 Update Disk #7"  , TAGFILE = disk7
  781.     8  = "Windows NT 3.51 Update Disk #8"  , TAGFILE = disk8
  782.     9  = "Windows NT 3.51 Update Disk #9"  , TAGFILE = disk9
  783.     10 = "Windows NT 3.51 Update Disk #10" , TAGFILE = disk10
  784. [Strings]
  785.     String1 = "This update disk cannot be used on this platform."
  786.     String2 = "Setup failed to update the system."
  787.     String3 = "Setup has successfully updated your system."
  788.     String4 = "You do not have permission to update the system.  Please contact your system administrator."
  789.     String5 = "Setup failed to setup your updated files for secure operation."
  790.     String8 = "Setup has detected that the version of the system installed is "+
  791.               "newer than the update you are applying to it.  The update can render "+
  792.               "your system unstartable.  Press OK if you still wish to continue "+
  793.               "or press Cancel to exit Setup."
  794.     String9 = "Setup is going to update your Windows NT system with the English "+
  795.               "version of the update program.  If you wish to cancel the update "+
  796.               "process, please press Cancel or press OK to continue."
  797.     String11 = "Setup couldn't find the setup.log file in your repair directory. "+
  798.                "Setup cannot proceed to update your system.  Please copy the setup.log "+
  799.                "file from your Emergency Repair Disk to your repair directory "+
  800.                "and restart the update."
  801.     String12 = "Setup has not updated your system.  If you wish to update your "+
  802.                "system please run the update utility again."
  803.     String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
  804.     String13b = "MB of free hard disk space on "
  805.     String13c = " before it can be run.  Delete some"+
  806.                 " files and run the Update program again."
  807.     String14  = "Setup cannot update your Windows NT files because it could not "+
  808.                 "determine your product type.  Your registry may be corrupt."
  809.     String15  = "Setup cannot update your checked system.  The update can only "+
  810.                 "be applied to the retail system."
  811.     String16  = "Setup cannot update your Windows NT files because your system is "+
  812.                 "NT 3.1 or NT 3.5. Please upgrade your system to the retail Windows NT 3.51, "+
  813.                 "and then update your system."
  814.     String17  = "Setup cannot update your Windows NT files because your system is "+
  815.                 "a pre-release of NT 3.51. Please upgrade your system to the retail "+
  816.                 "Windows NT 3.51, and then update your system."
  817.     String18  = "Setup cannot update your Windows NT files because your system is "+
  818.                 "a version later than NT 3.51.  The update can only be applied "+
  819.                 "to Windows NT 3.51."
  820.     String19  = "Setup cannot update your Windows NT files because you have installed "+
  821.                 "the IBM Power Management version of NT 3.51.  Please see IBM for "+
  822.                 "a Service Pack that can be installed on your system."
  823.     Billboard1 = "Please wait..."
  824.     Billboard2 = "Please wait while the files to be updated are determined..."
  825.     Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
  826. [ProgressCopyENG]
  827.     ProCaption   = "Windows NT Setup"
  828.     ProCancel    = "Cancel"
  829.     ProCancelMsg = "The Windows NT 3.51 files are not completely updated.  Are you sure you want "+
  830.                    "to cancel copying files?"
  831.     ProCancelCap = "Setup Message"
  832.     ProText1     = "Copying:"
  833.     ProText2     = "To:"
  834. [SetupDoneDlgENG]
  835.     Caption     = "Windows NT Setup"
  836.     DlgText     = "Windows NT 3.51 has been updated. If you change or add "+
  837.                   "any components to your system, you will need to "+
  838.                   "reapply the update."$(!LF)$(!LF)+
  839.                   "Remove disks from the floppy disk drives and "+
  840.                   "choose Restart Computer to run the updated system."
  841.     Reboot      = "&Restart Computer"
  842.     Windows     = "E&xit to Windows NT"
  843.     DlgType     = "Info"
  844.     DlgTemplate = "REBOOT"
  845. [QueryOKCancelDlgENG]
  846.     STF_MB_TITLE = "Setup Message"
  847.     DlgType      = "MessageBox"
  848.     STF_MB_TEXT  = $(DlgText)
  849.     STF_MB_TYPE  = 2
  850.     STF_MB_ICON  = 4
  851.     STF_MB_DEF   = 1
  852.