throbber
as United States
`a2) Patent Application Publication co) Pub. No.: US 2001/0029605 Al
`(43) Pub. Date:
`Oct. 11, 2001
`FORBES etal.
`
`
`US 20010029605A1
`
`(54) SOFTWARE PACKAGE MANAGEMENT
`
`(22)
`
`Filed:
`
`Jun. 19, 1998
`
`(76)
`
`Inventors: JONATHAN A. FORBES,
`BELLEVUE, WA (US); JEREMYD.
`STONE, BELLEVUE,WA (US);
`SRIVATSAN PARTHASARATHY,
`ISSAQUAH,WA (US); MICHAEL
`TOUTONGHI, SEATTLE, WA(US);
`MICHAELV. SLIGER, ISSAQUAH,
`WA (US)
`
`Correspondence Address:
`KLARQUIST SPARKMAN CAMPBELL
`LEIGH & WHINSTON LLP
`121 S.W. SALMON STREET
`SUITE 1600
`PORTLAND, OR 97204 (US)
`
`(*)
`
`Notice:
`
`This is a publication of a continued pros-
`ecution application (CPA) filed under 37
`CER 1.53(d).
`
`(21) Appl. No.:
`
`09/099,570
`
`Publication Classification
`
`Tint, Cd?eceecccseeeecscenseneeeseennneeeceeeeen GO6F 9/44
`(SV)
`(52) US. Ce ieee cecsessesesnserteenmessneseteeeseenneesnees 717/11
`
`(57)
`
`ABSTRACT
`
`A software package manager uses a distribution unit con-
`taining components for a software package and a manifest
`file that describes the distribution unit to managethe instal-
`lation, execution, and uninstallation of software packages on
`a computer. Information in the manifestfile pertaining to a
`software package is stored in a code store data structure
`upon installation of the package. The manifest file also
`contains information that permits the software package
`manager to resolve any software dependencies uponinstal-
`lation. The software package manager uses the code store
`data structure to locate the required components when the
`software is executed and to remove the components appro-
`priately when the software is uninstalled.
`
`47
`
`MONITOR
`
`48
`
`
`
`PROCESSING
`VIDEO
`OPERATING
`[3°
`UNIT
`
`
`SYSTEM
`
`APPLICATION)96
`
`SYSTEM BUS
`
`
`PROGRAMS
`
`
`32
`33
`34
`OTHER|37
`SERIAL
`PROGRAM
`
`K||MAGNETIC. DISK OPTICAL
`WERE
`DRIVE
`DRIVE
`PORE
`MODULES
`
`
`
`INTERFACE INTERFACE||INTERINTERFACE
`
`
`
`PROGRAM
`[== }-50
`DATA
`24
`[2-28
`
`
`
`
`cD SSIS
`\ b29
`a
`OY Geel
`5
`“
`38s
`37
`35 36
`42
`-
`OGRAM
`40 __ {ono|
`
`OPERATING [APPLICATION|OTHER|PR
`RAMS|PROGRAM|DATA
`
`APPLICATION|~~ 0
`36~|
`‘PROGRAMS
`5
`
`
`
`
`
`REMOTE
`COMPUTER
`
`49~
`
`Google Exhibit 1015
`Google v. VirtaMove
`
`Google Exhibit 1015
`Google v. VirtaMove
`
`

`

`US 2001/0029605 Al
`
`Lv
`
`gS
`
`Oct. 11, 2001 Sheet 1 of 8
`
`Patent Application Publication waindNoo
`a1owgy|©”
`eG(ti—recon
`OMENVEN30MFc
`YOLINON
`SMOMIN1d0dSAU3AudJAN
`
`FOVINGINIJOVINAINI||SOWSYSINI3OVIYSIN!
`
`WasWolldOYSIGDUSNOVN||xSIG_G8VHSIINGON
`
`JOvsuaNI
`
`WVUdONd
`
`eee
`
`
`
`

`

`US 2001/0029605 Al
`
`VoOld
`
`Patent Application Publication
`
`Oct. 11,2001 Sheet 2 of 8
`
`asvavivd
`
`LSSdINVN
`GATIVISNITO>4------4---LOT
`qovaovdaqpveowd
`
`
`
`WALNANODTVOOT
`
`LSasdINVIN
`
`law
`
`YWIOVNVANOLLNETYLSIA
`
`
`
`602LLINA
`
`NOLLNERss!d
`
`602|LINN
`
`LOC1aT
`
`

`

`Patent Application Publication
`
`Oct. 11,2001 Sheet 3 of 8
`
`US 2001/0029605 Al
`
`qsvavivdWIOVNVNNNOLLNENRILSIANOLLNGILSIA
`qDvwAovVd<>qoVvAOV<LIZHeos
`WATVISNISOPeperzal
`LSaaINVANLSadINVA
`
`7LINN
`
`61c
`
`617
`
`ZLIND
`
`€0Z102
`
`
`
`WALNAWODTV90'1
`
`WAAMS
`
`TWOOT
`
`AYOLOTUIA
`
`dz‘Old
`
`
`
`
`
`
`
`

`

`Patent Application Publication
`
`
`aASVaVLVGWaAOVNYWNOILNERILSIG
`GATIVISNI0>feeeae
`aovaovdAOWAOVLOZ
`
`LSAsaINVAN
`
`Oct. 11,2001 Sheet 4 of 8
`
`US 2001/0029605 Al
`
`TVOOT
`
`AYOLOTUIG
`
`O7O14
`
`602
`
`1LIND
`
`€1@
`
`£07
`
`9TVD01 YWALNAWO
`
`
`
`
`

`

`
`
`Patent Application Publicatiation Oct. 11,2001 Sheet;
`
`5 of 8
`
`US 2001/0029605 Al
`
`FIG. 3A
`
`
`
`
`
`
`Acquire
`distribution
`
`
`5 ackage
`Yes
`unitfile
`
`already
`
`installed?
`
`300
`
`301
`
`303
`
`Acquire
`manifest
`file
`
`Process
`
`
`
`previous
`manifest
`file
`
`
`
`
`
`exists?
`
`
`
`
`
`
` Create Directory
`
`
`directory
`
`
` Extract
`
`components
`
`
`
`Invoke
`installation
`facility
`
`
`
`Update code
`store data
`structure
`
`
`
`
`
`321
`
`\s this a
`dependent
`package?
`
`

`

`Patent Application Publication Oct. 11,2001 Sheet 6 of 8
`
`US 2001/0029605 Al
`
`330
`
`code store
`data structure
`
` Store
`component
`namesin entry
`
`
`Any shared
`
`
`
`
`components?
`
`Yes
`
`FIG. 3B Create entry in
`
`
`
`
`
`dependent?
`
`
`
`
` Update
`
`Remove
`older
`previous
`
`
`
`entry
`
`
`
`Update
`corresponding
`
`
`entry
`
`337
`
`Compare
`versions
`
` Version
`
`339
`New > previous?
`
`No
`
`49
`
`
`Yes
`
`Version
`
`354
`
`Remove
`one
`
` Return
`
`

`

`Patent Application Publication Oct. 11,2001 Sheet 7 of 8
`
`US 2001/0029605 Al
`
`370
`
`Execution
`
`
`
`Find package
`entry in code store
`data structure
`
`
`
`Getlocation of
`each component
`
`
`
`
`
`
`
`Return
`
`
`
`FIG. 3C
`
`380
`
`
`
`Uninstall
`
`Remove package
`entry in the code
`store data structure
`
`Delete components
`not poined to by
`other entries
`
`
`
`
`
`Return
`
`FIG. 3D
`
`

`

`Patent Application Publication Oct. 11,2001 Sheet 8 of 8
`
`US 2001/0029605 Al
`
`
`
`Component version_|
`|
`field 411
`|
`ns q
`!
`component type
`l
`|
`field 413
`po |
`|
`Digital signature
`|
`field 415
`
`

`

`US 2001/0029605 Al
`
`Oct. 11, 2001
`
`SOFTWARE PACKAGE MANAGEMENT
`
`RELATED APPLICATION
`
`[0001] This application is related to U.S. patent applica-
`tion Ser. No. 08/764040,titled AUTOMATIC SOFTWARE
`DOWNLOADING FROM A COMPUTER NETWORK,
`filed on Dec. 12, 1996, and assigned to the assignee of the
`present application.
`
`COPYRIGHT NOTICE/PERMISSION
`
`[0002] A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`The copyright owner has no objection to the facsimile
`reproduction by anyone of the patent documentorthe patent
`disclosure as il appears in the Patent and Trademark Office
`patent file or records, but otherwise reserves all copyright
`rights whatsoever. The following notice applies to the soft-
`ware and data as described below and in the drawing, hereto:
`Copyright @ 1997, Microsoft Corporation, All Rights
`Reserved.
`
`FIELD OF THE INVENTION
`
`‘Ihis invention relates generally to software distri-
`[0003]
`bution, and more particularly to the managementof software
`packages after distribution.
`
`BACKGROUND OF THE INVENTION
`
`[0004] Historically, the primary medium for software dis-
`tribution has been either the traditional floppy disk or the
`more recent compact disc (CD-ROM). However, more and
`more individuals are acquiring software by downloadingit
`from remote server computers connected to the client com-
`puters through the Internet. Additionally, companies and
`organizations are distributing software to their users across
`their local area networks. The physical medium is the
`network cable itself and the supporting communication
`hardware, a fixed cost associated with the establishment of
`the network. Therefore, distributing and installing software
`over an existing network bypasses the cost overhead of
`producing CDs or floppy disks.
`
`In addition, using the network as the distribution
`[0005]
`medium profoundly reduces the software’s total cost of
`ownership to an extent that cannot be achieved by CDsor
`floppies even when the media cost almost nothing to manu-
`facture. Software distribution via CDs and floppies obeythe
`“pull” paradigm, where every action is user-initiated. Dis-
`tribution over the network has the ability to apply a “push”
`paradigm which provides three main benefits.
`
`First, the installation is “hands-free”in that the user
`[0006]
`does not have to manually install the software. Second, the
`software can be easily and timely upgraded from a desig-
`nated location because the burden of upgrading is borne by
`the software itself. Third, because different types of com-
`puter hardware and operating systems can connect
`to a
`common network, software distributed over the network can
`be made to work across platformsor intelligent so that only
`the correct version of platform-specific software is pushed
`downto the user.
`
`[0007] However, current methods of software distribution
`over a network do not fully exploit the benefits. Existing
`distribution of platform-specific, or “native code,” software
`
`relies on installation file formats that are hard to create, not
`extensible, and specific to a particular operating system.
`Although most current software is written in modules, there
`is no current mechanism that handles the situation where one
`
`component in a software program requires the presence of
`anotherto operate. If a user downloads software from a Web
`page, the user may discover that the program requires an
`external library which necessitates another network session
`to download, assuming the user can find the right location,
`and then the user must manually install the library before
`installing the software.
`
`[0008] Software programswritten in the popularplatform-
`independent Java language require that the Java classes be
`“packaged” for distribution but the package does not contain
`persistent information so once Java software is installed on
`a client computer, all
`information about it is lost.
`It
`is
`impossible to tell what the version numberis, where it came
`from, or whom the author is. Additionally,
`the current
`network distribution methods make it difficult to digitally
`sign a Java package [or securily purposes.
`
`[0009] More problemsarise when a user wants to execute
`an application which depends on both native code compo-
`nents and Java components since the distribution methods
`are completely different. Finally, once the software is down-
`loaded and successfully installed on the client computer, no
`mechanism exists to track all of the components so that older
`versions can be easily superceded when newer version are
`available or that all the related components can be readily
`uninstalled when necessary.
`
`[0010] Therefore, there is a need for a software distribu-
`tion and tracking mechanism that handles cross-platform
`software, specifies the component dependencies, and is
`applicable to both the older distribution media as well as to
`the network distribution paradigm.
`
`SUMMARY OF THE INVENTION
`
`{0011] The above-mentioned shortcomings, disadvantages
`and problems are addressed by the present invention, which
`will be understood by reading and studying the following
`specification.
`
`[0012] A software package manager uses a distribution
`unit containing components for a software package and a
`manifest file that describes the distribution unit to manage
`the installation, execution, and uninstallation of software
`packages on a computer. For installation, the package man-
`ager acquires the manifest file and parses it to learn if the
`software package depends on any additional components.
`The package manager resolves any dependencics by acquir-
`ing a distribution unit containing the needed component and
`installs the dependency’s distribution unit as described
`below. Because dependencies can nested within dependen-
`cies,
`the package manager recursively processes all
`the
`dependenciesbeforefinishing the installation of the software
`package that depends upon the additional components.
`
`[0013] The software package manager acquires the distri-
`bution unit and extracts the components in the distribution
`unit into a directory on the computer. The package manager
`causcs the operating system of the computer to install the
`software. The package manager then updates a code store
`data structure with information in the manifest file. The
`ficlds in the code store data structure contains such infor-
`
`

`

`US 2001/0029605 Al
`
`Oct. 11, 2001
`
`mation as the nameandversion of the distribution unit, a list
`of the components and their location on the computer, and
`the source of the distribution unit. Additional fields in the
`
`code store data structure can also contain a component
`version, a componentdata type, and a digital signature if one
`wasaffixed to the distribution unit.
`
`[0014] During the installation, the package manager can
`optionally scan the code store data structure to determine if
`a componentto be installed already exists on the computer
`and updates the code store data structure with the location of
`the later version of the component.
`
`[0015] When a user requests execution of software, the
`package manager uses the code store data structure to locate
`the appropriate componentsfor the operating system to use.
`When the user requests the uninstallation of a software
`package, the package managerdeletes the appropriate com-
`ponents from the computer and updates the code store data
`structure accordingly.
`
`[0016] The manifest file and distribution unit optionally
`are combined into a distribution unitfile.
`
`[0017] The manifest file format is commonacrossall types
`of code and operating systems and easily extended to
`embrace new code typesare they arise. The manifest file and
`distribution unit can be stored on all types of media from
`traditional magnetic and optical disks to networked servers.
`The distribution units for dependencies do not haveto reside
`on the same type of media as the distribution unit or the
`manifest file that refers to the dependency. More than one
`distribution unit can be resident in a distribution unit file and
`a distribution unit file can contain a mixture of distribution
`units containing different code types.
`
`[0018] Thus, the software package manager, the manifest
`file, the distribution unit and the code store data structure of
`the present
`invention solve the problems with existing
`distribution mechanisms. The manifestfile is not particular
`to a particular code type or operating system and allows for
`the specification of nested software dependencies. Because
`the manifest file contains the location of the distribution
`
`units for any dependencies, the software package manager
`can acquire and install the dependencies without requiring
`manualintervention by the user. Different types of distribu-
`tion units can be mixed in a distribution unit file so that a
`single mechanism is used to acquire and install all types of
`code.
`
`[0019] The code store data structure maintained by the
`software package manage contains information about the
`installed software such as version and installation location,
`and is used to resolve version discrepancies among software
`programs that share components. The code store data struc-
`ture is used by the package manager to locate necessary
`component whenthe software is executed so that a compo-
`nent stored in one directory can be readily shared by
`software programs with components in different directories.
`Finally, the code store data structure eases the uninstallation
`process by centralizing all the information about installed
`components.
`
`[0020] The present invention describes systems, clicnts,
`servers, methods, and computer-readable media of varying
`scope.
`In addition to the aspects and advantages of the
`present invention described in this summary, further aspects
`
`and advantages of the invention will become apparent by
`reference to the drawings and by reading the detailed
`description that follows.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0021] FIG. 1 shows a diagram of the hardware and
`operating environment in conjunction with which embodi-
`ments of the invention may be practiced;
`
`[0022] FIGS. 2A, 2B and 2C are diagrams illustrating a
`system-level overview of an exemplary embodiment of a
`package manager of the invention;
`
`[0023] FIGS. 3A, 3B, 3C and 3D are flowchart of methods
`to be performed by a client according to an exemplary
`embodiment of the package manager of the invention; and
`
`FIG.4 is a diagram of an exemplary embodiment
`[0024]
`of an entry in a code store data structure suitable for use by
`the methods shown in FIGS. 3A, 3B and 3C.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`In the following detailed description of exemplary
`[0025]
`embodiments of the invention, reference is made to the
`accompanying drawings which form a part hereof, and in
`which is shown by way ofillustration specific exemplary
`embodiments in which the invention may be practiced.
`‘These embodiments are described in sufficient detail
`to
`enable those skilled in the art to practice the invention, and
`it is to be understood that other embodiments maybeutilized
`and that logical, mechanical, electrical and other changes
`may be made without departing from the spirit or scope of
`the present invention. The following detailed descriptionis,
`therefore, not to be taken in a limiting sense, and the scope
`of the present invention is defined only by the appended
`claims.
`
`[0026] The detailed description is divided into five sec-
`tions. In the first section, the hardware and the operating
`environment in conjunction with which embodiments of the
`invention may be practiced are described. In the second
`section, a system level overview of the invention is pre-
`sented.
`In the third section, methods for an exemplary
`embodiment of the invention are provided. In the fourth
`section, a particular Open Software Description implemen-
`tation of the invention is described. Finally,
`in the fifth
`section, a conclusion of the detailed description is provided.
`
`Hardware and Operating Environment
`
`FIG.1 is a diagram of the hardware and operating
`[0027]
`environment in conjunction with which embodiments of the
`invention may be practiced. The description of FIG. 1 is
`intended to provide a brief, general description of suitable
`computer hardware and a suitable computing environment in
`conjunction with which the invention may be implemented.
`Although not required, the invention is described in the
`general context of computer-executable instructions, such as
`program modules, being executed by a computer, such as a
`personal computer. Generally, program modules include
`routines, programs, objects, components, data structures,
`etc., that perform particular tasks or implement particular
`abstract data types.
`
`[0028] Moreover, those skilled in the art will appreciate
`that the invention may be practiced with other computer
`
`

`

`US 2001/0029605 Al
`
`Oct. 11, 2001
`
`system configurations, including hand-held devices, multi-
`processor systems, microprocessor-based or programmable
`consumer electronics, network PCs, minicomputers, main-
`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 maybe located
`in both local and remote memory storage devices.
`
`[0029] The exemplary hardware and operating environ-
`ment of FIG. 1 for implementing the invention includes a
`general purpose computing device in the form of a computer
`20, including a processing unit 21, a system memory22, and
`a system bus 23 that operatively couples various system
`components, including the system memory 22, to the pro-
`cessing unit 21. There may be only one or there may be more
`than one processing unit 21, such that
`the processor of
`computer 20 comprises a single central-processing unit
`(CPU), or a plurality of processing units, commonlyreferred
`to as a parallel processing environment. The computer 20
`may be a conventional computer,a distributed computer, or
`any other type of computer; the invention is not so limited.
`
`[0030] The system bus 23 maybe any of several types of
`busstructures including a memory bus or memory control-
`ler, a peripheral bus, and a local bus using any ofa variety
`of bus architectures. The system memory may also be
`referred to as simply the memory, and 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 computer 20, such as during start-up, is stored in
`ROM 24. The computer 20 further includes a hard disk drive
`27 for reading from and writing to a hard disk, not shown,
`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 ROMorother optical media.
`
`[0031] 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-
`face 33, and an optical disk drive interface 34, respectively.
`The drives and their associated computer-readable media
`provide nonvolatile storage of compulter-readable instruc-
`tions, data structures, program modules and other data for
`the computer 20. It should be appreciated by those skilled in
`the art that any type 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 (RAMs), read only
`memories (ROMs), and the like, may be used in the exem-
`plary operating environment.
`
`[0032] A number of program modules may be stored on
`the hard disk, magnetic disk 29, optical disk 31, ROM 24,or
`RAM 25, including an operating system 35, one or more
`application programs 36, other program modules 37, and
`program data 38. A user may cntcr commandsand informa-
`tion into the personal computer 20 through input devices
`such as a keyboard 40 and pointing device 42. Other input
`devices (not shown) may include a microphone,joystick,
`gamepad,satellite dish, scanner,or the like. These and other
`input devices are often connected to the processing unit 21
`through a scrial port interface 46 that is coupled to the
`
`system bus, but may be connected byother interfaces, such
`as a parallel port, game port, or a universal serial bus (USB).
`A monitor 47 or other
`type of display device is also
`connected to the system bus 23 via an interface, such as a
`video adapter 48. In addition to the monitor, computers
`typically include other peripheral output devices (not
`shown), such as speakers and printers.
`
`[0033] The computer 20 may operate in a networked
`environment using logical connections to one or more
`remote computers, such as remote computer 49. These
`logical connections are achieved by a communication device
`coupled to or a part of the computer 20; the invention is not
`limited to a particular type of communications device. The
`remote computer 49 may be another computer, a server, a
`router, a network PC, a client, a peer device or other
`common networknode, and typically includes manyorall of
`the elements described above relative to the computer 20,
`although only a memory storage device 50 has been illus-
`trated in FIG. 1. The logical connections depicted in FIG.
`1 include a local-area network (LAN) 51 and a wide-area
`network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer net-
`works, intranets and the Internet.
`
`[0034] When used in a LAN-networking environment, the
`computer 20 is connected to the local network 51 through a
`network interface or adapter 53, which is one type of
`communications device. When used in a WAN-networking
`environment, the computer 20 typically includes a modem
`54, a type of communications device, or any other type of
`communications device for establishing communications
`over the wide area network 52, such as the Internet. The
`modem 54, which may be internal or external, is connected
`to the system bus 23 via the serial port interface 46. In a
`networked environment, program modules depicted relative
`to the personal computer 20, or portions thereof, may be
`stored in the remote memory storage device. It is appreciated
`that the network connections shownare exemplary and other
`means of and communications devices for establishing a
`communications link between the computers may be used.
`
`[0035] The hardware and operating environment in con-
`junction with which embodiments of the invention may be
`practiced has been described. The computer in conjunction
`with which embodiments of the invention may be practiced
`may be a conventional computer,a distributed computer, or
`any other type of computer; the invention is not so limited.
`Such a computer typically includes one or more processing
`units as its processor, and a computer-readable medium such
`as a memory. The computer may also include a communi-
`cations device such as a network adapter or a modem,so that
`it is able to communicatively couple to other computers.
`
`System Level Overview
`
`[0036] A system level overview of the operation of an
`exemplary embodiment of the invention is described by
`reference to FIGS. 2A, 2B and 2C. The exemplary embodi-
`ment is implemented in an wide-area networking environ-
`ment 52 having a server computer, such as remote computer
`49 and a user or client computer, such as local computer 20,
`all of which are shown in FIG. 1 and described in the
`
`previous section.
`
`[0037] Fred’s Software Company has written a software
`package named “CoolestApp”that runs as a “plug-in appli-
`
`

`

`US 2001/0029605 Al
`
`Oct. 11, 2001
`
`cation” in a World Wide Web browser, such as Microsoft
`Internet Explorer 4. A plug-in application is often employed
`to provide additional capabilities, such as multimedia or
`interactive controls, to browsers. One type of control appli-
`cation is that written to conform with Microsoft’s ActiveX
`specifications. The plug-ins are usually written in object-
`oriented languages such as C++ or Java and are typically
`used on Web pages. The user may be prompted to download
`the plug-in or it may be automatically downloaded when
`needed.
`
`[0038] Referring to FIG. 2A, Fred’s Software Company
`wants to distribute the CoolestApp over the Internet from
`Fred’s Software Company’s Web server 201 to a user’s
`computer 203. Fred’s Software Companylogically groups
`the components for the CoolestApp together into a “distri-
`bution unit’209. The components can include platform-
`specific compiled binary files such as dynamic linking
`library (dll) files used by the Microsoft Windows family of
`operating systems, Java bytecode (.class) files, or files that
`contain optional installation instructions for how to use
`certain components contained in the distribution unit, for
`example, ActiveX controls may need to be registered before
`use. The distribution unit 209 can be a separate file or can be
`a portion of a “distribution unit file’205 as explained below.
`
`[0039] Fred’s Software Company also creates a “mani-
`fest” file 207 describing the CoolestApp. The CoolestApp
`manifest file 207 contains information about CoolestApp,
`including the name of the CoolestApp distribution unit 209,
`the version numberof the software package (all components
`in the distribution unit 209 have the same version numberin
`this embodiment), and the operating systems under which
`the CoolestApp executes.
`['red’s Software Company
`bundles the CoolestApp distribution unit 209 and manifest
`file 207 into a distribution unit file 205 for storage on the
`server 201.
`
`[0040] The namesof other files in the distribution unitfile
`205, such as a text file containing licensing information or
`a “readme”file containing special instructions for the soft-
`ware package, are listed in the manifest
`file 207. The
`manifest file 207 also contains entries for software that is
`
`required to run CoolestApp but whichis not included in the
`distribution unit file 205. Such required software represent
`“dependencies” and frequently include such items as lan-
`guagelibraries and common objectclass libraries. A depen-
`dency can also be another software package. The manifest
`file 207 provides the ability to describe the software depen-
`dencies in a recursive tree format, also known as a “directed
`graph.”
`
`Inthe present example, CoolestApp is an enhanced
`[0041]
`version of a software program named “CoolApp”previously
`distributed by Fred’s Software Company. Rather than com-
`pletely rewriting CoolestApp, Fred’s Software Company
`used the CoolApp components as a base and created addi-
`tional componentsfor the new features in CoolestApp. In the
`interest of minimizing download time, Fred’s Software
`Company docs not
`include the original components for
`CoolApp in the CoolestApp distribution unit 205. Instead
`Fred’s Software Companyinserts a dependencyentry in the
`manifest file 205 which dirccts a uscr’s browser to the
`
`location on Fred’s Software Companyserver 201 holding
`the distribution unit file 215 for CoolApp asillustrated in
`FIG.2B.
`
`[0042] The browser begins the installation of the Coole-
`stApp software package to the local computer by download-
`ing the CoolestApp distribution unit file 205. A software
`package manager 211 running in the underlying operating
`system on the user’s computer 203 extracts the manifest file
`207 from the distribution unit file 209 and accesses an
`
`installed package database 213 to determine that Fred’s
`Software Company’s CoolestApp is not already installed.
`‘The dependency entry in CoolestApp manitestfile 207 alerts
`the package manager 211 that the CoolestApp depends on
`Fred’s Software Company’s CoolApp. The package man-
`ager 211 determines that CoolApp has not been previously
`installed and directs the browser to download the CoolApp
`distribution unit file 215 from the server location specified in
`the dependency entry.
`
`[0043] Once the CoolApp distribution unit file 215 has
`been downloaded to the user’s computer 203, the package
`manager extracts the CoolApp manifest file 217 and deter-
`mines that CoolApp does not have any dependencies. The
`package manager 211 creates a private directory 221 for
`I'red’s Software Company applications, named I'SC,
`extracts the CoolApp components from the distribution unit
`219 into the FSC directory, and calls the underlying oper-
`ating system installation facility to install
`the CoolApp
`components. ‘The package manager 211 registers the Cool-
`App componentsin the installed package database 213 when
`the installation is successful.
`
`[0044] Referring to FIG. 2C, the package manager 213
`extracts the CoolestApp components from the CoolestApp
`distribution unit 209 to the FSC directory 221, calls the
`installation facility, and registers the CoolestApp compo-
`nents in the installed package database 213. The browser
`now can run the CoolestApp helper application from the
`FSC directory 221.
`
`If the user downloads additional Fred’s Software
`[0045]
`Companyapplications that depend upon the components in
`either CoolApp or CoolestApp, the package manager 211
`will use the already installed components to satisfy any
`dependencies that
`reference installed software package
`unless the additional applications require versionslater than
`that installed.
`
`If after running the CoolestApp helper application,
`[0046]
`the user decides that CoolestApp is not needed,
`the user
`employs the underlying operating systems uninstall facility
`to uninstall CoolestApp. The uninstall facility invokes the
`package manager 211 which determinesif the CoolApp and
`CoolestApp components are being used by other applica-
`tions and deletes the software packages from the FSC
`directory 221 if not. The package manager 211 also deletes
`the package entries from the installed package database 213
`when the packages have been deleted from the FSC direc-
`tory 221.
`
`[0047] The system level overview of the operation of an
`exemplary embodimentof the invention has been described
`in this section of the detailed description. The package
`manager and its supporting files have been described in
`relation to installing a software package having a single
`dependency. While the invention is not
`limited to any
`particular distribution media, for sake of clarity a simplified
`version of Internet software distribution has been described.
`
`

`

`US 2001/0029605 Al
`
`Oct. 11, 2001
`
`Methods of an Exemplary Embodiment of the
`Invention
`
`In the previoussection, a system level overview of
`[0048]
`the operation of an exemplary embodimentof the invention
`was described. In this section, the particular methods per-
`formed by a client or local computer of such an exemplary
`embodiment are described by reference to a series of flow-
`charts. The methods to be performed by the client computer
`constitute computer programs made up of computer-execut-
`able instructions. Describing the methods by reference to a
`flowchart enables one skilled in the art
`to develop such
`programs including such instructions to carry out the meth-
`ods on suitable computerized clients (the processor of the
`clients executing the instructions from computer-readable
`media).
`
`[0049] The software package manager of the present
`invention is described as providing three major functions to
`the runtime environmentof the local computer on whichit
`runsas illustrated in FIGS. 3A-3D. It managesthe installa-
`tion of software packages, it locates necessary components
`when software is executed, and it supports the uninstallation
`of software. The package managerusesthe installed package
`database, also called a “code store” data structure, to track
`components of software packages that have been installed
`on the local computer. One of skill in the art will, upon
`reading the following description of the code store data
`structure, recognize that any type of organized data struc-
`ture, including various type of data bases,is suitable for use
`with the package manager.
`
`[0050] As in the exemplary embodiment described in the
`previous section,
`the manifest file contains dependency
`entries specifying locations of di

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