`McGuire et al.
`
`I 1111111111111111 11111 lllll lllll lllll 111111111111111 11111 1111111111 11111111
`US006493871Bl
`US 6,493,871 Bl
`Dec. 10, 2002
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) METHOD AND SYSTEM FOR
`DOWNLOADING UPDATES FOR SOFTWARE
`INSTALLATION
`
`6,301,710 Bl * 10/2001 Fujiwara ..................... 717/175
`6,314,565 Bl * 11/2001 Kenner et al. .............. 717/171
`OTHER PUBLICATIONS
`
`(75)
`
`Inventors: Thomas D. McGuire, Woodinville, WA
`(US); Michael V. Sliger, Issaquah, WA
`(US); Daniel C. Welch, Redmond, WA
`(US); Rajendra H. Vishnumurty,
`Bellevue, WA (US); Gabriel J. Aul,
`Seattle, WA (US); Oliver I. Wallace,
`Redmond, WA (US); Gregory W.
`Nichols, Seattle, WA (US); Alan B.
`Auerbach, Redmond, WA (US)
`
`Title: Updating Software and configuration data in a distrib(cid:173)
`uted communication network, IEEE, 1988, author: Sym(cid:173)
`broski.*
`Title: Efficient Transparent Application Recovery In client
`server information system, ACM, 1998,author: Lomet et al.*
`Microsoft Corporation, TechNet CD Online, Aug. 18, 1999,
`Available from http://www.technet.com./cdonline/toc.htm.
`Microsoft Corporation, !Express, Aug. 18, 1999, Available
`from http://aicgweb/iexpress/.
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by O days.
`
`(21) Appl. No.: 09/397,536
`
`(22) Filed:
`
`Sep. 16, 1999
`
`Int. CI.7 ................................................ G06F 9/445
`(51)
`(52) U.S. Cl. ....................... 717/173; 717/169; 717/171;
`717/172; 717/175; 717/178
`(58) Field of Search ................................. 717/168, 169,
`717/170, 171,172,174,175,176,177,
`178, 173
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,845,090 A * 12/1998 Collins, III et al.
`........ 709/221
`5,919,247 A * 7/1999 Hoff et al. .................. 709/217
`5,930,513 A * 7/1999 Taylor ........................ 717/174
`5,960,204 A * 9/1999 Yinger et al. ............... 717/176
`6,006,035 A * 12/1999 Nabahi ....................... 717 /175
`6,067,582 A * 5/2000 Smith et al. ................... 710/5
`6,167,567 A * 12/2000 Chiles et al.
`............... 717/173
`6,199,204 Bl * 3/2001 Donohue .................... 717/178
`6,256,668 Bl * 7/2001 Silvka et al.
`............... 709/220
`6,266,811 Bl * 7/2001 Nabahi ....................... 717/174
`6,282,709 Bl* 8/2001 Reha et al.
`................. 717/175
`6,282,711 Bl * 8/2001 Halpern et al. ............. 717/175
`
`* cited by examiner
`
`Primary Examiner-Gregory Morse
`Assistant Examiner----Chameli C. Das
`(74) Attorney, Agent, or Firm----Leydig, Voit & Mayer, Ltd.
`
`(57)
`
`ABSTRACT
`
`A method and system for downloading software update data
`for installing a revised software product on a client computer
`minimizes the amount of update data to be transmitted over
`the network by downloading only those files needed to put
`the client computer in the state for installing the product. In
`the beginning of the downloading process, the client com(cid:173)
`puter obtains from a setup server an initial setup package
`that includes a setup program and a list of files required for
`installing the software product. The setup program running
`on the client computer then determines whether some cur(cid:173)
`rent or earlier versions of those files required for installation
`already exist on the client computer, and compiles a request
`list of files needed for updating the client computer. The
`client computer sends the request list to a download server,
`which maintains a collection of update files and patches. In
`response to the request list, the download server downloads
`updating files to the client. Depending of the availability of
`the requested files or other factors, the downloaded files may
`or may not be exactly those requested. Using the down(cid:173)
`loaded files, the setup program updates the existing files to
`provide the set of installation files on the client computer.
`The desired revised software product is then installed on the
`client computer.
`
`50 Claims, 12 Drawing Sheets
`
`Redacted
`
`
`
`i,-
`~
`i,-
`-...,l
`0'J
`~
`~
`O'I
`rJ'J.
`e
`
`'"""' N
`'"""' 0 ....,
`~ ....
`'JJ. =(cid:173)~
`
`'"""' ~=
`ri
`~
`~
`
`N
`0
`0
`N
`
`~ = ......
`
`~ ......
`~
`r:JJ. .
`d .
`
`36
`
`PROGRAMS
`APPLICATION
`
`COMPUTER
`
`REMOTE
`
`51
`
`Modem
`I ™
`
`38
`
`37
`
`36
`
`35
`
`SYSTEM
`OPERATING IAPPLICATIONI P~6~~~M I PROGRAM
`
`PROGRAMS MODULES
`
`DAT A
`
`FIG. 1
`
`,,,--
`
`29 ('531
`
`""
`
`drive
`
`Optical drive
`
`Magnetic disk
`
`DRIVE
`DISK
`HARD
`
`60~
`
`20
`
`INTERFACE
`
`INTERFACE INTERFACE INTERFACE
`
`DISK DRIVE I SERIAL PORT I
`
`OPTICAL
`
`HARD DISK MAG DISK
`
`DRIVE
`
`DRIVE
`
`46
`
`34
`
`32
`
`23
`
`1
`
`INTERFACE I .. I
`NETWORK
`
`ADAPTER
`
`I VIDEO
`
`PROCESSING I
`
`UNIT
`
`21 ~
`PERSONAL COMPUTER ~--~--+--------ID
`
`53
`
`4~~_L_I ----,
`
`47 Monitor
`
`=
`
`DATA
`
`PROGRAM
`
`MODULES
`PROGRAM
`
`OTHER
`
`PROGRAM
`
`APPLICATION
`
`SYSTEM
`
`OPERATING
`
`BIOS
`
`38
`
`37
`
`36
`
`35
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 2 of 12
`
`US 6,493,871 Bl
`
`80
`
`/
`I
`I
`I
`I
`I
`
`.,,.
`
`/
`
`72
`
`82
`
`CLIENT
`
`I
`I
`
`'
`
`SETUP
`PROGRAM
`
`SETUP PACKAGE
`EXECUTABLE
`
`v9
`
`SETUP
`PROGRAM
`
`FILE INFO.
`Selected Update
`Files (optional)
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`UPDATE
`SETUP
`SERVER
`
`76
`
`4
`
`NETWORK
`
`EXISTING
`FILES
`
`86
`
`INSTALL.
`FILE
`INFO.
`
`84
`
`DOWNLOAD
`REQUEST
`
`90
`
`DOWNLOAD SERVER
`
`UPDATE
`FILES
`
`96
`
`70
`
`UPDATE DATA
`
`FIG. 2
`
`92
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 3 of 12
`
`US 6,493,871 Bl
`
`76
`
`"----..
`
`UPDATE
`SETUP
`SERVER
`
`100
`
`UPDATE
`REQUEST
`
`72
`
`CLIENT
`
`UPDATE.EXE
`
`UPDATE.INF
`
`SETUPAPI.DLL
`
`SPMSG.DLL
`
`EULA.TXT
`
`README.TXT
`
`SPUNINST.EXE
`
`EXISTING
`FILES
`
`86
`
`FIG. 3
`
`SP5SETUP.EXE
`
`EXECUTABLE
`
`UPDATE.EXE
`UPDATE.INF
`SETUPAPI.DLL
`SPMSG.DLL
`EULA.TXT
`README.TXT
`SPUN INST.EXE
`
`102
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 4 of 12
`
`US 6,493,871 Bl
`
`FIG. 4
`
`UPDATE.INF
`
`/
`
`108
`
`[Version]
`Signature="$Windows NT$"
`SourceFilesURL=http://svcpacks.microsoft.com/isapi/pstream.dll/nt4sp5/USA/x86
`
`[Product! nstall]
`AddReg=Product.Add.Reg
`
`[Productlnstall.CopyFilesAlways]
`CopyFiles=CopyAlways.System32.files
`
`[Productlnstall. ReplaceFileslfExist]
`CopyFiles=System32. files
`CopyFiles=Drivers.files
`
`[Productlnstall.UniprocessorFiles]
`CopyFiles=U niprocessor. Kernel. files
`
`[Prod uctl nstall. M ultiprocessorFiles]
`CopyFiles=Multiprocessor.Kernel.files
`
`[Product.Add. Reg]
`HKLM ,SYSTEM\CurrentControlSet\Control\Windows, "CSDVersion" ,0x10001,0x500
`
`[CopyAlways.System32. files]
`CHKNTFS.EXE
`REGSVR32.EXE
`C_1250.NLS
`
`[System32.files]
`OLE32.DLL,,,8
`WSOCK32.DLL,,,8
`
`[Drivers.files]
`4MMDAT.SYS
`CPQARRA Y.SYS
`DL TT APE.SYS
`E100B.SYS
`EL59X.SYS
`EL90X.SYS
`JOYSTICK.SYS
`
`(CONTINUED)
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 5 of 12
`
`US 6,493,871 Bl
`
`FIG. 4 (CONTINUED)
`
`UPDATE.INF
`
`/108
`
`{CONTINUED)
`
`[Uniprocessor.Kernel.files]
`NTOSKRNL.EXE
`
`[Multiprocessor. Kernel. files]
`NTOSKRNL.EXE, NTKRNLMP.EXE
`
`[SourceDisksNames]
`1 ="Windows NT 4.0 Service Pack 5 Source Files"
`
`[DestinationDirs]
`; %windir%\system32
`CopyAlways.System32.files=11
`; %windir%\system32
`System32.files=11
`; %windir%\system32\drivers
`Drivers.files=12
`; %windir%\system32
`Uniprocessor.Kernel.files=11
`Multiprocessor.Kernel.files=11 ; %windir%\system32
`
`[Sou rceDisksFiles]
`CHKNTFS.EXE = 1,,,00040000056500C9,AF876D8F8DA7230C4D38BE30D3F92209
`REGSVR32.EXE = 1,,,0005000006320001,36D4F9E22C2C3EFBE4160B8F8A4E9E7C
`C_ 1250.NLS = 1,,,,57A36CD7B3557535D4AFFB00F4D48EC6
`OLE32. DLL = 1,, ,00040000056500BE,D889C2912D861 BD598863985856762DD
`WSOCK32.DLL = 1,,,00040000056500C9,66F61F5775101C8CAF28615808D12651
`4MMDAT.SYS = 1,,,000400000565001B,CBD48BCEF66F1A157F24F5A75213289F
`CPQARRA Y.SYS =
`1 , , ,000400000565001 B ,AB61030B0C848A2CE 114 718FE79BAAB6
`DL TT APE.SYS = 1,,,000400000565001 B,924D959A5206222D77D5244CF2D8B796
`E1008.SYS = 1,,,00020000000D0000,6061 CA3B0EC4DAFB531 EBCC8F40BC822
`EL59X.SYS = 1,,,0001001200000000,0AF331 C5A790FDA8F87830EBFFC68234
`EL90X.SYS = 1,,,0002001800280000,5E94EDA2C5266430F5A867D326E6DFD3
`JOYSTICK.SYS = 1,,,000400000565001 B,6EEC943B27C0507C49F2C968E0F429C3
`NTOSKRNL.EXE = 1,,,00040000056500CC,DCA97 4D791 BA 1553242F496166E3E789
`NTKRNLMP.EXE = 1,,,00040000056500CC, 1929FA437794429842596938789BCC26
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 6 of 12
`
`US 6,493,871 Bl
`
`FIG. 5
`THE "NEEDED FILES" LIST
`CHKNTFS .EXE, BO23014 729AD8940282FF2AAC2392041
`
`(
`
`120
`
`REGSVR32.EXE
`
`OLE32.DLL,2F776F7166CB116E38FE7724A9825A6F
`
`WSOCK32.DLL, 8016769ECBBE2EE59026B7C50A54O693
`
`CPQARRA Y.SYS, 0C86837 A511875782462268D54C7C227
`
`E100B.SYS,D49BB53612C639E36E05B941B1BF4AA9
`
`NTKRNLM P. EXE, 889BAB304A2246950C25539698FE97 A6
`
`FIG. 6
`FILE DOWNLOAD REQUEST
`
`(
`
`122
`
`Filelist:7
`
`CHKNTFS.EXE,8D23014 729AD8940282FF2AAC2392041
`
`CPQARRA Y.SYS,0C86837 A511875782462268O54C7C227
`
`E1008.SYS,D498853612C639E36E05B941B1BF4AA9
`
`NTKRNLMP. EXE,889BAB304A2246950C25539698FE97 A6
`
`OLE32. DLL,2F776F7166CB 116E38FE7724A9825A6F
`
`REGSVR32.EXE
`
`WSOCK32.DLL,8016769ECBBE2EE5902687C50A54D693
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 7 of 12
`
`US 6,493,871 Bl
`
`70 \
`
`DOWNLOAD SERVER
`(SVCPACKS.MICROSOFT.COM)
`
`FIG. 7
`
`~ -
`
`i--~
`
`126
`
`/
`
`128
`
`72
`
`122
`
`D
`DOWNLOA
`REQUEST
`
`-
`
`CLIENT
`
`106
`"l~U-PD_A_T_E_.E_X_E~
`
`~ UPDATE.INF
`108
`TEMP. DIRECTORY
`
`UPDATED
`FILES
`
`DOWNLOAD
`REPLY
`
`FILE 1 B
`
`FILE 1
`PATCH 1
`
`FILE 2
`PATCH 1
`
`FILE 1
`PATCH 2
`
`FILE 2
`PATCH 2
`
`FILE 2
`PATCH 3
`
`PSTREAM.DLL I
`
`./
`140
`
`160
`
`162
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 8 of 12
`
`US 6,493,871 Bl
`
`FILES ON SVCPACKS.MICROSOFT.COM IN nt4sp5\USA\x86 DIRECTORY
`
`CHKNTFS.EX_
`CHKNTFS.EXE_0F76114CE9FA2D60A7C22D25AE450814.P
`CHKNTFS.EXE_ 1 C5437115A9BAC420C3CD1 F831 F56F30.P
`CHKNTFS.EXE_ 42AFB44AF2045C7 A74C271598E579BDA.P
`CHKNTFS.EXE_B023014 729AD8940282FF2AAC2392041.P
`CHKNTFS.EXE_EED2C140A583875C7C8A5D0967C7A5A7.P
`CPQARRA Y.SY _
`CPQARRA Y.SYS_0C86837 A511875782462268D54C7C227 .P
`CPQARRA Y.SYS _ 13CF9F524D61F83CB43E473B327654AB.P
`CPQARRA Y.SYS_ 423FC467DE3959B865439731 E0D63A7F .P
`CPQARRA Y.SYS_925181 D4098D7F689F2BA2AB520F6F4F .P
`CPQARRA Y.SYS_F57EC67E4A963F441 DEFDB386349DE00.P
`E100B.SY_
`E 100B.SYS_ 6C4 7 AB2854FFDB36144CCB7C660F7 A41. P
`NTKRNLMP.EX_
`NTKRNLMP.EXE_78EBE1089495CA22472C3B0BDC36CC05.P
`NTKRNLMP .EXE_ 889BAB304A2246950C25539698FE97 A6.P
`NTKRNLMP.EXE_AEAE2680F3A7CE9AE47EEE4F492E4366.P
`NTKRNLMP.EXE_AF3C35148947186693C86F57EB167739.P
`NTKRNLMP .EXE_D79E5E52EA6EC6B634C3AD23A 1 D6CE77 .P
`NTKRNLMP.EXE_DB3F2D54DA579EFE9B7BB94DF4C93F7B.P
`OLE32.DL_
`OLE32.DLL_2F776F7166CB 116E38FE7724A9825A6F .P
`OLE32. DLL_ 99C40CE9E2A69ED69088C77937 A 10330. P
`OLE32.DLL_DC7CE6C78C898004658E7195B1 C40CB1 .P
`REGSVR32.EX_
`REGSVR32.EXE_01ABC7353F12FA12FEC4C527A025F13A.P
`REGSVR32.EXE_2A5E10758D37DA569BBFCE5E46E36CA 1.P
`REGSVR32.EXE_2C97E02D5B4EF71 B5CDFD3F060E6A27E.P
`REGSVR32.EXE_362878CFB3E65063513A3090FA915ED2.P
`REGSVR32. EXE_ DF A7B492F043F316B93683462E726825. P
`REGSVR32.EXE_F1 CA707D97CF9D44E8AB7F8758FF6184.P
`WSOCK32.DLL
`WSOCK32.DLL_015E7FA076ADEB3EEF1 F2D1171 F78F32.P
`WSOCK32. DLL_29AC4AE58B8716C9BFD29633B4391805. P
`WSOCK32. DLL_B294DABFF380A2768567F1 0BC032A92C. P
`
`FIG. 8
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 9 of 12
`
`US 6,493,871 Bl
`
`DOWNLOAD REPLY
`
`160
`(
`
`HTTP/1.1 200 OK
`Via: 1.1 CORP-PROXY-8
`Proxy-Connection: Keep-Alive
`Content-Length: 122482
`Content-Type: text/html
`Server: Microsoft-IIS/4.0
`Date: Thu, 07 Nov 1998 21 :47:09 GMT
`
`Download Header:
`<body>
`Filelist:7
`CHKNTFS.EXE.P,3305
`CPQARRA Y.SYS.P,2704
`E100B.SY _,47108
`NTKRNLMP.EXE.P, 11612
`OLE32. DLL. P ,27 492
`REGSVR32.EX_,9739
`WSOCK32.DLL,20480
`</body>
`
`FIG. 9
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 10 of 12
`
`US 6,493,871 Bl
`
`DOWNLOAD REPLY
`
`170
`(
`
`HTTP/1.1 200 OK
`Via: 1.1 CORP-PROXY-8
`Proxy-Connection: Keep-Alive
`Content-Length: 122452
`Content-Type: text/html
`Server: Microsoft-11S/4.0
`Date: Thu, 07 Nov 1998 21 :47:09 GMT
`
`Download Header:
`<body>
`Filelist:7
`</body>
`
`FIG. 10
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 11 of 12
`
`US 6,493,871 Bl
`
`File Download Data Format
`
`180
`(
`
`Field Name
`
`Field Size
`
`Description
`
`File Index
`
`Attributes
`
`FileSize
`
`2
`
`2
`
`4
`
`0=1 st file in Request, 1 =2nd, etc.
`
`0=normal, 1 =compressed, 2=patch
`
`length of the FileData field
`
`FileData
`
`(FileSize)
`
`contents of file
`
`FIG. 11
`
`Redacted
`
`
`
`U.S. Patent
`
`Dec. 10, 2002
`
`Sheet 12 of 12
`
`US 6,493,871 Bl
`
`72
`
`CLIENT
`
`EXISTING
`FILES
`
`86
`
`76
`
`UPDATE
`SETUP
`SERVER
`
`100
`
`UPDATE
`REQUEST
`
`Initial Setup
`Packa e
`EXECUTABLE
`
`Setup Program
`Master Script
`
`196
`I Supp. Request~
`
`Supp. Reply
`Component
`Scripts
`
`200
`
`198
`
`FIG. 12
`
`Redacted
`
`
`
`US 6,493,871 Bl
`
`1
`METHOD AND SYSTEM FOR
`DOWNLOADING UPDATES FOR SOFTWARE
`INSTALLATION
`
`TECHNICAL FIELD OF THE INVENTION
`
`This invention relates generally to the installation and
`updating of computer software products, and more particu(cid:173)
`larly to the downloading of update data needed for updating
`a software product or components thereof.
`
`BACKGROUND OF THE INVENTION
`
`Most popular software products nowadays constantly go
`through revisions to fix "bugs" or add new features and
`functionality. To that end, each revision of a software
`product or component may require the addition of new files
`and/or the replacement of existing files with files of newer
`versions. Once a vendor has isolated a software product
`problem and created a solution for the problem, it would
`want to put that fix into an update and make the update
`widely available to the customers. Software vendors have a
`business incentive to distribute software updates to custom-
`ers as quickly and trouble-free as possible.
`The Internet provides an important channel for customers
`to obtain the latest updates for software products. The
`explosive growth of Internet usage has created a common
`expectation by customers that software products and updates
`be provided online for downloading. It is also in the interest
`of software vendors to promote the use of the Internet to
`distribute updates, because it reduces their costs and allows
`customers to obtain the fix for an identified problem as soon
`as the fix is made available for downloading. The vendor
`sites on the Internet can be designed to make it very simple
`to discover and locate update files for an application. The
`technical aspects of file download have mostly disappeared
`from the user's view, and are now typically handled by the
`operating system.
`In a conventional approach, a software vendor constructs
`a software update as a "package" for download. This pack(cid:173)
`age is typically a self-extracting executable file with the
`setup program and each of the product's updated files
`embedded and compressed to make the package smaller. The
`size of the package is generally the sum of the compressed
`sizes of each changed file, plus the size of the extraction 45
`code itself. Upon execution, the package extracts each of the
`contained files to a temporary location, then starts the setup
`program to install each file to a proper location in the
`system's directory. Files that are shipped in a compressed
`form are decompressed as they are installed. Any existing 50
`file of the same name in the same location would simply be
`overwritten by the replacement file.
`Even though the Internet makes wide and quick distribu(cid:173)
`tion of software updates possible, the limited bandwidth of
`network transmission has caused problems. The sheer sizes 55
`of common software applications have caused the download
`sizes of updates to become unreasonable large. Usually a
`multitude of fixes for a variety of problems of a product will
`be grouped into an update. If a vendor updates a software
`product on a regular basis, the download size of the update 60
`package will continue to grow, because the vendor cannot
`omit files under the assumption that the user already has
`those files from earlier updates. Because the update package
`combines a number of whole files, it may be quite large even
`when the files are compressed. Sometimes, even on the 65
`fastest modem connections, several hours are needed to
`obtain the update for a single product.
`
`2
`The time-consuming aspect of the conventional down(cid:173)
`loading process is, of course, undesirable. In some cases,
`customers pay long-distance or connection time charges
`during these file downloads. Any reductions in connection
`time will reduce the direct monetary cost for these custom(cid:173)
`ers. The vendors typically also have some distinguishable
`costs relating to the sizes of downloads they provide, so
`reducing the sizes may give them direct monetary benefits as
`well. Reducing the sizes of downloads will increase their
`10 available network bandwidth, allowing them to serve more
`customers with existing network server equipment.
`The long time it takes to download a large update also
`makes the downloading process more vulnerable to various
`network connection problems. There are a number of rea-
`15 sons why an Internet session might be disconnected
`prematurely, including telephone line noise, call-waiting
`signals, and unintentional commands. Some Internet service
`providers enforce a connection time limit, limiting the
`amount of time the user can be on-line in a single session.
`20 If the user is downloading a large file when the network
`connection is cut off, they may have to start over. Most
`common operating systems and file transfer protocols do not
`allow the file transfer to be resumed, so any interim progress
`would be lost, and the transfer would have to be restarted.
`25 The opportunities for failure are so numerous that many
`users find it nearly impossible to obtain the update online. If
`the size of an update package is too large, they may never be
`able to completely download it.
`Another significant drawback of the conventional update
`30 downloading approach is that it can be fairly inefficient.
`Many downloaded files are actually never used for updating
`the software product. Larger software applications fre(cid:173)
`quently have a wide variety of installation options, and very
`few customers will actually use all of these options. Some
`35 examples include spell checkers, document templates, and
`assistance features for the visually impaired. Another
`example of common installation option relates to drivers for
`printers. Most users will need only one or two printer drivers
`out of a collection of hundreds. Since the vendor has no way
`40 of knowing in advance which options will be needed, it
`would normally include the fixes for all product options in
`the update package. At setup time, the setup program will
`recognize that certain files do not need to be installed, so
`some of the data that was downloaded will be discarded.
`Since some software products, such as the spell checker,
`share files with other products, it is possible that the cus(cid:173)
`tomer will already have installed one or more of the updated
`files on the system. Again, some of what was downloaded
`(the spell-checker, in this case) will be discarded.
`More recently, vendors have begun to utilize binary
`patching techniques to update older versions of files into
`their new forms. The changes needed to modify an existing
`file into a new form are detailed in a "patch." Usually,
`itemizing the changes needed to alter an existing file will
`take significantly less space than the entire new file would.
`Data compression techniques will frequently reduce execut-
`able files by a ratio of about 3:1, proportional to the original
`file size. In comparison, the latest file patching techniques
`achieve ratios more closely proportional to the size of the
`changed contents, and patching "compression" ratios
`between 10:1 and 100:1 are common.
`To utilize patching for software updates, the vendor must
`be aware of which versions of files have already been
`distributed. Most patching tools will accept multiple "old"
`file versions as input, and produce a patch that is usable on
`any of those versions processed. The patch, however, cannot
`be used to convert a version that is not included in the input
`
`Redacted
`
`
`
`US 6,493,871 Bl
`
`4
`supplied. The downloading of a patching package is also
`subjected to all the connection problems experienced by the
`full-file download approach. In short, a patching download
`has many of the deficiencies of a full download, except
`possibly the reduced download size. The added possibility of
`errors due to file-patch mismatch, however, may make this
`approach unacceptable to many users.
`Thus, there is a great need for a more efficient and robust
`way to download update data for installing a revised soft-
`10 ware product.
`
`3
`for generating the patch. The patch produced for multiple
`older versions will be larger than a patch prepared for only
`one of the older versions.
`A download package that exploits patching is typically an
`executable file with the setup program and a patch for each
`of the product's updated files embedded. The size of the
`update file to be downloaded is generally the sum of the
`sizes of each patch file plus the size of the extraction code
`itself. Upon execution on a customer's computer, the setup
`program reconstitutes each of the updated files by combin(cid:173)
`ing the existing files on the customer's computer with the
`corresponding patch data. The included setup program then
`installs each reconstituted file to the proper locations in the
`system's directory structure. Patches, of course, cannot not
`be used to update files that have not been previously shipped 15
`to the customer or somehow are not found on the customer's
`system, and the full copies (which may or may not be
`compressed) of such files have to be downloaded. An update
`package containing mostly patches and few or no complete
`files can potentially be significantly smaller than a package 20
`with most full files. A patch package may thus require
`considerably less time to download as compared to conven(cid:173)
`tional update packages.
`The patching download approach, however, still has many
`of the other deficiencies of a full download. Moreover, it 25
`introduces a few new, and much more serious, opportunities
`for failure. The additional risks in patching download come
`from the need to try to anticipate, at the time the package is
`constructed, which versions of which files will be present on
`a customer's system. If the vendor has shipped multiple 30
`versions, interim releases, test fixes, or previous update
`packages, then every revision of an existing file should be
`considered in preparing a patch. If the customer's system
`contains a version of a file that was overlooked by the
`vendor (for example, an update that was subsequently pro- 35
`duced for another problem), the customer will discover only
`after downloading the package that one or more of the
`patches cannot be applied. If the vendor has not included any
`provision to deal with this scenario, the customer may end
`up running an untested combination of programs. For an 40
`operating system update, the user may not even be able to
`restart their machine to try another update. For many
`customers, this risk may outweigh any benefit of implement(cid:173)
`ing the update.
`Thus, supplying every prior revision of each file of the 45
`software product to the patch generator appears crucial to
`avoid the patch-mismatching problem. Careful tracking pro(cid:173)
`cedures can be used to make sure no revisions are missed
`from the from the update package. The size benefit of a patch
`download, however, can dissipate quickly if the vendor 50
`attempts to include patching data for all earlier versions of
`the files of the software product. Each additional prior
`version supplied to the patch generator will cause the patch
`size to increase. For instance, an operating system may have
`thirty major service packs and a thousand minor updates 55
`supplied over its lifetime. The patching package may
`become so large that it would be better to ship that full file
`in compressed form instead, thus defeating the purpose of
`using binary patching in the first place.
`The patch download approach, like the full-file download 60
`approach, is also not satisfactory in terms of efficiency and
`reliability. When a patch file contains change information for
`multiple revisions, it will be larger than it would be for any
`one of those revisions. The difference in size is recognized
`as additional downloaded data that will be discarded. 65
`Patches for options that might not be installed and patches
`for shared files that might already be installed must be
`
`SUMMARY OF IBE INVENTION
`In view of the foregoing, the present invention provides a
`method and system of downloading update data for install(cid:173)
`ing a software product on a client computer that minimizes
`the amount of data to be downloaded by downloading only
`those files needed to update the client computer. In the
`beginning of the downloading process, the client computer
`obtains from a setup server an initial setup package, which
`includes a setup program and a list of files required for
`installing the software product on the client computer. The
`setup program running on the client computer determines
`whether some current or earlier versions of those files
`required for installation already exist on the client computer,
`and compiles a download request with a list of files needed
`for updating the client to provide the required installation
`files. The download request is automatically sent to a second
`server (which may be the same as the setup server) that
`stores a collection of update data, such as files and patches.
`The second server, in response to the request, prepares
`update files corresponding to the requested files and down(cid:173)
`loads them to the client. The downloaded files may or may
`not be exactly the requested files. Using the downloaded
`files, the setup program updates the existing files to create
`the set of installation files for the revised software product
`on the client computer. The revised software product is then
`installed on the client computer.
`Additional features and advantages of the invention will
`be made apparent from the following detailed description of
`illustrative embodiments, which proceeds with reference to
`the accompanying figures.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`While the appended claims set forth the features of the
`present invention with particularity, the invention, together
`with its objects and advantages, may be best understood
`from the following detailed description taken in conjunction
`with the accompanying drawings of which:
`FIG. 1 is a block diagram generally illustrating an exem(cid:173)
`plary computer system on which the present invention
`resides;
`FIG. 2 is a schematic diagram showing a system embody(cid:173)
`ing an architecture for downloading updates for installing a
`revised software product on a client computer according to
`the invention;
`FIG. 3 is a schematic diagram showing an embodiment in
`which a client computer obtains an initial setup package for
`update downloading;
`FIG. 4 is a diagram showing the contents of an exemplary
`script file extracted from the setup package that contains
`information regarding files required for installing the revised
`software product;
`FIG. 5 is a diagram showing a list of files identified as
`needed by the client computer for downloading;
`FIG. 6 is a diagram showing a download request incor(cid:173)
`porating the list of needed files of FIG. 4;
`
`Redacted
`
`
`
`US 6,493,871 Bl
`
`5
`FIG. 7 is a schematic diagram showing an embodiment in
`which the client computer interacts with a download server
`to download update files;
`FIG. 8 is a diagram showing a list of update files main(cid:173)
`tained by the download server for installing the revised
`software product;
`FIG. 9 is a diagram showing contents of a reply package
`containing update files to be downloaded to the client
`computer;
`FIG. 10 is a diagram showing contents of a reply of an
`alternative embodiment with dynamic file ordering in the
`downloaded data stream;
`FIG. 11 is a diagram showing a data structure for use in
`the reply of FIG. 10 for dynamic file ordering; and
`FIG. 12 is a schematic diagram showing the downloading
`of setup information from a setup server to a client in an
`alternative embodiment.
`
`DETAILED DESCRIPTION OF IBE
`INVENTION
`Turning to the drawings, wherein like reference numerals
`refer to like elements, the invention is illustrated as being
`implemented in a suitable computing environment.
`Although not required, the invention will be described in the
`general context of computer-executable instructions, such as
`program modules, being executed by a personal computer.
`Generally, program modules include routines, programs,
`objects, components, data structures, etc. that perform par(cid:173)
`ticular tasks or implement particular abstract data types.
`Moreover, those skilled in the art will appreciate that the
`invention may be practiced with other computer system
`configurations, including hand-held devices, multi(cid:173)
`processor systems, microprocessor based or programmable
`consumer electronics, network PCs, minicomputers, main(cid:173)
`frame computers, and the like. The invention may also be
`practiced in distributed computing environments where
`tasks are performed by remote processing devices that are
`linked through a communications network. In a distributed
`computing environment, program modules may be located
`in both local and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple(cid:173)
`menting the invention includes a general purpose computing
`device in the form of a conventional personal computer 20,
`including a processing unit 21, a system memory 22, and a
`system bus 23 that couples various system components
`including the system memory to the processing unit 21. The
`system bus 23 may be any of several types of bus structures
`including a memory bus or memory controller, a peripheral
`bus, and a local bus using any of a variety of bus architec(cid:173)
`tures. The system memory includes read only memory
`(ROM) 24 and random access memory (RAM) 25. A basic
`input/output system (BIOS) 26, containing the basic routines
`that help to transfer information between elements within
`the personal computer 20, such as during start-up, is stored
`in ROM 24. The personal computer 20 further includes a
`hard disk drive 27 for reading from and writing to a hard disk
`60, a magnetic disk drive 28 for reading from or writing to
`a removable magnetic disk 29, and an optical disk drive 30
`for reading from or writing to a removable optical disk 31
`such as a CD ROM or other optical media.
`The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter(cid:173)
`face 33, and an optical disk drive interface 34, respectively.
`The drives and their associated computer-readable media
`provide nonvolatile storage of computer readable
`
`6
`instructions, data structures, program modules and other
`data for the personal computer 20. Although the exemplary
`environment described herein employs a hard disk 60, a
`removable magnetic disk 29, and a removable optical disk
`31, it will be appreciated by those skilled in the art that other
`types of computer readable media which can store data that
`is accessible by a computer, such as magnetic cassettes, flash
`memory cards, digital video disks, Bernoulli cartridges,
`random access memories, read only memories, and the like
`10 may also be used in the exemplary operating environment.
`A number of program modules may be stored on the hard
`disk 60, magnetic disk 29, optical disk 31, ROM 24 or RAM
`25, including an operating system 35, one or more applica(cid:173)
`tions programs 36, other program modules 37, and program
`15 data 38. A user may enter commands and information into
`the personal computer 20 through input devices such as a
`keyboard 40 and a pointing device 42. Other input devices
`(not shown) may include a microphone, joystick, game pad,
`satellite dish, scanner, or the like. These and other input
`20 devices are often connected to the processing unit 21
`through a serial port interface 46 that is coupled to the
`system bus, but may be connected by other interfaces, such
`as a parallel port, game port or a universal serial