`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