throbber
(12) United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket