home *** CD-ROM | disk | FTP | other *** search
/ CICA NT 1997 April / CICA_NT_CD-ROM_Walnut_Creek_April_1997.iso / servpak / sp1_400i.exe / UPDATE.INF < prev    next >
INI File  |  1996-10-10  |  42KB  |  990 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.     NTKRNLMP = 1, NTKRNLMP.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
  10.     NTOSKRNL = 1, NTOSKRNL.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
  11.  
  12. [FileSections]
  13.     FilesPrimary        = C:
  14.     FilesPal            = $(STF_HALDEST)
  15.     FilesWinnt          = $(STF_WINDOWSPATH)
  16.     FilesSystem32       = $(STF_WINDOWSSYSPATH)
  17.     FilesSystem         = $(STF_WINDOWSPATH)\system
  18.     FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
  19.     FilesConfig         = $(STF_WINDOWSSYSPATH)\config
  20.     FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
  21.     FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)\1
  22.     FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
  23.     FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
  24.     FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
  25.     FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
  26.     FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
  27.     FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
  28.     FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
  29.     FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
  30. [FileSectionsOsLoader]
  31.     FilesOsLoader       = $(STF_OSLDEST)
  32. [FileSectionsFPNW]
  33.     FilesFpNwLogin      = $(STF_FPNWSYSPATH)\login
  34.     FilesFpNwPublic     = $(STF_FPNWSYSPATH)\public
  35. [FileSectionsIIS]
  36.     FilesIIS            = $(STF_IISPATH)
  37. [FileSectionsSSL]
  38.     FilesSSL        = $(STF_WINDOWSSYSPATH)
  39. [FileSectionsIE]
  40.     FilesIE             = $(STF_IEPATH)
  41. [FileSectionsCopyAlways]
  42.     FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
  43.     FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
  44. [FileSectionsWINNT]
  45.     FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
  46. [FileSectionsLANMANNT]
  47.     FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
  48. [FileSectionsCopyAlwaysWINNT]
  49.     FilesSystem32CopyAlwaysWinnt = $(STF_WINDOWSSYSPATH)
  50. [FileSectionsCopyAlwaysLANMANNT]
  51.     FilesSystem32CopyAlwaysLanmanNT = $(STF_WINDOWSSYSPATH)
  52. [FilesPrimary]
  53. [FilesOsLoader]
  54. [FilesPal]
  55. [FilesWinnt]
  56. [FilesSystem32]
  57. 1 = 1, MSAFD.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
  58. 2 = 1, WS2HELP.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
  59.  
  60. [FilesSystem]
  61. [FilesDrivers]
  62. 1 = 1, SRV.SYS     , RENAME=$(NEWFILE), OVERWRITE=OLDER, VERSION="4,0,1381,1"
  63.  
  64. [FilesConfig]
  65. [FilesWinspool]
  66. [FilesPrnDriver]
  67. [FilesPrnProc]
  68. [FilesDbgCom]
  69. [FilesDbgCpl]
  70. [FilesDbgDll]
  71. [FilesDbgDrv]
  72. [FilesDbgExe]
  73. [FilesDbgScr]
  74. [FilesDbgSys]
  75. [FilesInfWinnt]
  76. [FilesInfLanmanNT]
  77. [FilesSystem32CopyAlways]
  78. [FilesDriversCopyAlways]
  79. [FilesSystem32CopyAlwaysWINNT]
  80. [FilesSystem32CopyAlwaysLANMANNT]
  81. [FilesFpNwLogin]
  82. [FilesFpNwPublic]
  83. [FilesIIS]
  84. 1 = 1, W3SVC.DLL, RENAME=$(NEWFILE), OVERWRITE=OLDER, VERSION="4,0,1381,1"
  85.  
  86. [FilesSSL]
  87. 1 = 1, SCHANNEL.DLL, RENAME=$(NEWFILE), OVERWRITE=OLDER, VERSION="4,75,1381,1500"
  88.  
  89. [FilesIE]
  90. 1 = 1, IEXPLORE.EXE, RENAME=$(NEWFILE), OVERWRITE=OLDER, VERSION="4,40,1381,1"
  91.  
  92. [FileAttributes]
  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         = 256
  101.     STF_BUILDVER       = 1381
  102.     STF_CSD1_NT35      = 256
  103.     STF_NT31_BUILDVER  = 528
  104.     STF_NT35_BUILDVER  = 807
  105.     STF_NT351_BUILDVER = 1057
  106.     STF_NT40_BUILDVER  = 1381
  107.     STF_NT40_MAJORVER  = 4
  108.     STF_NT40_MINORVER  = 0
  109.     STF_PRIMARY        = "C:"
  110.     STF_NTDRIVE        = ""
  111.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  112.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  113.     STF_CONTROLSET     = CurrentControlSet
  114.     VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
  115.     VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
  116.     VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
  117.     DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
  118. [FreeSpaceI386]
  119.     RequiredFreeWinnt  = 5
  120. [FreeSpaceMips]
  121.     RequiredFreeWinnt  = 5
  122. [FreeSpaceppc]
  123.     RequiredFreeWinnt  = 5
  124. [FreeSpaceAlpha]
  125.     RequiredFreeWinnt  = 5
  126. [NVRAMVars]
  127.     SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
  128.     OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
  129.     OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
  130.     OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
  131. [Shell Commands]
  132.     set-title "Windows NT Setup"
  133.     set-subst CR = "\r"
  134.     set-subst LF = "\n"
  135.     set STF_LANGUAGE = ENG
  136.     set STF_LANGUAGE_TYPE = 9
  137.     read-syms Strings
  138.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
  139.     set BillboardPushed = TRUE
  140.     set IISPathFound = FALSE
  141.     set CopySSL = TRUE
  142.     set CopyLoader = TRUE
  143.     set FPNWSysPathFound = FALSE
  144.     set IEPathFound = FALSE
  145.     set !LIBHANDLE      = ""
  146.     set !PATCHLIBHANDLE = ""
  147.     install   LoadSetupLibrary
  148.     read-syms ProductType
  149.     ifstr(i) $(!STF_PLATFORM) == I386
  150.     set STF_PRNPLATFORM = "w32x86"
  151.     else-ifstr(i) $(!STF_PLATFORM) == Mips
  152.         set STF_PRNPLATFORM = "w32mips"
  153.     else-ifstr(i) $(!STF_PLATFORM) == ppc
  154.         set STF_PRNPLATFORM = "w32ppc"
  155.     else-ifstr(i) $(!STF_PLATFORM) == Alpha
  156.         set STF_PRNPLATFORM = "w32alpha"
  157.     endif
  158.     read-syms UiVars
  159.     detect    UiVars
  160.     install   LoadPatchLibrary
  161.     read-syms FreeSpace$(!STF_PLATFORM)
  162.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckForRegistryCorruption
  163.     ifstr(i) $(STATUS) != "OK"
  164.          ifstr(i) $(BillboardPushed) == TRUE
  165.              shell "subroutn.inf" PopBillboard
  166.              set BillboardPushed = FALSE
  167.          endif
  168.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String6)
  169.          goto patchnotdone
  170.     endif
  171.     ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
  172.          ifstr(i) $(BillboardPushed) == TRUE
  173.              shell "subroutn.inf" PopBillboard
  174.              set BillboardPushed = FALSE
  175.          endif
  176.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
  177.          goto patchnotdone
  178.     endif
  179.     shell "registry.inf" CheckSetupModify
  180.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  181.         ifstr(i) $(BillboardPushed) == TRUE
  182.             shell "subroutn.inf" PopBillboard
  183.             set BillboardPushed = FALSE
  184.         endif
  185.         Debug-Output "shelling CheckSetupModify failed"
  186.         goto patchnotdone
  187.     else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
  188.         ifstr(i) $(BillboardPushed) == TRUE
  189.             shell "subroutn.inf" PopBillboard
  190.             set BillboardPushed = FALSE
  191.         endif
  192.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  193.         goto patchnotdone
  194.     endif
  195.     shell "" GetCheckedFree
  196.     ifint $($ShellCode) == $(!SHELL_CODE_OK)
  197.         ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
  198.             ifstr(i) $($R1) == "checked"
  199.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15)
  200.                 goto patchnotdone
  201.             endif
  202.         endif
  203.     endif
  204.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMajorVersion
  205.     ifint $(STATUS) > $(STF_NT40_MAJORVER)
  206.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  207.         goto patchnotdone
  208.     else-ifint $(STATUS) = $(STF_NT40_MAJORVER)
  209.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMinorVersion
  210.         ifint $(STATUS) > $(STF_NT40_MINORVER)
  211.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  212.             goto patchnotdone
  213.         endif
  214.     endif
  215.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion
  216.     ifint $(STATUS) <= $(STF_NT35_BUILDVER)
  217.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String16)
  218.         goto patchnotdone
  219.     else-ifint $(STATUS) < $(STF_NT40_BUILDVER)
  220.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17)
  221.         goto patchnotdone
  222.     else-ifint $(STATUS) > $(STF_NT40_BUILDVER)
  223.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
  224.         goto patchnotdone
  225.     endif
  226.     shell "" GetCSDVersion
  227.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  228.         ifstr(i) $(BillboardPushed) == TRUE
  229.             shell "subroutn.inf" PopBillboard
  230.             set BillboardPushed = FALSE
  231.         endif
  232.         goto patchnotdone
  233.     endif
  234.     ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
  235.         goto patchnotdone
  236.     else
  237.         ifint $($R1) > $(!STF_CSDVER)
  238.             ifstr(i) $(BillboardPushed) == TRUE
  239.                 shell "subroutn.inf" PopBillboard
  240.                 set BillboardPushed = FALSE
  241.             endif
  242.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String8)
  243.             goto patchnotdone
  244.         endif
  245.     endif
  246.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetLanguageType
  247.     ifstr(i) $(STATUS) == ERROR
  248.         goto patchnotdone
  249.     else
  250.         ifstr(i) $(STATUS) != $(STF_LANGUAGE_TYPE)
  251.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String20)
  252.             goto patchnotdone
  253.         endif
  254.     endif
  255.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFPNWPathName
  256.     ifstr(i) $(STATUS) != "FAILURE"
  257.         set STF_FPNWSYSPATH = $(STATUS)
  258.         set FPNWSysPathFound = TRUE
  259.     endif
  260.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetIEPathName
  261.     ifstr(i) $(STATUS) != "FAILURE"
  262.         set STF_IEPATH = $(STATUS)
  263.         set IEPathFound = TRUE
  264.     endif
  265. skip_patchvercheck = +
  266.     GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
  267.     ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
  268.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
  269.         goto patchnotdone
  270.     endif
  271.     set STF_PRODUCT = ""
  272.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
  273.     ifstr(i) $(KeyProductOption) != ""
  274.         GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
  275.         set TempProductType = *($(ProductTypeList),4)
  276.         ifstr(i) $(TempProductType) == "winnt"
  277.             set !STF_PRODUCT = WINNT
  278.             set !PRODUCT_DIR = WINNT
  279.         else-ifstr(i) $(TempProductType) == "lanmannt"
  280.             set !STF_PRODUCT = LANMANNT
  281.             set !PRODUCT_DIR = NTAS
  282.         else-ifstr(i) $(TempProductType) == "servernt"
  283.             set !STF_PRODUCT = SERVERNT
  284.             set !PRODUCT_DIR = NTAS
  285.         endif
  286.         CloseRegKey $(KeyProductOptions)
  287.     endif
  288.     ifstr(i) $(STF_PRODUCT) == ""
  289.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
  290.         goto patchnotdone
  291.     endif
  292.     ifstr(i) $(!STF_PLATFORM) == I386
  293.         set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
  294.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest
  295.         ifstr(i) $(STATUS) == ERROR
  296.             goto patchnotdone
  297.         else
  298.             set STF_OSLDEST = $(STATUS)
  299.         endif
  300.         set NtLdrName = $(STF_OSLDEST)"ntldr"
  301.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), IsNTLDRVersionNewer $(NtLdrName)
  302.         ifstr(i) $(STATUS) == "YES"
  303.             set CopyLoader = FALSE
  304.         endif
  305.     else
  306.         read-syms NVRAMVars
  307.         detect    NVRAMVars
  308.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
  309.                                                          $(SystemPartition) +
  310.                                                          $(OsLoader)        +
  311.                                                          $(OsLoadPartition) +
  312.                                                          $(OsLoadFilename)
  313.         ifstr(i) $(STATUS) == ERROR
  314.             goto patchnotdone
  315.         else
  316.             set STF_OSLDEST = $(STATUS)
  317.             set STF_HALDEST = $(STATUS)
  318.         endif
  319.     endif
  320.     OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\INetStp" 33554432 KeySvc
  321.     ifstr(i) $(KeySvc) != ""
  322.         GetRegValue $(KeySvc) "InstallPath" DestPathValue
  323.         set !STF_IISPATH0 = *($(DestPathValue), 4)
  324.         ifstr(i) $(STF_IISPATH0) != ""
  325.             set IISPathFound = TRUE
  326.             set STF_IISPATH = $(STF_IISPATH0)
  327.         endif
  328.     endif
  329.     CloseRegKey $(KeySvc)
  330.     set FileToCheck = $(STF_WINDOWSSYSPATH)\schannel.dll
  331.     LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileToCheck)
  332.     ifstr(i) $(STATUS) == YES
  333.         LibraryProcedure Result $(!PATCHLIBHANDLE) GetSChannelFileDesc $(FileToCheck)
  334.         ifstr(i) $(Result) == "128"
  335.             shell "" QueryOkCancel $(String22)
  336.             ifstr(i) $($R1) == "CANCEL"
  337.                 set CopySSL = FALSE
  338.             endif
  339.         endif
  340.     endif
  341.     read-syms FilesKeyedSections
  342.     set KeyedClassKeys  = ^(FileKeyedClasses, 0)
  343.     set KeyedClassFiles = ^(FileKeyedClasses, 1)
  344.     set KeyedClassFilesList = {}
  345.     ForListDo $(KeyedClassKeys)
  346.         set TmpKey       = Files$($)
  347.         set TmpFile      = #(FileKeyedClasses, $($), 1)
  348.         set TmpFilePath  = $($(TmpKey))\$(TmpFile)
  349.         set KeyedClassFilesList = >($(KeyedClassFilesList), $(TmpFilePath))
  350.     EndForListDo
  351.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFilesList)
  352.     ifstr(i) $(STATUS) == ERROR
  353.         goto patchnotdone
  354.     else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
  355.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
  356.         goto patchnotdone
  357.     else-ifstr(i) $(STATUS) == NTOSKRNLNOTFOUND
  358.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String21)
  359.         goto patchnotdone
  360.     else
  361.         ForListDo $(KeyedClassKeys)
  362.             set $($)Type = *($(STATUS), $(#))
  363.         EndForListDo
  364.     endif
  365.     ifstr(i) $(BillboardPushed) == TRUE
  366.         shell "subroutn.inf" PopBillboard
  367.         set BillboardPushed = FALSE
  368.     endif
  369.     ifstr(i) $(Unattended) != TRUE
  370.         shell "" QueryOkCancel $(String9)
  371.         ifstr(i) $($R1) == "OK"
  372.         else
  373.             set String = $(String12)
  374.             goto finish2
  375.         endif
  376.     endif
  377.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
  378.     set BillboardPushed = TRUE
  379.     set MoveFileExList  = {}
  380.     read-syms FileSections
  381.     set FileSectionsList = ^(FileSections, 0)
  382.     set FileSource  = $(!STF_SRCDIR)
  383.     ForListDo $(FileSectionsList)
  384.         set FileSection = $($)
  385.         set FileDest    = $($($))
  386.         set FileList    = ^($(FileSection), 0)
  387.         ForListDo $(FileList)
  388.             set FileKey          = $($)
  389.             set File             = #($(FileSection), $(FileKey), 2)
  390.             set FileDestFullPath = $(FileDest)\$(File)
  391.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  392.             ifstr(i) $(STATUS) == YES
  393.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  394.                 ifstr(i) $(STATUS) == ERROR
  395.                     goto patchnotdone
  396.                 else
  397.                     ifstr(i) $(STATUS) == "YES"
  398.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  399.                         ifstr(i) $(NEWFILE) == ERROR
  400.                             goto patchnotdone
  401.                         else
  402.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  403.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  404.                         endif
  405.                     else
  406.                         set NEWFILE = $(File)
  407.                     endif
  408.                     install Install-File
  409.                 endif
  410.             endif
  411.         EndForListDo
  412.     EndForListDO
  413.     set FileSource  = $(!STF_SRCDIR)
  414.     ForListDo $(KeyedClassKeys)
  415.         set FileSection = Files$($)
  416.         set FileDest    = $($(FileSection))
  417.         set FileKey     = $($($)Type)
  418.         set KeyedClassChoices = ^(Files$($), 0)
  419.         ifcontains(i) $(FileKey) in $(KeyedClassChoices)
  420.             set File             = #(FileKeyedClasses, $($), 1)
  421.             set FileDestFullPath = $(FileDest)\$(File)
  422.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  423.             ifstr(i) $(STATUS) == YES
  424.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  425.                 ifstr(i) $(STATUS) == ERROR
  426.                     goto patchnotdone
  427.                 else
  428.                     ifstr(i) $(STATUS) == "YES"
  429.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  430.                         ifstr(i) $(NEWFILE) == ERROR
  431.                             goto patchnotdone
  432.                         else
  433.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  434.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  435.                         endif
  436.                     else
  437.                         set NEWFILE = $(File)
  438.                     endif
  439.                     install Install-File
  440.                 endif
  441.             endif
  442.         endif
  443.     EndForListDo
  444.     ifstr(i) $(STF_PRODUCT) == "WINNT"
  445.         set TEMP_PRODUCT = WINNT
  446.     else
  447.         set TEMP_PRODUCT = LANMANNT
  448.     endif
  449.     read-syms FileSections$(TEMP_PRODUCT)
  450.     set FileSectionsList = ^(FileSections$(TEMP_PRODUCT), 0)
  451.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  452.     ForListDo $(FileSectionsList)
  453.         set FileSection = $($)
  454.         set FileDest    = $($($))
  455.         set FileList    = ^($(FileSection), 0)
  456.         ForListDo $(FileList)
  457.             set FileKey      = $($)
  458.             set File         = #($(FileSection), $(FileKey), 2)
  459.             set FileDestFullPath = $(FileDest)\$(File)
  460.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  461.             ifstr(i) $(STATUS) == YES
  462.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  463.                 ifstr(i) $(STATUS) == ERROR
  464.                     goto patchnotdone
  465.                 else
  466.                     ifstr(i) $(STATUS) == "YES"
  467.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  468.                         ifstr(i) $(NEWFILE) == ERROR
  469.                             goto patchnotdone
  470.                         else
  471.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  472.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  473.                         endif
  474.                     else
  475.                         set NEWFILE = $(File)
  476.                     endif
  477.                     install Install-File
  478.                 endif
  479.             endif
  480.         EndForListDo
  481.     EndForListDO
  482.     ifstr(i) $(BillboardPushed) == TRUE
  483.         shell "subroutn.inf" PopBillboard
  484.         set BillboardPushed = FALSE
  485.     endif
  486.     read-syms FileSectionsCopyAlways
  487.     set FileSectionsList = ^(FileSectionsCopyAlways, 0)
  488.     set FileSource  = $(!STF_SRCDIR)
  489.     ForListDo $(FileSectionsList)
  490.         set FileSection = $($)
  491.         set FileDest    = $($($))
  492.         set FileList    = ^($(FileSection), 0)
  493.         ForListDo $(FileList)
  494.             set FileKey = $($)
  495.             set File    = #($(FileSection), $(FileKey), 2)
  496.             set NEWFILE = $(File)
  497.             set FileDestFullPath = $(FileDest)\$(File)
  498.             install Install-File
  499.         EndForListDo
  500.     EndForListDO
  501.     read-syms FileSectionsCopyAlways$(TEMP_PRODUCT)
  502.     set FileSectionsList = ^(FileSectionsCopyAlways$(TEMP_PRODUCT), 0)
  503.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  504.     ForListDo $(FileSectionsList)
  505.         set FileSection = $($)
  506.         set FileDest    = $($($))
  507.         set FileList    = ^($(FileSection), 0)
  508.         ForListDo $(FileList)
  509.             set FileKey = $($)
  510.             set File    = #($(FileSection), $(FileKey), 2)
  511.             set NEWFILE = $(File)
  512.             set FileDestFullPath = $(FileDest)\$(File)
  513.             install Install-File
  514.         EndForListDo
  515.     EndForListDO
  516.     ifstr(i) $(FPNWSysPathFound) == TRUE
  517.         read-syms FileSectionsFPNW
  518.         set FileSectionsList = ^(FileSectionsFPNW, 0)
  519.         set FileSource  = $(!STF_SRCDIR)
  520.         ForListDo $(FileSectionsList)
  521.             set FileSection = $($)
  522.             set FileDest    = $($($))
  523.             set FileList    = ^($(FileSection), 0)
  524.             ForListDo $(FileList)
  525.                 set FileKey      = $($)
  526.                 set File         = #($(FileSection), $(FileKey), 2)
  527.                 set FileDestFullPath = $(FileDest)\$(File)
  528.                 LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  529.                 ifstr(i) $(STATUS) == YES
  530.                     LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  531.                     ifstr(i) $(STATUS) == ERROR
  532.                         goto patchnotdone
  533.                     else
  534.                         ifstr(i) $(STATUS) == "YES"
  535.                             LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  536.                             ifstr(i) $(NEWFILE) == ERROR
  537.                                 goto patchnotdone
  538.                             else
  539.                                 set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  540.                                 set MoveFileExList = >($(MoveFileExList), $(FileComp))
  541.                             endif
  542.                         else
  543.                             set NEWFILE = $(File)
  544.                         endif
  545.                         install Install-File
  546.                     endif
  547.                 endif
  548.             EndForListDo
  549.         EndForListDO
  550.     endif
  551.     ifstr(i) $(CopyLoader) == TRUE
  552.         read-syms FileSectionsOsLoader
  553.         set FileSectionsList = ^(FileSectionsOsLoader, 0)
  554.         set FileSource  = $(!STF_SRCDIR)
  555.         ForListDo $(FileSectionsList)
  556.             set FileSection = $($)
  557.             set FileDest    = $($($))
  558.             set FileList    = ^($(FileSection), 0)
  559.             ForListDo $(FileList)
  560.                 set FileKey      = $($)
  561.                 set File         = #($(FileSection), $(FileKey), 2)
  562.                 set FileDestFullPath = $(FileDest)\$(File)
  563.                 LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  564.                 ifstr(i) $(STATUS) == YES
  565.                     LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  566.                     ifstr(i) $(STATUS) == ERROR
  567.                         goto patchnotdone
  568.                     else
  569.                         ifstr(i) $(STATUS) == "YES"
  570.                             LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  571.                             ifstr(i) $(NEWFILE) == ERROR
  572.                                 goto patchnotdone
  573.                             else
  574.                                 set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  575.                                 set MoveFileExList = >($(MoveFileExList), $(FileComp))
  576.                             endif
  577.                         else
  578.                             set NEWFILE = $(File)
  579.                         endif
  580.                         install Install-File
  581.                     endif
  582.                 endif
  583.             EndForListDo
  584.         EndForListDO
  585.     endif
  586.     ifstr(i) $(IISPathFound) == TRUE
  587.         read-syms FileSectionsIIS
  588.         set FileSectionsList = ^(FileSectionsIIS, 0)
  589.         set FileSource  = $(!STF_SRCDIR)
  590.         ForListDo $(FileSectionsList)
  591.             set FileSection = $($)
  592.             set FileDest    = $($($))
  593.             set FileList    = ^($(FileSection), 0)
  594.             ForListDo $(FileList)
  595.                 set FileKey      = $($)
  596.                 set File         = #($(FileSection), $(FileKey), 2)
  597.                 set FileDestFullPath = $(FileDest)\$(File)
  598.                 LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  599.                 ifstr(i) $(STATUS) == YES
  600.                     LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  601.                     ifstr(i) $(STATUS) == ERROR
  602.                         goto patchnotdone
  603.                     else
  604.                         ifstr(i) $(STATUS) == "YES"
  605.                             LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  606.                             ifstr(i) $(NEWFILE) == ERROR
  607.                                 goto patchnotdone
  608.                             else
  609.                                 set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  610.                                 set MoveFileExList = >($(MoveFileExList), $(FileComp))
  611.                             endif
  612.                         else
  613.                             set NEWFILE = $(File)
  614.                         endif
  615.                         install Install-File
  616.                     endif
  617.                 endif
  618.             EndForListDo
  619.         EndForListDO
  620.     endif
  621.     ifstr(i) $(IEPathFound) == TRUE
  622.         read-syms FileSectionsIE
  623.         set FileSectionsList = ^(FileSectionsIE, 0)
  624.         set FileSource  = $(!STF_SRCDIR)
  625.         ForListDo $(FileSectionsList)
  626.             set FileSection = $($)
  627.             set FileDest    = $($($))
  628.             set FileList    = ^($(FileSection), 0)
  629.             ForListDo $(FileList)
  630.                 set FileKey      = $($)
  631.                 set File         = #($(FileSection), $(FileKey), 2)
  632.                 set FileDestFullPath = $(FileDest)\$(File)
  633.                 LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  634.                 ifstr(i) $(STATUS) == YES
  635.                     LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  636.                     ifstr(i) $(STATUS) == ERROR
  637.                         goto patchnotdone
  638.                     else
  639.                         ifstr(i) $(STATUS) == "YES"
  640.                             LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  641.                             ifstr(i) $(NEWFILE) == ERROR
  642.                                 goto patchnotdone
  643.                             else
  644.                                 set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  645.                                 set MoveFileExList = >($(MoveFileExList), $(FileComp))
  646.                             endif
  647.                         else
  648.                             set NEWFILE = $(File)
  649.                         endif
  650.                         install Install-File
  651.                     endif
  652.                 endif
  653.             EndForListDo
  654.         EndForListDO
  655.     endif
  656.     ifstr(i) $(CopySSL) == TRUE
  657.     read-syms FileSectionsSSL
  658.     set FileSectionsList = ^(FileSectionsSSL, 0)
  659.         set FileSource  = $(!STF_SRCDIR)
  660.         ForListDo $(FileSectionsList)
  661.             set FileSection = $($)
  662.             set FileDest    = $($($))
  663.             set FileList    = ^($(FileSection), 0)
  664.             ForListDo $(FileList)
  665.                 set FileKey      = $($)
  666.                 set File         = #($(FileSection), $(FileKey), 2)
  667.                 set FileDestFullPath = $(FileDest)\$(File)
  668.                 LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  669.                 ifstr(i) $(STATUS) == YES
  670.                     LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  671.                     ifstr(i) $(STATUS) == ERROR
  672.                         goto patchnotdone
  673.                     else
  674.                         ifstr(i) $(STATUS) == "YES"
  675.                             LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  676.                             ifstr(i) $(NEWFILE) == ERROR
  677.                                 goto patchnotdone
  678.                             else
  679.                                 set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  680.                                 set MoveFileExList = >($(MoveFileExList), $(FileComp))
  681.                             endif
  682.                         else
  683.                             set NEWFILE = $(File)
  684.                         endif
  685.                         install Install-File
  686.                     endif
  687.                 endif
  688.             EndForListDo
  689.         EndForListDO
  690.     endif
  691.     read-syms ProgressCopy$(!STF_LANGUAGE)
  692.     install   Install-DoCopy
  693.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  694.         goto patchnotdone
  695.     else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  696.         goto patchnotdone
  697.     endif
  698.     set FileSection = "FileAttributes"
  699.     set FileList    = ^(FileSection, 0)
  700.     ForListDo $(FileList)
  701.         set FileKey          = $($)
  702.         set File             = #($(FileSection), $(FileKey), 2)
  703.         set FileDest         = #($(FileSection), $(FileKey), 3)
  704.         set FilePerms        = #($(FileSection), $(FileKey), 4)
  705.         set FileDestFullPath = $(FileDest)\$(File)
  706.         ifstr(i) $(FilePerms) != ""
  707.             LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ChangeFileAttributes $(FilePerms) $(FileDestFullPath)
  708.         endif
  709.     EndForListDo
  710. processmovefileex=+
  711.     ForListDo $(MoveFileExList)
  712.         set ExistingPath = *($($), 1)
  713.         set NewPath      = *($($), 2)
  714.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
  715.         ifstr(i) $(STATUS) == ERROR
  716.             goto patchnotdone
  717.         endif
  718.     EndForListDo
  719.     ifstr(i) $(!STF_PLATFORM) == I386
  720.         set NtLdrPath = $(STF_OSLDEST)"ntldr"
  721.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), ForceFileNoCompress $(NtLdrPath)
  722.         ifstr(i) $(STATUS) == ERROR
  723.             goto patchnotdone
  724.         endif
  725.     endif
  726. patchdone =+
  727.     ifstr(i) $(BillboardPushed) == TRUE
  728.         shell "subroutn.inf" PopBillboard
  729.         set BillboardPushed = FALSE
  730.     endif
  731.     shell "" DoRegistryModifications $(!STF_CSDVER)
  732.     ifstr(i) $(Unattended) != TRUE
  733.         read-syms SetupDoneDlg$(!STF_LANGUAGE)
  734.         ui start "SetupDone"
  735.         ifstr(i) $(DLGEVENT) == "CONTINUE"
  736.             ui pop 1
  737.             goto rebootend
  738.         else
  739.             ui pop 1
  740.             goto finish1
  741.         endif
  742.     else
  743.         goto rebootend
  744.     endif
  745. patchnotdone =+
  746.     set String = $(String2)
  747. finish2 =+
  748.     ifstr(i) $(BillboardPushed) == TRUE
  749.         shell "subroutn.inf" PopBillboard
  750.         set BillboardPushed = FALSE
  751.     endif
  752.     shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
  753.     goto finish1
  754. finish1 =+
  755.     install   FreeSetupLibrary
  756. finish =+
  757.     install   FreePatchLibrary
  758.     exit
  759. rebootend =+
  760.     set Reboot = YES
  761.     ifstr(i) $(Unattended) != TRUE
  762.     install    Install-Shutdown
  763.     else
  764.     ifstr(i) $(ForceClose) != TRUE
  765.         set ForceAppsClosed = NO
  766.     else
  767.         set ForceAppsClosed = YES
  768.     endif
  769.     install Install-Shutdown2
  770.     endif
  771.     goto finish1
  772.     exit
  773. [LoadPatchLibrary]
  774.     LoadLibrary "x" $(CWD)\patchdll.dll !PATCHLIBHANDLE
  775.     exit
  776. [FreePatchLibrary]
  777.     ifstr(i) $(!PATCHLIBHANDLE) != ""
  778.         FreeLibrary $(!PATCHLIBHANDLE)
  779.     endif
  780.     exit
  781. [LoadSetupLibrary]
  782.     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
  783.     exit
  784. [FreeSetupLibrary]
  785.     ifstr(i) $(!LIBHANDLE) != ""
  786.         FreeLibrary $(!LIBHANDLE)
  787.     endif
  788.     exit
  789. [Install-File]
  790.     set STF_VITAL = ""
  791.     AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
  792.     exit
  793. [Install-DoCopy]
  794.     CopyFilesInCopyList
  795.     exit
  796. [Install-Shutdown]
  797.     LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
  798.     exit
  799. [Install-Shutdown2]
  800.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ShutdownSystem2 $(Reboot) $(ForceAppsClosed)
  801.     exit
  802. [RegistryConstants]
  803.     MaskAllAccess          = 33554432
  804.     NoTitle                = 0
  805.     RegLastError           = $(!REG_ERROR_SUCCESS)
  806.     CurrentControlSet      = "SYSTEM\CurrentControlSet"
  807.     ServicesBaseName       = $(CurrentControlSet)"\Services"
  808.     NetbtKeyPath           = $(ServicesBaseName)"\Netbt"
  809. [DoRegistryModifications]
  810.     set Status = STATUS_FAILED
  811.     read-syms RegistryConstants
  812.     set KeyPath   = { +
  813.                      {SYSTEM,            $(NoTitle), $(MaskAllAccess)}, +
  814.                      {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, +
  815.                      {Control,           $(NoTitle), $(MaskAllAccess)}, +
  816.                      {Windows,           $(NoTitle), $(MaskAllAccess)}, +
  817.                     }
  818.     set KeyValues = { +
  819.                      {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
  820.                     }
  821.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  822.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  823.         goto endCSDVersionCreate
  824.     endif
  825.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  826.         goto endCSDVersionCreate
  827.     else
  828.         CloseRegKey $($R1)
  829.     endif
  830.     set Status = STATUS_SUCCESSFUL
  831. endCSDVersionCreate = +
  832.     Return $(Status)
  833. [GetCSDVersion]
  834.     set Status = STATUS_SUCCESSFUL
  835.     read-syms RegistryConstants
  836.     set CSDVersion = 0
  837.     set KeyName = "SYSTEM\CurrentControlSet\Control\Windows"
  838.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  839.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  840.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  841.         goto end_GetCSDVersion
  842.     endif
  843.     GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
  844.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  845.         CloseRegKey $(KeyHandle)
  846.         goto end_GetCSDVersion
  847.     endif
  848.     set CSDVersion =  *($(CSDVersionValue), 4)
  849.     CloseRegKey $(KeyHandle)
  850. end_GetCSDVersion = +
  851.     Return $(Status) $(CSDVersion)
  852. [GetCheckedFree]
  853.     set Status = STATUS_SUCCESSFUL
  854.     read-syms RegistryConstants
  855.     set System = Free
  856.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  857.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  858.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  859.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  860.         goto end_GetCheckedFree
  861.     endif
  862.     GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue
  863.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  864.         CloseRegKey $(KeyHandle)
  865.         goto end_GetCheckedFree
  866.     endif
  867.     Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList
  868.     ForListDo $(CurrentTypeList)
  869.        ifstr(i) $($) == "free"
  870.           set System = free
  871.        else-ifstr(i) $($) == "checked"
  872.           set System = checked
  873.        endif
  874.     EndForListDo
  875.     CloseRegKey $(KeyHandle)
  876. end_GetCheckedFree = +
  877.     Return $(Status) $(System)
  878. [QueryOkCancel]
  879.     set DlgText = $($0)
  880.     read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
  881.     ui start "SetupMessage"
  882.     ifstr(i) $(DLGEVENT) == "OK"
  883.         set Status     = STATUS_SUCCESSFUL
  884.         set UserAction = $(DLGEVENT)
  885.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  886.         set Status     = STATUS_SUCCESSFUL
  887.         set UserAction = $(DLGEVENT)
  888.     else
  889.         set Status     = STATUS_FAILED
  890.         set UserAction = "CANCEL"
  891.     endif
  892.     Return $(Status) $(UserAction)
  893. [Signature]
  894.     FileType = MICROSOFT_FILE
  895. [GetSignature]
  896.     read-syms Signature
  897.     return $(FileType)
  898. [ProductType]
  899. STF_PRODUCT  = Winnt
  900. STF_PLATFORM = I386
  901. [Source Media Descriptions]
  902.     1  = "Windows NT 4.0 Update Disk #1"  , TAGFILE = disk1
  903.     2  = "Windows NT 4.0 Update Disk #2"  , TAGFILE = disk2
  904.     3  = "Windows NT 4.0 Update Disk #3"  , TAGFILE = disk3
  905.     4  = "Windows NT 4.0 Update Disk #4"  , TAGFILE = disk4
  906.     5  = "Windows NT 4.0 Update Disk #5"  , TAGFILE = disk5
  907.     6  = "Windows NT 4.0 Update Disk #6"  , TAGFILE = disk6
  908.     7  = "Windows NT 4.0 Update Disk #7"  , TAGFILE = disk7
  909.     8  = "Windows NT 4.0 Update Disk #8"  , TAGFILE = disk8
  910.     9  = "Windows NT 4.0 Update Disk #9"  , TAGFILE = disk9
  911.     10 = "Windows NT 4.0 Update Disk #10" , TAGFILE = disk10
  912. [Strings]
  913.     String1 = "This update disk cannot be used on this platform."
  914.     String2 = "Setup failed to update the system."
  915.     String3 = "Setup has successfully updated your system."
  916.     String4 = "You do not have permission to update the system.  Please contact your system administrator."
  917.     String5 = "Setup failed to setup your updated files for secure operation."
  918.     String6 = "Setup has detected that your Windows NT Workstation system configuration is in an "+
  919.               "inconsistent state.  Setup cannot continue updating your system.  "+
  920.               "Please re-install Windows NT Workstation."
  921.     String8 = "Setup has detected that the version of the system installed is "+
  922.               "newer than the update you are applying to it.  The update can render "+
  923.               "your system unstartable."
  924.     String9 = "Setup is going to update your Windows NT system with the English "+
  925.               "version of the update program.  If you wish to cancel the update "+
  926.               "process, please press Cancel or press OK to continue."
  927.     String11 = "Setup couldn't find the setup.log file in your repair directory. "+
  928.                "Setup cannot proceed to update your system.  Please copy the setup.log "+
  929.                "file from your Emergency Repair Disk to your repair directory "+
  930.                "and restart the update."
  931.     String12 = "Setup has not updated your system.  If you wish to update your "+
  932.                "system please run the update utility again."
  933.     String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
  934.     String13b = "MB of free hard disk space on "
  935.     String13c = " before it can be run.  Delete some"+
  936.                 " files and run the Update program again."
  937.     String14  = "Setup cannot update your Windows NT files because it could not "+
  938.                 "determine your product type.  Your registry may be corrupt."
  939.     String15  = "Setup cannot update your checked system.  The update can only "+
  940.                 "be applied to the retail system."
  941.     String16  = "Setup cannot update your Windows NT files because your system is "+
  942.                 "NT 3.1, NT 3.5, or NT 3.51. Please upgrade your system to the retail Windows NT 4.0, "+
  943.                 "and then update your system."
  944.     String17  = "Setup cannot update your Windows NT files because your system is "+
  945.                 "a pre-release of NT 4.0. Please upgrade your system to the retail "+
  946.                 "Windows NT 4.0, and then update your system."
  947.     String18  = "Setup cannot update your Windows NT files because your system is "+
  948.                 "a version later than NT 4.0.  The update can only be applied "+
  949.                 "to Windows NT 4.0."
  950.     String20  = "Setup cannot update your Windows NT files because the language "+
  951.                 "installed on your system is different from the Update language."
  952.     String21  = "Setup cannot find the location of your NTOSKRNL.EXE file in SETUP.LOG.  "+
  953.                 "You may have renamed the Windows NT root directory since you first installed "+
  954.                 "your system.  For the Update to work correctly, you must rename "+
  955.                 "your root directory back to what it was when you first installed your system."
  956.     String22  = "You have a domestic-version 128-bit PCT/SSL security provider installed on your machine."$(LF)$(LF)+
  957.                 "This Update contains only an export grade version 40-bit PCT/SSL security provider."$(LF)$(LF)+
  958.                 "Select Cancel to skip copying this file.  Your original 128-bit security provider will be left intact."$(LF)+
  959.                 "Please see the readme.txt for information on obtaining the updated 128-bit security provider."$(LF)$(LF)+
  960.                 "Want to overwrite?"
  961.     Billboard1 = "Please wait..."
  962.     Billboard2 = "Please wait while the files to be updated are determined..."
  963.     Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
  964. [ProgressCopyENG]
  965.     ProCaption   = "Windows NT Setup"
  966.     ProCancel    = "Cancel"
  967.     ProCancelMsg = "The Windows NT 4.0 files are not completely updated.  Are you sure you want "+
  968.                    "to cancel copying files?"
  969.     ProCancelCap = "Setup Message"
  970.     ProText1     = "Copying:"
  971.     ProText2     = "To:"
  972. [SetupDoneDlgENG]
  973.     Caption     = "Windows NT Setup"
  974.     DlgText     = "Windows NT 4.0 has been updated. If you change or add "+
  975.                   "any components to your system, you will need to "+
  976.                   "reapply the update."$(!LF)$(!LF)+
  977.                   "Remove disks from the floppy disk drives and "+
  978.                   "choose Restart Computer to run the updated system."
  979.     Reboot      = "&Restart Computer"
  980.     Windows     = "E&xit to Windows NT"
  981.     DlgType     = "Info"
  982.     DlgTemplate = "REBOOT"
  983. [QueryOKCancelDlgENG]
  984.     STF_MB_TITLE = "Setup Message"
  985.     DlgType      = "MessageBox"
  986.     STF_MB_TEXT  = $(DlgText)
  987.     STF_MB_TYPE  = 2
  988.     STF_MB_ICON  = 4
  989.     STF_MB_DEF   = 1
  990.