[FileKeyedClasses] Hal = hal.dll Ntoskrnl = ntoskrnl.exe [FilesKeyedSections] FilesHal = $(STF_HALDEST) FilesNtoskrnl = $(STF_WINDOWSSYSPATH) [FilesHal] [FilesNtoskrnl] [FileSections] FilesPrimary = C: FilesOsLoader = $(STF_OSLDEST) FilesPal = $(STF_HALDEST) FilesWinnt = $(STF_WINDOWSPATH) FilesSystem32 = $(STF_WINDOWSSYSPATH) FilesSystem = $(STF_WINDOWSPATH)\system FilesDrivers = $(STF_WINDOWSSYSPATH)\drivers FilesConfig = $(STF_WINDOWSSYSPATH)\config FilesWinspool = $(STF_WINDOWSSYSPATH)\spool FilesPrnDriver = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)\1 FilesPrnProc = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM) FilesDbgCom = $(STF_WINDOWSPATH)\symbols\com FilesDbgCpl = $(STF_WINDOWSPATH)\symbols\cpl FilesDbgDll = $(STF_WINDOWSPATH)\symbols\dll FilesDbgDrv = $(STF_WINDOWSPATH)\symbols\drv FilesDbgExe = $(STF_WINDOWSPATH)\symbols\exe FilesDbgScr = $(STF_WINDOWSPATH)\symbols\scr FilesDbgSys = $(STF_WINDOWSPATH)\symbols\sys FilesFpNwLogin = $(STF_FPNWSYSPATH)\login FilesFpNwPublic = $(STF_FPNWSYSPATH)\public [FileSectionsCopyAlways] FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH) FilesDriversCopyAlways = $(STF_WINDOWSSYSPATH)\drivers [FileSectionsWINNT] FilesInfWinnt = $(STF_WINDOWSSYSPATH) [FileSectionsLANMANNT] FilesInfLanmanNT = $(STF_WINDOWSSYSPATH) [FileSectionsCopyAlwaysWINNT] FilesSystem32CopyAlwaysWinnt = $(STF_WINDOWSSYSPATH) [FileSectionsCopyAlwaysLANMANNT] FilesSystem32CopyAlwaysLanmanNT = $(STF_WINDOWSSYSPATH) [FilesPrimary] [FilesOsLoader] [FilesPal] [FilesWinnt] [FilesSystem32] 1 = 1, IPXCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO 2 = 1, TCPCFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO 3 = 1, IPXROUTE.EXE, RENAME=$(NEWFILE), NOLOG, UNDO 4 = 1, CONTROL.HLP, RENAME=$(NEWFILE), NOLOG, UNDO 5 = 1, NWSAP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO 6 = 1, IPRIP.DLL, RENAME=$(NEWFILE), NOLOG, UNDO 7 = 1, RELAY.DLL, RENAME=$(NEWFILE), NOLOG, UNDO 8 = 1, ROUTER.EXE, RENAME=$(NEWFILE), NOLOG, UNDO 9 = 1, TRACE.DLL, RENAME=$(NEWFILE), NOLOG, UNDO [FilesSystem] [FilesDrivers] [FilesConfig] [FilesWinspool] [FilesPrnDriver] [FilesPrnProc] [FilesDbgCom] [FilesDbgCpl] [FilesDbgDll] [FilesDbgDrv] [FilesDbgExe] [FilesDbgScr] [FilesDbgSys] [FilesInfWinnt] 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO [FilesInfLanmanNT] 1 = 1, OEMNXPTC.INF, RENAME=$(NEWFILE), NOLOG, UNDO 2 = 1, OEMNXPIP.INF, RENAME=$(NEWFILE), NOLOG, UNDO 3 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE), NOLOG, UNDO [FilesSystem32CopyAlways] [FilesDriversCopyAlways] [FilesSystem32CopyAlwaysWINNT] 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO [FilesSystem32CopyAlwaysLANMANNT] 1 = 1, OEMNSVRR.INF, RENAME=$(NEWFILE), NOLOG, UNDO 2 = 1, OEMNSVBR.INF, RENAME=$(NEWFILE), NOLOG, UNDO 3 = 1, OEMNSVIR.INF, RENAME=$(NEWFILE), NOLOG, UNDO 4 = 1, RACFG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO [FilesFpNwLogin] [FilesFpNwPublic] [FileAttributes] [ProcessorID] ProcessorID_I386 = I386 ProcessorID_I486 = I486 ProcessorID_I586 = I586 ProcessorID_R4000 = R4000 [UiVars] STF_PLATFORMDET = "" ? $(!LIBHANDLE) GetPlatform STF_CSDVER = 1024 STF_BUILDVER = 1057 STF_CSD1_NT35 = 256 STF_NT31_BUILDVER = 528 STF_NT35_BUILDVER = 807 STF_NT351_BUILDVER = 1057 STF_NT351_MAJORVER = 3 STF_NT351_MINORVER = 51 STF_PRIMARY = "C:" STF_NTDRIVE = "" STF_WINDOWSPATH = "" ? $(!LIBHANDLE) GetWindowsNtDir STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir STF_CONTROLSET = CurrentControlSet VolumeList = {} ? $(!LIBHANDLE) GetHardDriveLetters VolumeFSList = {} ? $(!LIBHANDLE) GetHardDriveFileSystems VolumeFreeList = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace DisketteList = {} ? $(!LIBHANDLE) GetFloppyDriveLetters [FreeSpaceI386] RequiredFreeWinnt = 5 [FreeSpaceMips] RequiredFreeWinnt = 5 [FreeSpaceppc] RequiredFreeWinnt = 5 [FreeSpaceAlpha] RequiredFreeWinnt = 5 [NVRAMVars] SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION OsLoader = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION OsLoadFilename = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME [Shell Commands] set-title "Windows NT Setup" set-subst CR = "\r" set-subst LF = "\n" set STF_LANGUAGE = ENG set STF_LANGUAGE_TYPE = 9 read-syms Strings shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1) set BillboardPushed = TRUE set !LIBHANDLE = "" set !PATCHLIBHANDLE = "" install LoadSetupLibrary read-syms ProductType ifstr(i) $(!STF_PLATFORM) == I386 set STF_PRNPLATFORM = "w32x86" else-ifstr(i) $(!STF_PLATFORM) == Mips set STF_PRNPLATFORM = "w32mips" else-ifstr(i) $(!STF_PLATFORM) == ppc set STF_PRNPLATFORM = "w32ppc" else-ifstr(i) $(!STF_PLATFORM) == Alpha set STF_PRNPLATFORM = "w32alpha" endif read-syms UiVars detect UiVars install LoadPatchLibrary read-syms FreeSpace$(!STF_PLATFORM) ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET) ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1) goto patchnotdone endif shell "registry.inf" CheckSetupModify ifint $($ShellCode) != $(!SHELL_CODE_OK) ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif Debug-Output "shelling CheckSetupModify failed" goto patchnotdone else-ifstr(i) $($R0) != STATUS_SUCCESSFUL ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4) goto patchnotdone endif shell "" GetCheckedFree ifint $($ShellCode) == $(!SHELL_CODE_OK) ifstr(i) $($R0) == "STATUS_SUCCESSFUL" ifstr(i) $($R1) == "checked" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15) goto patchnotdone endif endif endif LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMajorVersion ifint $(STATUS) > $(STF_NT351_MAJORVER) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18) goto patchnotdone else-ifint $(STATUS) = $(STF_NT351_MAJORVER) LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMinorVersion ifint $(STATUS) > $(STF_NT351_MINORVER) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18) goto patchnotdone endif endif LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion ifint $(STATUS) <= $(STF_NT35_BUILDVER) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String16) goto patchnotdone else-ifint $(STATUS) < $(STF_NT351_BUILDVER) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17) goto patchnotdone else-ifint $(STATUS) > $(STF_NT351_BUILDVER) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18) goto patchnotdone endif ifstr(i) $(!STF_PLATFORM) == ppc OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion" 33554432 KeyCurrentVersion ifstr(i) $(KeyCurrentVersion) != "" GetRegValue $(KeyCurrentVersion) "CSDVersion" CSDVersionList ifstr(i) $(CSDVersionList) == "Power Managed Version X" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19) goto patchnotdone endif GetRegValue $(KeyCurrentVersion) "PowerManagedVersion" PMVersionList ifstr(i) $(PMVersionList) != "" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19) goto patchnotdone endif endif endif LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetLanguageType ifstr(i) $(STATUS) == ERROR goto patchnotdone else ifstr(i) $(STATUS) != $(STF_LANGUAGE_TYPE) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String20) goto patchnotdone endif endif LibraryProcedure STATUS,$(!PATCHLIBHANDLE), FixFPNWFiles LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFPNWPathName ifstr(i) $(STATUS) != "FAILURE" set STF_FPNWSYSPATH = $(STATUS) endif skip_patchvercheck = + GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH) ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c) goto patchnotdone endif set STF_PRODUCT = "" OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption ifstr(i) $(KeyProductOption) != "" GetRegValue $(KeyProductOption) "ProductType" ProductTypeList set TempProductType = *($(ProductTypeList),4) ifstr(i) $(TempProductType) == "winnt" set !STF_PRODUCT = WINNT set !PRODUCT_DIR = WINNT else-ifstr(i) $(TempProductType) == "lanmannt" set !STF_PRODUCT = LANMANNT set !PRODUCT_DIR = NTAS else-ifstr(i) $(TempProductType) == "servernt" set !STF_PRODUCT = SERVERNT set !PRODUCT_DIR = NTAS endif CloseRegKey $(KeyProductOptions) endif ifstr(i) $(STF_PRODUCT) == "" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14) goto patchnotdone endif ifstr(i) $(!STF_PLATFORM) == I386 set STF_HALDEST = $(!STF_WINDOWSSYSPATH) LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest ifstr(i) $(STATUS) == ERROR goto patchnotdone else set STF_OSLDEST = $(STATUS) endif else read-syms NVRAMVars detect NVRAMVars LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest + $(SystemPartition) + $(OsLoader) + $(OsLoadPartition) + $(OsLoadFilename) ifstr(i) $(STATUS) == ERROR goto patchnotdone else set STF_OSLDEST = $(STATUS) set STF_HALDEST = $(STATUS) endif endif read-syms FilesKeyedSections set KeyedClassKeys = ^(FileKeyedClasses, 0) set KeyedClassFiles = ^(FileKeyedClasses, 1) set KeyedClassFilesList = {} ForListDo $(KeyedClassKeys) set TmpKey = Files$($) set TmpFile = #(FileKeyedClasses, $($), 1) set TmpFilePath = $($(TmpKey))\$(TmpFile) set KeyedClassFilesList = >($(KeyedClassFilesList), $(TmpFilePath)) EndForListDo LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFilesList) ifstr(i) $(STATUS) == ERROR goto patchnotdone else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11) goto patchnotdone else ForListDo $(KeyedClassKeys) set $($)Type = *($(STATUS), $(#)) EndForListDo endif ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif ifstr(i) $(Unattended) != TRUE shell "" QueryOkCancel $(String9) ifstr(i) $($R1) == "OK" else set String = $(String12) goto finish2 endif endif shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2) set BillboardPushed = TRUE set MoveFileExList = {} read-syms FileSections set FileSectionsList = ^(FileSections, 0) set FileSource = $(!STF_SRCDIR) ForListDo $(FileSectionsList) set FileSection = $($) set FileDest = $($($)) set FileList = ^($(FileSection), 0) ForListDo $(FileList) set FileKey = $($) set File = #($(FileSection), $(FileKey), 2) set FileDestFullPath = $(FileDest)\$(File) LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone else ifstr(i) $(STATUS) == "YES" LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest) ifstr(i) $(NEWFILE) == ERROR goto patchnotdone else set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)} set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif install Install-File endif endif EndForListDo EndForListDO set FileSource = $(!STF_SRCDIR) ForListDo $(KeyedClassKeys) set FileSection = Files$($) set FileDest = $($(FileSection)) set FileKey = $($($)Type) set KeyedClassChoices = ^(Files$($), 0) ifcontains(i) $(FileKey) in $(KeyedClassChoices) set File = #(FileKeyedClasses, $($), 1) set FileDestFullPath = $(FileDest)\$(File) LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone else ifstr(i) $(STATUS) == "YES" LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest) ifstr(i) $(NEWFILE) == ERROR goto patchnotdone else set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)} set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif install Install-File endif endif endif EndForListDo ifstr(i) $(STF_PRODUCT) == "WINNT" set TEMP_PRODUCT = WINNT else set TEMP_PRODUCT = LANMANNT endif read-syms FileSections$(TEMP_PRODUCT) set FileSectionsList = ^(FileSections$(TEMP_PRODUCT), 0) set FileSource = $(!STF_SRCDIR)$(PRODUCT_DIR) ForListDo $(FileSectionsList) set FileSection = $($) set FileDest = $($($)) set FileList = ^($(FileSection), 0) ForListDo $(FileList) set FileKey = $($) set File = #($(FileSection), $(FileKey), 2) set FileDestFullPath = $(FileDest)\$(File) LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone else ifstr(i) $(STATUS) == "YES" LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest) ifstr(i) $(NEWFILE) == ERROR goto patchnotdone else set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)} set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif install Install-File endif endif EndForListDo EndForListDO ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif read-syms FileSectionsCopyAlways set FileSectionsList = ^(FileSectionsCopyAlways, 0) set FileSource = $(!STF_SRCDIR) ForListDo $(FileSectionsList) set FileSection = $($) set FileDest = $($($)) set FileList = ^($(FileSection), 0) ForListDo $(FileList) set FileKey = $($) set File = #($(FileSection), $(FileKey), 2) set NEWFILE = $(File) set FileDestFullPath = $(FileDest)\$(File) install Install-File EndForListDo EndForListDO read-syms FileSectionsCopyAlways$(TEMP_PRODUCT) set FileSectionsList = ^(FileSectionsCopyAlways$(TEMP_PRODUCT), 0) set FileSource = $(!STF_SRCDIR)$(PRODUCT_DIR) ForListDo $(FileSectionsList) set FileSection = $($) set FileDest = $($($)) set FileList = ^($(FileSection), 0) ForListDo $(FileList) set FileKey = $($) set File = #($(FileSection), $(FileKey), 2) set NEWFILE = $(File) set FileDestFullPath = $(FileDest)\$(File) install Install-File EndForListDo EndForListDO read-syms ProgressCopy$(!STF_LANGUAGE) install Install-DoCopy ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT" goto patchnotdone else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE" goto patchnotdone endif set FileSection = "FileAttributes" set FileList = ^(FileSection, 0) ForListDo $(FileList) set FileKey = $($) set File = #($(FileSection), $(FileKey), 2) set FileDest = #($(FileSection), $(FileKey), 3) set FilePerms = #($(FileSection), $(FileKey), 4) set FileDestFullPath = $(FileDest)\$(File) ifstr(i) $(FilePerms) != "" LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ChangeFileAttributes $(FilePerms) $(FileDestFullPath) endif EndForListDo processmovefileex=+ ForListDo $(MoveFileExList) set ExistingPath = *($($), 1) set NewPath = *($($), 2) LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone endif EndForListDo ifstr(i) $(!STF_PLATFORM) == I386 set NtLdrPath = $(STF_OSLDEST)"ntldr" LibraryProcedure STATUS, $(!PATCHLIBHANDLE), ForceFileNoCompress $(NtLdrPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone endif endif patchdone =+ LibraryProcedure STATUS,$(!PATCHLIBHANDLE), RestoreSetupLog ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "" DoRegistryModifications $(!STF_CSDVER) ifstr(i) $(Unattended) != TRUE read-syms SetupDoneDlg$(!STF_LANGUAGE) ui start "SetupDone" ifstr(i) $(DLGEVENT) == "CONTINUE" ui pop 1 goto rebootend else ui pop 1 goto finish1 endif else goto rebootend endif patchnotdone =+ LibraryProcedure STATUS,$(!PATCHLIBHANDLE), RestoreSetupLog set String = $(String2) finish2 =+ ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String) goto finish1 finish1 =+ install FreeSetupLibrary finish =+ install FreePatchLibrary exit rebootend =+ set Reboot = YES ifstr(i) $(Unattended) != TRUE install Install-Shutdown else ifstr(i) $(ForceClose) != TRUE set ForceAppsClosed = NO else set ForceAppsClosed = YES endif install Install-Shutdown2 endif goto finish1 exit [LoadPatchLibrary] LoadLibrary "x" patchdll.dll !PATCHLIBHANDLE exit [FreePatchLibrary] ifstr(i) $(!PATCHLIBHANDLE) != "" FreeLibrary $(!PATCHLIBHANDLE) endif exit [LoadSetupLibrary] LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE exit [FreeSetupLibrary] ifstr(i) $(!LIBHANDLE) != "" FreeLibrary $(!LIBHANDLE) endif exit [Install-File] set STF_VITAL = "" AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest) exit [Install-DoCopy] CopyFilesInCopyList exit [Install-Shutdown] LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot) exit [Install-Shutdown2] LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ShutdownSystem2 $(Reboot) $(ForceAppsClosed) exit [RegistryConstants] MaskAllAccess = 33554432 NoTitle = 0 RegLastError = $(!REG_ERROR_SUCCESS) CurrentControlSet = "SYSTEM\CurrentControlSet" ServicesBaseName = $(CurrentControlSet)"\Services" NetbtKeyPath = $(ServicesBaseName)"\Netbt" [DoRegistryModifications] set Status = STATUS_FAILED read-syms RegistryConstants set KeyPath = { + {SOFTWARE, $(NoTitle), $(MaskAllAccess)}, + {Microsoft, $(NoTitle), $(MaskAllAccess)}, + {"Windows NT", $(NoTitle), $(MaskAllAccess)}, + {CurrentVersion, $(NoTitle), $(MaskAllAccess)}, + {"Time Zones", $(NoTitle), $(MaskAllAccess)}, + {"E. South America Standard Time", $(NoTitle), $(MaskAllAccess)} + } set KeyValues = { + {Display, $(NoTitle), $(!REG_VT_SZ), "(GMT-03:00) Brasilia" } + } shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto endCSDVersionCreate endif ifstr(i) $($R0) != STATUS_SUCCESSFUL goto endCSDVersionCreate else CloseRegKey $($R1) endif set KeyPath = { + {SYSTEM, $(NoTitle), $(MaskAllAccess)}, + {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, + {Services, $(NoTitle), $(MaskAllAccess)}, + {Eventlog, $(NoTitle), $(MaskAllAccess)}, + {Application, $(NoTitle), $(MaskAllAccess)}, + {Perflib, $(NoTitle), $(MaskAllAccess)} + } set KeyValues = { + {EventMessageFile, $(NoTitle), $(!REG_VT_EXPAND_SZ), "%SystemRoot%\system32\prflbmsg.dll" } + {TypesSupported, $(NoTitle), $(!REG_VT_DWORD), 7 } + } shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto endCSDVersionCreate endif ifstr(i) $($R0) != STATUS_SUCCESSFUL goto endCSDVersionCreate else CloseRegKey $($R1) endif OpenRegKey $(!REG_H_LOCAL) "" $(NetbtKeyPath) $(MaskAllAccess) KeyNetbt ifstr(i) $(KeyNetbt) != "" DeleteRegKey $(KeyNetbt) "Performance" CloseRegKey $(KeyNetbt) endif set KeyPath = { + {SYSTEM, $(NoTitle), $(MaskAllAccess)}, + {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, + {Control, $(NoTitle), $(MaskAllAccess)}, + {Lsa, $(NoTitle), $(MaskAllAccess)} + } set KeyValues = { + {UpgradeSam, $(NoTitle), $(!REG_VT_DWORD), 1} + } shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto endCSDVersionCreate endif ifstr(i) $($R0) != STATUS_SUCCESSFUL goto endCSDVersionCreate else CloseRegKey $($R1) endif set KeyPath = { + {SYSTEM, $(NoTitle), $(MaskAllAccess)}, + {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, + {Control, $(NoTitle), $(MaskAllAccess)}, + {ProductOptions, $(NoTitle), $(MaskAllAccess)}, + } set KeyValues = { + {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } + } shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto endCSDVersionCreate endif ifstr(i) $($R0) != STATUS_SUCCESSFUL goto endCSDVersionCreate else CloseRegKey $($R1) endif set Status = STATUS_SUCCESSFUL endCSDVersionCreate = + Return $(Status) [GetCSDVersion] set Status = STATUS_SUCCESSFUL read-syms RegistryConstants set CSDVersion = 0 set KeyName = "SYSTEM\CurrentControlSet\Control\ProductOptions" OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access" goto end_GetCSDVersion endif GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) CloseRegKey $(KeyHandle) goto end_GetCSDVersion endif set CSDVersion = *($(CSDVersionValue), 4) CloseRegKey $(KeyHandle) end_GetCSDVersion = + Return $(Status) $(CSDVersion) [GetCheckedFree] set Status = STATUS_SUCCESSFUL read-syms RegistryConstants set System = Free set KeyName = "Software\Microsoft\Windows NT\CurrentVersion" OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access" goto end_GetCheckedFree endif GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) CloseRegKey $(KeyHandle) goto end_GetCheckedFree endif Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList ForListDo $(CurrentTypeList) ifstr(i) $($) == "free" set System = free else-ifstr(i) $($) == "checked" set System = checked endif EndForListDo CloseRegKey $(KeyHandle) end_GetCheckedFree = + Return $(Status) $(System) [QueryOkCancel] set DlgText = $($0) read-syms QueryOKCancelDlg$(!STF_LANGUAGE) ui start "SetupMessage" ifstr(i) $(DLGEVENT) == "OK" set Status = STATUS_SUCCESSFUL set UserAction = $(DLGEVENT) else-ifstr(i) $(DLGEVENT) == "CANCEL" set Status = STATUS_SUCCESSFUL set UserAction = $(DLGEVENT) else set Status = STATUS_FAILED set UserAction = "CANCEL" endif Return $(Status) $(UserAction) [Signature] FileType = MICROSOFT_FILE [GetSignature] read-syms Signature return $(FileType) [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = Mips [Source Media Descriptions] 1 = "Windows NT 3.51 Update Disk #1" , TAGFILE = disk1 2 = "Windows NT 3.51 Update Disk #2" , TAGFILE = disk2 3 = "Windows NT 3.51 Update Disk #3" , TAGFILE = disk3 4 = "Windows NT 3.51 Update Disk #4" , TAGFILE = disk4 5 = "Windows NT 3.51 Update Disk #5" , TAGFILE = disk5 6 = "Windows NT 3.51 Update Disk #6" , TAGFILE = disk6 7 = "Windows NT 3.51 Update Disk #7" , TAGFILE = disk7 8 = "Windows NT 3.51 Update Disk #8" , TAGFILE = disk8 9 = "Windows NT 3.51 Update Disk #9" , TAGFILE = disk9 10 = "Windows NT 3.51 Update Disk #10" , TAGFILE = disk10 [Strings] String1 = "This update disk cannot be used on this platform." String2 = "Setup failed to update the system." String3 = "Setup has successfully updated your system." String4 = "You do not have permission to update the system. Please contact your system administrator." String5 = "Setup failed to setup your updated files for secure operation." String8 = "Setup has detected that the version of the system installed is "+ "newer than the update you are applying to it. The update can render "+ "your system unstartable. Press OK if you still wish to continue "+ "or press Cancel to exit Setup." String9 = "Setup is going to update your Windows NT system with the English "+ "version of the update program. If you wish to cancel the update "+ "process, please press Cancel or press OK to continue." String11 = "Setup couldn't find the setup.log file in your repair directory. "+ "Setup cannot proceed to update your system. Please copy the setup.log "+ "file from your Emergency Repair Disk to your repair directory "+ "and restart the update." String12 = "Setup has not updated your system. If you wish to update your "+ "system please run the update utility again." String13a = "Not enough hard disk space to run Setup. Setup needs at least " String13b = "MB of free hard disk space on " String13c = " before it can be run. Delete some"+ " files and run the Update program again." String14 = "Setup cannot update your Windows NT files because it could not "+ "determine your product type. Your registry may be corrupt." String15 = "Setup cannot update your checked system. The update can only "+ "be applied to the retail system." String16 = "Setup cannot update your Windows NT files because your system is "+ "NT 3.1 or NT 3.5. Please upgrade your system to the retail Windows NT 3.51, "+ "and then update your system." String17 = "Setup cannot update your Windows NT files because your system is "+ "a pre-release of NT 3.51. Please upgrade your system to the retail "+ "Windows NT 3.51, and then update your system." String18 = "Setup cannot update your Windows NT files because your system is "+ "a version later than NT 3.51. The update can only be applied "+ "to Windows NT 3.51." String19 = "Setup cannot update your Windows NT files because you have installed "+ "the IBM Power Management version of NT 3.51. Please see IBM for "+ "a Service Pack that can be installed on your system." String20 = "Setup cannot update your Windows NT files because the language "+ "installed on your system is different from the Service Pack language." Billboard1 = "Please wait..." Billboard2 = "Please wait while the files to be updated are determined..." Billboard3 = "Please wait while the Emergency Repair Disk is updated..." [ProgressCopyENG] ProCaption = "Windows NT Setup" ProCancel = "Cancel" ProCancelMsg = "The Windows NT 3.51 files are not completely updated. Are you sure you want "+ "to cancel copying files?" ProCancelCap = "Setup Message" ProText1 = "Copying:" ProText2 = "To:" [SetupDoneDlgENG] Caption = "Windows NT Setup" DlgText = "Windows NT 3.51 has been updated. If you change or add "+ "any components to your system, you will need to "+ "reapply the update."$(!LF)$(!LF)+ "Remove disks from the floppy disk drives and "+ "choose Restart Computer to run the updated system." Reboot = "&Restart Computer" Windows = "E&xit to Windows NT" DlgType = "Info" DlgTemplate = "REBOOT" [QueryOKCancelDlgENG] STF_MB_TITLE = "Setup Message" DlgType = "MessageBox" STF_MB_TEXT = $(DlgText) STF_MB_TYPE = 2 STF_MB_ICON = 4 STF_MB_DEF = 1