; ; KEYED SECTIONS. These sections are provided for files where a selection ; is made from a set of files and the chosen one is copied under a generic ; name. This can be used to update the hal.dll, ntoskrnl.exe, ntbootdd.sys, ; ntdetect.com. ; [FileKeyedClasses] Hal = hal.dll Ntoskrnl = ntoskrnl.exe Ntdetect = ntdetect.com [FilesKeyedSections] FilesHal = $(STF_HALDEST) FilesNtoskrnl = $(STF_WINDOWSSYSPATH) FilesNtdetect = $(STF_OSLDEST) [FilesHal] HAL = 1, HAL.DLL , RENAME=$(NEWFILE) HAL486C = 1, HAL486C.DLL , RENAME=$(NEWFILE) HALAST = 1, HALAST.DLL , RENAME=$(NEWFILE) HALCBUS = 1, HALCBUS.DLL , RENAME=$(NEWFILE) HALMCA = 1, HALMCA.DLL , RENAME=$(NEWFILE) HALNCR = 1, HALNCR.DLL , RENAME=$(NEWFILE) HALOLI = 1, HALOLI.DLL , RENAME=$(NEWFILE) HALSP = 1, HALSP.DLL , RENAME=$(NEWFILE) HALWYSE7 = 1, HALWYSE7.DLL , RENAME=$(NEWFILE) [FilesNtoskrnl] NTKRNLMP = 1, NTKRNLMP.EXE , RENAME=$(NEWFILE) NTOSKRNL = 1, NTOSKRNL.EXE , RENAME=$(NEWFILE) [FilesNtdetect] NTDETECT = 1, NTDETECT.COM , RENAME=$(NEWFILE) [FileSections] FilesPrimary = C: FilesOsLoader = $(STF_OSLDEST) FilesPal = $(STF_HALDEST) FilesWinnt = $(STF_WINDOWSPATH) FilesSystem32 = $(STF_WINDOWSSYSPATH) FilesOs2Dll = $(STF_WINDOWSSYSPATH)\os2\dll FilesSystem = $(STF_WINDOWSPATH)\system FilesDrivers = $(STF_WINDOWSSYSPATH)\drivers FilesConfig = $(STF_WINDOWSSYSPATH)\config FilesWinspool = $(STF_WINDOWSSYSPATH)\spool FilesPrnDriver = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM) 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 [FileSectionsCopyAlways] FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH) FilesOs2DllCopyAlways = $(STF_WINDOWSSYSPATH)\os2\dll FilesDriversCopyAlways = $(STF_WINDOWSSYSPATH)\drivers ; ; product specific sections ; [FileSectionsWINNT] FilesInfWinnt = $(STF_WINDOWSSYSPATH) [FileSectionsLANMANNT] FilesInfLanmanNT = $(STF_WINDOWSSYSPATH) ; ; FilesPrimary only covers ntldr. For ntbootddd, a keyed section needs to ; be created. Only relevant for x86. ; [FilesPrimary] 1 = 1, NTLDR , RENAME=$(NEWFILE) [FilesOsLoader] [FilesPal] [FilesWinnt] [FilesSystem32] 1 = 1, ACLCONV.EXE , RENAME=$(NEWFILE) 2 = 1, ALRSVC.DLL , RENAME=$(NEWFILE) 3 = 1, ATI.DLL , RENAME=$(NEWFILE) 4 = 1, ATSVC.EXE , RENAME=$(NEWFILE) 5 = 1, AUTOCHK.EXE , RENAME=$(NEWFILE) 6 = 1, AUTOCONV.EXE, RENAME=$(NEWFILE) 7 = 1, BASESRV.DLL , RENAME=$(NEWFILE) 8 = 1, BROWSER.DLL , RENAME=$(NEWFILE) 9 = 1, CLIPBRD.EXE , RENAME=$(NEWFILE) 10 = 1, COMDLG32.DLL, RENAME=$(NEWFILE) 11 = 1, CSRSRV.DLL , RENAME=$(NEWFILE) 12 = 1, DEMIL32.DLL , RENAME=$(NEWFILE) 13 = 1, DGCONFIG.DLL, RENAME=$(NEWFILE) 14 = 1, DLCAPI.DLL , RENAME=$(NEWFILE) 15 = 1, DOSX.EXE , RENAME=$(NEWFILE) 16 = 1, DRIVERS.DLL , RENAME=$(NEWFILE) 17 = 1, DRWTSN32.EXE, RENAME=$(NEWFILE) 18 = 1, EVENTLOG.EXE, RENAME=$(NEWFILE) 19 = 1, EVENTVWR.EXE, RENAME=$(NEWFILE) 20 = 1, FRAMEBUF.DLL, RENAME=$(NEWFILE) 21 = 1, FTPSVC.EXE , RENAME=$(NEWFILE) 22 = 1, GDI.EXE , RENAME=$(NEWFILE) 23 = 1, GDI32.DLL , RENAME=$(NEWFILE) 24 = 1, HPMON.DLL , RENAME=$(NEWFILE) 25 = 1, IFSUTIL.DLL , RENAME=$(NEWFILE) 26 = 1, IPXROUTE.EXE, RENAME=$(NEWFILE) 27 = 1, KB16.COM , RENAME=$(NEWFILE) 28 = 1, KBDPO.DLL , RENAME=$(NEWFILE) 29 = 1, KERNEL32.DLL, RENAME=$(NEWFILE) 30 = 1, KRNL386.EXE , RENAME=$(NEWFILE) 31 = 1, LMUICMN0.DLL, RENAME=$(NEWFILE) 32 = 1, LMUICMN1.DLL, RENAME=$(NEWFILE) 33 = 1, LOCALSPL.DLL, RENAME=$(NEWFILE) 34 = 1, LSASRV.DLL , RENAME=$(NEWFILE) 35 = 1, LSASS.EXE , RENAME=$(NEWFILE) 36 = 1, MGMTAPI.DLL , RENAME=$(NEWFILE) 37 = 1, MSPRIVS.DLL , RENAME=$(NEWFILE) 38 = 1, MSSCHD32.DLL, RENAME=$(NEWFILE) 39 = 1, MSV1_0.DLL , RENAME=$(NEWFILE) 40 = 1, MUSRMGR.EXE , RENAME=$(NEWFILE) 41 = 1, NCPA.CPL , RENAME=$(NEWFILE) 42 = 1, NETAPI32.DLL, RENAME=$(NEWFILE) 43 = 1, NETLOGON.DLL, RENAME=$(NEWFILE) 44 = 1, NETRAP.DLL , RENAME=$(NEWFILE) 45 = 1, NTBACKUP.EXE, RENAME=$(NEWFILE) 46 = 1, NTDLL.DLL , RENAME=$(NEWFILE) 47 = 1, NTVDM.EXE , RENAME=$(NEWFILE) 48 = 1, NWLNKCFG.DLL, RENAME=$(NEWFILE) 49 = 1, NWLNKMSG.DLL, RENAME=$(NEWFILE) 50 = 1, NWLNKSVC.EXE, RENAME=$(NEWFILE) 51 = 1, NWNBLINK.DLL, RENAME=$(NEWFILE) 52 = 1, NWNBLINK.EXE, RENAME=$(NEWFILE) 53 = 1, OS2.EXE , RENAME=$(NEWFILE) 54 = 1, OS2SRV.EXE , RENAME=$(NEWFILE) 55 = 1, OS2SS.EXE , RENAME=$(NEWFILE) 56 = 1, PERFCTRS.DLL, RENAME=$(NEWFILE) 57 = 1, PERFMON.EXE , RENAME=$(NEWFILE) 58 = 1, PORTUAS.EXE , RENAME=$(NEWFILE) 59 = 1, PROGMAN.EXE , RENAME=$(NEWFILE) 60 = 1, RASADMIN.EXE, RENAME=$(NEWFILE) 61 = 1, RASCAUTH.DLL, RENAME=$(NEWFILE) 62 = 1, RASGTWY.DLL , RENAME=$(NEWFILE) 63 = 1, REDIR.EXE , RENAME=$(NEWFILE) 64 = 1, RPCLTC3.DLL , RENAME=$(NEWFILE) 65 = 1, RPCLTC6.DLL , RENAME=$(NEWFILE) 66 = 1, RPCRT4.DLL , RENAME=$(NEWFILE) 67 = 1, S3.DLL , RENAME=$(NEWFILE) 68 = 1, SAMLIB.DLL , RENAME=$(NEWFILE) 69 = 1, SAMSRV.DLL , RENAME=$(NEWFILE) 70 = 1, SCREG.EXE , RENAME=$(NEWFILE) 71 = 1, SENDFL32.DLL, RENAME=$(NEWFILE) 72 = 1, SFMMON.DLL , RENAME=$(NEWFILE) 73 = 1, SFMPRINT.EXE, RENAME=$(NEWFILE) 74 = 1, SFMSVC.EXE , RENAME=$(NEWFILE) 75 = 1, SFMWSHAT.DLL, RENAME=$(NEWFILE) 76 = 1, SHELL32.DLL , RENAME=$(NEWFILE) 77 = 1, SNMP.EXE , RENAME=$(NEWFILE) 78 = 1, SRVMGR.CPL , RENAME=$(NEWFILE) 79 = 1, SRVMGR.EXE , RENAME=$(NEWFILE) 80 = 1, SRVSVC.DLL , RENAME=$(NEWFILE) 81 = 1, TCPIPSVC.DLL, RENAME=$(NEWFILE) 82 = 1, TELNET.DLL , RENAME=$(NEWFILE) 83 = 1, TERMINAL.EXE, RENAME=$(NEWFILE) 84 = 1, UFAT.DLL , RENAME=$(NEWFILE) 85 = 1, UHPFS.DLL , RENAME=$(NEWFILE) 86 = 1, UNTFS.DLL , RENAME=$(NEWFILE) 87 = 1, UPS.EXE , RENAME=$(NEWFILE) 88 = 1, USER.EXE , RENAME=$(NEWFILE) 89 = 1, USER32.DLL , RENAME=$(NEWFILE) 90 = 1, USERINIT.EXE, RENAME=$(NEWFILE) 91 = 1, USRMGR.EXE , RENAME=$(NEWFILE) 92 = 1, WIN32SPL.DLL, RENAME=$(NEWFILE) 93 = 1, WINDISK.EXE , RENAME=$(NEWFILE) 94 = 1, WINFILE.EXE , RENAME=$(NEWFILE) 95 = 1, WINLOGON.EXE, RENAME=$(NEWFILE) 96 = 1, WINMSD.EXE , RENAME=$(NEWFILE) 97 = 1, WINMSDP.EXE , RENAME=$(NEWFILE) 98 = 1, WINSPOOL.DRV, RENAME=$(NEWFILE) 99 = 1, WINSRV.DLL , RENAME=$(NEWFILE) 100 = 1, WINSTRM.DLL , RENAME=$(NEWFILE) 101 = 1, WINVER.EXE , RENAME=$(NEWFILE) 102 = 1, WOW32.DLL , RENAME=$(NEWFILE) 103 = 1, WSHNWLNK.DLL, RENAME=$(NEWFILE) 104 = 1, WSOCK32.DLL , RENAME=$(NEWFILE) 105 = 1, XACTSRV.DLL , RENAME=$(NEWFILE) [FilesOs2Dll] 1 = 1, DOSCALLS.DLL, RENAME=$(NEWFILE) [FilesSystem] [FilesDrivers] 1 = 1, 4MMDAT.SYS , RENAME=$(NEWFILE) 2 = 1, ABIOSDSK.SYS, RENAME=$(NEWFILE) 3 = 1, AFD.SYS , RENAME=$(NEWFILE) 4 = 1, ARCHQIC.SYS , RENAME=$(NEWFILE) 5 = 1, ARROW.SYS , RENAME=$(NEWFILE) 6 = 1, ASYNCMAC.SYS, RENAME=$(NEWFILE) 7 = 1, ATDISK.SYS , RENAME=$(NEWFILE) 8 = 1, BROWSER.SYS , RENAME=$(NEWFILE) 9 = 1, CDFS.SYS , RENAME=$(NEWFILE) 10 = 1, CPQARRAY.SYS, RENAME=$(NEWFILE) 11 = 1, DIGIFEP5.SYS, RENAME=$(NEWFILE) 12 = 1, DLC.SYS , RENAME=$(NEWFILE) 13 = 1, DPTSCSI.SYS , RENAME=$(NEWFILE) 14 = 1, ELNK16.SYS , RENAME=$(NEWFILE) 15 = 1, ELNK3.SYS , RENAME=$(NEWFILE) 16 = 1, ELNKII.SYS , RENAME=$(NEWFILE) 17 = 1, ELNKMC.SYS , RENAME=$(NEWFILE) 18 = 1, EXABYTE1.SYS, RENAME=$(NEWFILE) 19 = 1, FASTFAT.SYS , RENAME=$(NEWFILE) 20 = 1, FD16_700.SYS, RENAME=$(NEWFILE) 21 = 1, FLOPPY.SYS , RENAME=$(NEWFILE) 22 = 1, FTDISK.SYS , RENAME=$(NEWFILE) 23 = 1, I8042PRT.SYS, RENAME=$(NEWFILE) 24 = 1, IBMTOK.SYS , RENAME=$(NEWFILE) 25 = 1, LANCE.SYS , RENAME=$(NEWFILE) 26 = 1, MUP.SYS , RENAME=$(NEWFILE) 27 = 1, MVAUDIO.SYS , RENAME=$(NEWFILE) 28 = 1, NBF.SYS , RENAME=$(NEWFILE) 29 = 1, NBT.SYS , RENAME=$(NEWFILE) 30 = 1, NCR77C22.SYS, RENAME=$(NEWFILE) 31 = 1, NCRC700.SYS , RENAME=$(NEWFILE) 32 = 1, NCRC710.SYS , RENAME=$(NEWFILE) 33 = 1, NDIS.SYS , RENAME=$(NEWFILE) 34 = 1, NE2000.SYS , RENAME=$(NEWFILE) 35 = 1, NE3200.SYS , RENAME=$(NEWFILE) 36 = 1, NETFLX.SYS , RENAME=$(NEWFILE) 37 = 1, NPEISA.SYS , RENAME=$(NEWFILE) 38 = 1, NPFS.SYS , RENAME=$(NEWFILE) 39 = 1, NTCX.SYS , RENAME=$(NEWFILE) 40 = 1, NTDOS.SYS , RENAME=$(NEWFILE) 41 = 1, NTFS.SYS , RENAME=$(NEWFILE) 42 = 1, NTXALL.SYS , RENAME=$(NEWFILE) 43 = 1, NTXEM.SYS , RENAME=$(NEWFILE) 44 = 1, NWLINK.SYS , RENAME=$(NEWFILE) 45 = 1, NWNBLINK.SYS, RENAME=$(NEWFILE) 46 = 1, PARALLEL.SYS, RENAME=$(NEWFILE) 47 = 1, PINBALL.SYS , RENAME=$(NEWFILE) 48 = 1, PROTEON.SYS , RENAME=$(NEWFILE) 49 = 1, RDR.SYS , RENAME=$(NEWFILE) 50 = 1, S3.SYS , RENAME=$(NEWFILE) 51 = 1, SCSIDISK.SYS, RENAME=$(NEWFILE) 52 = 1, SCSIPORT.SYS, RENAME=$(NEWFILE) 53 = 1, SERIAL.SYS , RENAME=$(NEWFILE) 54 = 1, SERMOUSE.SYS, RENAME=$(NEWFILE) 55 = 1, SFMATALK.SYS, RENAME=$(NEWFILE) 56 = 1, SFMSRV.SYS , RENAME=$(NEWFILE) 57 = 1, SRV.SYS , RENAME=$(NEWFILE) 58 = 1, STREAMS.SYS , RENAME=$(NEWFILE) 59 = 1, TCPIP.SYS , RENAME=$(NEWFILE) 60 = 1, UBNEI.SYS , RENAME=$(NEWFILE) 61 = 1, ULTRA124.SYS, RENAME=$(NEWFILE) 62 = 1, WDVGA.SYS , RENAME=$(NEWFILE) [FilesConfig] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesWinspool] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesPrnDriver] 1 = 1, HPDSKJET.DLL, RENAME=$(NEWFILE) 2 = 1, JP350.DLL , RENAME=$(NEWFILE) 3 = 1, PSCRIPT.DLL , RENAME=$(NEWFILE) 4 = 1, PSCRPTUI.DLL, RENAME=$(NEWFILE) [FilesPrnProc] 1 = 1, WINPRINT.DLL, RENAME=$(NEWFILE) [FilesDbgCom] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgCpl] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgDll] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgDrv] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgExe] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgScr] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesDbgSys] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesInfWinnt] 1 = 1, OEMNADDS.INF, RENAME=$(NEWFILE) 2 = 1, OEMNADLM.INF, RENAME=$(NEWFILE) 3 = 1, OEMNADLT.INF, RENAME=$(NEWFILE) 4 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE) 5 = 1, OEMNXPSM.INF, RENAME=$(NEWFILE) 6 = 1, UTILITY.INF , RENAME=$(NEWFILE) [FilesInfLanmanNT] 1 = 1, OEMNADDS.INF, RENAME=$(NEWFILE) 2 = 1, OEMNADLM.INF, RENAME=$(NEWFILE) 3 = 1, OEMNADLT.INF, RENAME=$(NEWFILE) 4 = 1, OEMNSVRA.INF, RENAME=$(NEWFILE) 5 = 1, OEMNXPSM.INF, RENAME=$(NEWFILE) 6 = 1, UTILITY.INF , RENAME=$(NEWFILE) [FilesSystem32CopyAlways] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [FilesOs2DllCopyAlways] 1 = 1, NETAPI.OS2 , RENAME=NETAPI.DLL [FilesDriversCopyAlways] ; 1 = 1, file1, RENAME=$(NEWFILE) ; 2 = 1, file2, RENAME=$(NEWFILE) [ProcessorID] ProcessorID_I386 = I386 ProcessorID_I486 = I486 ProcessorID_I586 = I586 ProcessorID_R4000 = R4000 [UiVars] STF_PLATFORMDET = "" ? $(!LIBHANDLE) GetPlatform STF_CSDVER = 768 STF_BUILDVER = 528 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 ; ; Amount of free space (in MB) required on the winnt drive ; before we'll do the upgrade patch. ; [FreeSpaceI386] RequiredFreeWinnt = 25 [FreeSpaceMips] RequiredFreeWinnt = 32 [FreeSpaceAlpha] RequiredFreeWinnt = 27 [NVRAMVars] SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION OsLoader = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION OsLoadFilename = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME ; ; INF LOGIC ; [Shell Commands] set-title "Windows NT Setup" set-subst CR = "\r" set-subst LF = "\n" set STF_LANGUAGE = ENG read-syms Strings shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1) set BillboardPushed = TRUE set !LIBHANDLE = "" set !PATCHLIBHANDLE = "" ; ; Initialize Library support for the inf ; install LoadSetupLibrary ; ; find out the essential information about the installed hardware and ; software ; 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) == Alpha set STF_PRNPLATFORM = "w32alpha" endif read-syms UiVars detect UiVars read-syms FreeSpace$(!STF_PLATFORM) ; ; if the Platform is not the same as the one supported by this patch ; diskette, inform the user and quit ; ;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 ; ; Check to make sure we have admin privileges, if not print fatal error ; shell "registry.inf" CheckSetupModify ifint $($ShellCode) != $(!SHELL_CODE_OK) ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Failed to shell CheckSetupModify" ; ; DEBUG END 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 ; ; Initialize the patch library support for the inf ; install LoadPatchLibrary ; ; find out if the system we are patching is checked / free using GetCheckedFree ; and fail if we find a checked system. ignore any errors in getting ; checked/free status since this is not important. ; 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 ; ; Get the build and patch version for the system. If this is more than our patch ; version warn the user, allowing him to exit ; LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion $(!STF_BUILDVER) ifstr(i) $(STATUS) == ERROR goto patchnotdone else-ifstr(i) $(STATUS) == NO shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8) ifstr(i) $($R1) == "OK" goto skip_patchvercheck else goto patchnotdone endif endif shell "" GetCSDVersion ifint $($ShellCode) != $(!SHELL_CODE_OK) ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif Debug-Output "PATCH.INF: Shelling GetCSDVersion failed" goto patchnotdone endif ifstr(i) $($R0) != "STATUS_SUCCESSFUL" Debug-Output "PATCH.INF: GetCSDVersion failed to return a value" else ifint $($R1) > $(!STF_CSDVER) ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8) ifstr(i) $($R1) == "OK" else goto patchnotdone endif endif endif skip_patchvercheck = + ; ; Get the NT DRIVE ; GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH) ; ; Check for enough disk space. ; ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt) shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c) goto patchnotdone endif ; ; get the product type we are running on ; 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 endif CloseRegKey $(KeyProductOptions) endif ; ; if we are unable to determine the product type print error and exit ; ifstr(i) $(STF_PRODUCT) == "" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14) goto patchnotdone endif ; ; Find the hal and osloader destination on Mips and Alpha ; ifstr(i) $(!STF_PLATFORM) == I386 set STF_HALDEST = $(!STF_WINDOWSSYSPATH) set STF_OSLDEST = C:\ 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 ; ; Get the required information about keyed files ; set KeyedClassKeys = ^(FileKeyedClasses, 0) set KeyedClassFiles = ^(FileKeyedClasses, 1) LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFiles) 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 ; ; Warn the user about the patch process.. ; ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif shell "" QueryOkCancel $(String9) ifstr(i) $($R1) == "OK" else set String = $(String12) goto finish2 endif shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2) set BillboardPushed = TRUE ; ; initialize copy ; set MoveFileExList = {} ; ; Run through the directory list adding files to the copy list ; 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) ; ; Check to see if file exists, if it is does not exist, it doesn't ; need to be copied over LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath) ; ; DEBUG END 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)} ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp) ; ; DEBUG END set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE) ; ; DEBUG END install Install-File endif endif EndForListDo EndForListDO ; ; Add the keyed sections to the copy list ; read-syms FilesKeyedSections 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) ; ; Check to see if file exists, if it is does not exist, it doesn't ; need to be copied over LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath) ; ; DEBUG END 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)} ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp) ; ; DEBUG END set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE) ; ; DEBUG END install Install-File endif endif endif EndForListDo ; ; add product specific files to the copy list ; read-syms FileSections$(STF_PRODUCT) set FileSectionsList = ^(FileSections$(STF_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) ; ; Check to see if file exists, if it is does not exist, it doesn't ; need to be copied over LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath) ifstr(i) $(STATUS) == YES ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath) ; ; DEBUG END 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)} ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp) ; ; DEBUG END set MoveFileExList = >($(MoveFileExList), $(FileComp)) endif else set NEWFILE = $(File) endif ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE) ; ; DEBUG END install Install-File endif endif EndForListDo EndForListDO ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif ; ; add the files which are always copied ; 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 ; ; Do the copy ; 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 processmovefileex=+ ; ; Process MoveFileExList ; ForListDo $(MoveFileExList) ; set ExistingPath = *($($), 1) set NewPath = *($($), 2) ; DEBUG ; ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "CopyFileOnReboot "$(ExistingPath)" to "$(NewPath) ; ; DEBUG END LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath) ifstr(i) $(STATUS) == ERROR goto patchnotdone endif EndForListDo patchdone =+ ifstr(i) $(BillboardPushed) == TRUE shell "subroutn.inf" PopBillboard set BillboardPushed = FALSE endif ; ; do the registry modifications needed ; shell "" DoRegistryModifications $(!STF_CSDVER) read-syms SetupDoneDlg$(!STF_LANGUAGE) ui start "SetupDone" ifstr(i) $(DLGEVENT) == "CONTINUE" ui pop 1 goto rebootend else ui pop 1 goto finish1 endif patchnotdone =+ 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 =+ ; ; Free the library support ; install FreeSetupLibrary finish =+ install FreePatchLibrary exit rebootend =+ set Reboot = YES install Install-Shutdown goto finish1 exit ;----------------------------------------------------------------------- ; INSTALL HELPERS ;----------------------------------------------------------------------- [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 ;----------------------------------------------------------------------- ; REGISTRY SUBROUTINES ;----------------------------------------------------------------------- [RegistryConstants] MaskAllAccess = 33554432 NoTitle = 0 RegLastError = $(!REG_ERROR_SUCCESS) ;----------------------------------------------------------------------- ; ROUTINE: DoRegistryModifications ; ; DESCRIPTION: Does the registry modifications needed. ; - Sets the compatibility flags for the postcript stuff ; - Creates an entry for the WinNT software. ; ; INPUTS: $0: CSD Version # ; ; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL ; STATUS_FAILED ; ;------------------------------------------------------------------------ [DoRegistryModifications] set Status = STATUS_FAILED read-syms RegistryConstants ; ; Modify the compatibility flags.. ; set KeyPath = { + {SOFTWARE, $(NoTitle), $(MaskAllAccess)}, + {Microsoft, $(NoTitle), $(MaskAllAccess)}, + {"Windows NT", $(NoTitle), $(MaskAllAccess)}, + {CurrentVersion, $(NoTitle), $(MaskAllAccess)}, + {WOW, $(NoTitle), $(MaskAllAccess)}, + {Compatibility, $(NoTitle), $(MaskAllAccess)} + } ; ; Form the value info structures for the WinNT entry ; set KeyValues = { + {PM4, $(NoTitle), $(!REG_VT_SZ), "0x02004000" }, + {main123W, $(NoTitle), $(!REG_VT_SZ), "0x00004000" }, + {FH3, $(NoTitle), $(!REG_VT_SZ), "0x00004000" } + } 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 ; ; Form the path up to the version key ; set KeyPath = { + {SOFTWARE, $(NoTitle), $(MaskAllAccess)}, + {Microsoft, $(NoTitle), $(MaskAllAccess)}, + {"Windows NT", $(NoTitle), $(MaskAllAccess)}, + {CurrentVersion, $(NoTitle), $(MaskAllAccess)} + } ; ; Form the value info structures for the WinNT entry ; 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) ;----------------------------------------------------------------------- ; ROUTINE: GetCSDVersion ; ; DESCRIPTION: Reads the software entry to find out what the CSD Patch Version ; is ; ; INPUTS: $0: None ; ; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL ; STATUS_FAILED ; ; $R1: CSDVersion ; ;------------------------------------------------------------------------ [GetCSDVersion] set Status = STATUS_SUCCESSFUL read-syms RegistryConstants set CSDVersion = 0 ; ; Open the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ; key 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_GetCSDVersion endif ; ; read the csdversion entry ; 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) ;----------------------------------------------------------------------- ; ROUTINE: GetCheckedFree ; ; DESCRIPTION: Reads the software entry to find out whether the system ; is checked / free. ; ; INPUTS: $0: None ; ; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL ; STATUS_FAILED ; ; $R1: Checked | Free ; ;------------------------------------------------------------------------ [GetCheckedFree] set Status = STATUS_SUCCESSFUL read-syms RegistryConstants set System = Free ; ; Open the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ; key 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 ; ; read the currenttype value ; GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) CloseRegKey $(KeyHandle) goto end_GetCheckedFree endif ; ; split the currenttype value and see if the split string has "free" or ; "checked" in it ; 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) ;----------------------------------------------------------------------- ; ROUTINE: QueryOkCancel ; ; DESCRIPTION: This routine lets the user query OK / Cancel giving OK as ; default ; ; INPUTS: $0: MessageText. ; ; OUTPUTS: $R0: STATUS: STATUS_SUCCESSFUL | ; STATUS_NOLANGUAGE ; STATUS_FAILED ; ; $R1: DLGEVENT: OK | CANCEL ; ;------------------------------------------------------------------------ [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) [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = I386 ; ; MEDIA AND FILE DESCRIPTIONS ; [Source Media Descriptions] 1 = "Update-Diskette 1 für Windows NT, Version 3.1" , TAGFILE = disk1 2 = "Update-Diskette 2 für Windows NT, Version 3.1" , TAGFILE = disk2 3 = "Update-Diskette 3 für Windows NT, Version 3.1" , TAGFILE = disk3 4 = "Update-Diskette 4 für Windows NT, Version 3.1" , TAGFILE = disk4 5 = "Update-Diskette 5 für Windows NT, Version 3.1" , TAGFILE = disk5 6 = "Update-Diskette 6 für Windows NT, Version 3.1" , TAGFILE = disk6 7 = "Update-Diskette 7 für Windows NT, Version 3.1" , TAGFILE = disk7 8 = "Update-Diskette 8 für Windows NT, Version 3.1" , TAGFILE = disk8 9 = "Update-Diskette 9 für Windows NT, Version 3.1" , TAGFILE = disk9 10 = "Update-Diskette 10 für Windows NT, Version 3.1" , TAGFILE = disk10 [Strings] String1 = "Diese Update-Diskette kann nicht auf dieser Plattform verwendet werden." String2 = "Setup konnte kein Update des Systems durchführen." String3 = "Setup hat das Update des Systems erfolgreich durchgeführt." String4 = "Sie besitzen keine Berechtigung, ein Update des Systems durchzuführen. Wenden Sie sich an Ihren Systemadministrator." String5 = "Setup konnte die aktualisierten Dateien nicht für sichere Operationen einrichten." String6 = "In Ihrem Computer konnte kein Diskettenlaufwerk gefunden werden. "+ "Setup kann die Notfalldiskette nicht modifizieren." String7 = "Falls Sie bei der Installation von Windows NT eine Notfalldiskette "+ "erstellt haben, legen Sie diese in Laufwerk " String10 = " ein und wählen Sie 'OK', um die Notfalldiskette zu " + "aktualisieren. Falls die Notfalldiskette nicht auffindbar ist, " + "wählen sie 'Abbrechen'. Setup wird den Installationsvorgang dann fortsetzen." String8 = "Setup hat festgestellt, daß die installierte Version neuer ist als die, mit der "+ "Sie aktualisieren wollen. Das Update kann dazu führen, daß "+ "das System nicht mehr startbar ist. Wählen Sie 'OK', falls Sie dennoch fortsetzen "+ "wollen, oder 'Abbrechen', um Setup zu beenden. " ; PLEASE NOTE: ; Change the language mentioned in variable String9 to the language ; you are localizing to. That is if the localized language is German, ; the word English should be changed to deutsch. ; String9 = "Setup wird Ihr Windows NT-System mit der deutschen Version "+ "des Update-Programms aktualisieren. Wählen Sie 'Abbrechen', "+ "um den Vorgang zu beenden, oder 'OK', um fortzusetzen." String11 = "Setup kann die Datei SETUP.LOG nicht in Ihrem Windows-Verzeichnis finden. "+ "Setup kann daher nicht mit dem Update des Systems fortfahren. Kopieren Sie "+ "die Datei REPAIR.INF von der Notfalldiskette unter dem Namen SETUP.LOG in Ihr "+ "Windows-Verzeichnis, und starten Sie das Update neu." String12 = "Setup hat Ihr System nicht aktualisiert. Falls Sie Ihr System aktualisieren "+ "möchten, führen Sie das Update nochmals durch." String13a = "Es steht nicht genügend Festplattenspeicherplatz zur Verfügung. "+ "Zur Ausführung des Setups muß mindestens " String13b = " MB freier Speicherplatz auf " String13c = " vorliegen. Löschen Sie einige Dateien und "+ "führen Sie das Update erneut durch." String14 = "Setup konnte Ihre Windows NT-Dateien nicht aktualisieren, da der "+ "Produkttyp nicht bestimmt werden konnte. Die Registrierung ist möglicherweise beschädigt." String15 = "Setup konnte Ihr System nicht aktualisieren. Die Aktualisierung kann nur für ein im "+ "Handel verkauftes System durchgeführt werden." Billboard1 = "Bitte warten Sie..." Billboard2 = "Bitte warten Sie, bis die zu aktualisierenden Dateien bestimmt worden sind..." Billboard3 = "Bitte warten Sie, bis die Notfalldiskette aktualisiert worden ist..." [ProgressCopyENG] ProCaption = "Windows NT-Setup" ProCancel = "Abbrechen" ProCancelMsg = "Die Dateien von Windows NT, Version 3.1, sind nicht vollständig aktualisiert. "+ "Sind Sie sicher, daß Sie den Kopiervorgang abbrechen wollen?" ProCancelCap = "Setup-Meldung" ProText1 = "Kopiert:" ProText2 = "Nach:" [SetupDoneDlgENG] Caption = "Windows NT-Setup" DlgText = "Windows NT, Version 3.1, wurde aktualisiert. Falls "+ "Sie Systemkomponenten ändern oder hinzufügen, müssen Sie die "+ "Aktualisierung erneut ausführen."$(!LF)$(!LF)+ "Nehmen Sie die Disketten aus den Diskettenlaufwerken, und wählen "+ "Sie 'Neu starten', um das aktualisierte System auszuführen." Reboot = "&Neu starten" Windows = "&Zurück zu Windows NT" DlgType = "Info" DlgTemplate = "REBOOT" [QueryOKCancelDlgENG] STF_MB_TITLE = "Setup-Meldung" ;no translation needed after this DlgType = "MessageBox" STF_MB_TEXT = $(DlgText) STF_MB_TYPE = 2 STF_MB_ICON = 4 STF_MB_DEF = 1