← Back to Patent Explorer
US6381742B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Software package management

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1998-06-19
•
Granted: 2002-04-30
•
Expires: 2018-06-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract 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. Information in the manifest file 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 upon installation. 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 appropriately when the software is uninstalled.

Inventors

  • 👤 Jonathan A. Forbes
  • 👤 Jeremy D. Stone
  • 👤 Srivatsan Parthasarathy
  • 👤 Michael J. Toutonghi
  • 👤 Michael V. Sliger

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 00:29
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/60; G06F8/61; G06F8/62; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953; Y10S707/99954

Claims Analysis

Total Claims: 54
Claim 1
Independent Claim 232 words
A computerized method for installing a software package on a computer over a network with reference to a code store data structure tracking whether components of software packages are installed on the computer, comprising: downloading to the computer from the network a manifest file that describes at least one distribution unit for a software package, wherein the manifest file specifies a non-local location for acquiring a distribution unit when not present on the computer; resolving software dependencies on the computer for the software package by consulting the code store data structure and the manifest file to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the computer; responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file; causing installation of the software package on the computer; and updating the code store data structure on the computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the computer.
Claim 2
Dependent Claim 232 words
A computerized method for installing a software package on a computer over a network with reference to a code store data structure tracking whether components of software packages are installed on the computer, comprising: downloading to the computer from the network a manifest file that describes at least one distribution unit for a software package, wherein the manifest file specifies a non-local location for acquiring a distribution unit when not present on the computer; resolving software dependencies on the computer for the software package by consulting the code store data structure and the manifest file to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the computer; responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file; causing installation of the software package on the computer; and updating the code store data structure on the computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the computer.
Claim 3
Dependent Claim 113 words
The method of claim 1 , wherein resolving the software dependencies comprises: acquiring, for each of the software dependencies in turn, a dependency manifest file that describes a dependency distribution unit for a dependency software package; resolving software dependencies for the dependency software package as specified by the dependency manifest file; acquiring the dependency distribution unit for the dependency software package; extracting components in the dependency software package from the dependency distribution unit into a directory on the computer; causing the installation of the dependency software package on the computer; and updating the code store data structure on the computer with information from the dependency manifest file pertaining to the dependency software package.
Claim 4
Dependent Claim 21 words
The method of claim 1 , wherein the software dependencies are nested so that resolving the software dependencies is processed recursively.
Claim 5
Dependent Claim 30 words
The method of claim 1 further comprising: locating the components for the software package using the code store data structure when execution of software in the software package is requested.
Claim 6
Dependent Claim 50 words
The method of claim 1 further comprising: modifying the code store data structure to reflect removal of the software package when uninstallation of the software package is requested; and deleting each component for the software package when the code store data structure indicates no other software package uses the component.
Claim 7
Dependent Claim 44 words
The method of claim 1 , wherein the manifest file specifies a directory into which the components of the software package are extracted, the method further comprising: extracting components in the software package from the at least one acquired distribution unit into the directory.
Claim 8
Dependent Claim 14 words
The method of claim 1 , wherein the distribution unit is a compressed file.
Claim 9
Dependent Claim 37 words
The method of claim 1 , wherein the manifest file and the distribution unit comprise a distribution unit file and the manifest file and the distribution unit are acquired by extracting each from the distribution unit file.
Claim 10
Dependent Claim 16 words
The method of claim 8 , wherein the distribution unit file comprises a dependency distribution unit.
Claim 11
Dependent Claim 17 words
The method of claim 8 , wherein the distribution unit file comprises a plurality of distribution units.
Claim 12
Dependent Claim 15 words
The method of claim 8 , wherein the distribution unit file is a compressed file.
Claim 13
Dependent Claim 20 words
The method of claim 1 , wherein the manifest file and the distribution unit are distributed on a computer-readable medium.
Claim 14
Dependent Claim 21 words
The method of claim 1 , wherein the components in the software package and the software dependencies comprise native code components.
Claim 15
Dependent Claim 20 words
The method of claim 1 , wherein the components in the software package and the software dependencies comprise Java classes.
Claim 16
Dependent Claim 27 words
The method of claim 1 , wherein the components in the software package and the software dependencies comprise a mixture of native code components and Java classes.
Claim 17
Dependent Claim 50 words
The method of claim 1 , wherein extracting the components comprises: copying the components from the distribution unit into a file structure having a file directory; updating the file directory with information about each component in the file; and storing the file structure into the file directory on the computer.
Claim 18
Dependent Claim 41 words
The method of claim 1 , wherein the code store data structure resides in an existing system data structure and the step of updating the code store data structure comprises the step of interfacing with an existing system data structure manager.
Claim 19
Dependent Claim 45 words
The method of claim 1 , further comprising: determining when a component in the software package already exists on the computer; comparing the versions of the components; and updating the code store data structure with the location for the component which is the later version.
Claim 20
Dependent Claim 41 words
The method of claim 1 wherein at least one software dependency specifies a plurality of components via a single name; and the code store data structure is operable to indicate, via the single name, whether the plurality of components are installed.
Claim 21
Dependent Claim 143 words
A computerized method for managing software packages on a target computer, comprising the steps of: acquiring, by the target computer, a manifest file that describes at least one distribution unit for a software package, wherein the manifest file is Open Software Description format; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the target computer; acquiring the at least one identified distribution unit for the software package; extracting components in the software package from the at least one acquired distribution unit into a directory on the target computer; causing the installation of the software package on the target computer; and updating a code store data structure on the target computer with information from the manifest file pertaining to the software package.
Claim 22
Dependent Claim 143 words
A computerized method for managing software packages on a target computer, comprising the steps of: acquiring, by the target computer, a manifest file that describes at least one distribution unit for a software package, wherein the manifest file is Open Software Description format; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the target computer; acquiring the at least one identified distribution unit for the software package; extracting components in the software package from the at least one acquired distribution unit into a directory on the target computer; causing the installation of the software package on the target computer; and updating a code store data structure on the target computer with information from the manifest file pertaining to the software package.
Claim 23
Dependent Claim 177 words
A computerized method for managing software packages on a computer comprising the steps of: acquiring, by the computer a manifest file that describes at least one distribution unit for a software package; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the computer; acquiring the at least one identified distribution unit for the software package; extracting components in the software package from the at least one acquired distribution unit into a directory on the computer; causing the installation of the software package on the computer; updating a code store data structure on the computer with information from the manifest file pertaining to the software package; determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the computer; and isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
Claim 24
Dependent Claim 177 words
A computerized method for managing software packages on a computer comprising the steps of: acquiring, by the computer a manifest file that describes at least one distribution unit for a software package; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the computer; acquiring the at least one identified distribution unit for the software package; extracting components in the software package from the at least one acquired distribution unit into a directory on the computer; causing the installation of the software package on the computer; updating a code store data structure on the computer with information from the manifest file pertaining to the software package; determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the computer; and isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
Claim 25
Dependent Claim 267 words
A computer-readable medium having computer-executable instructions to cause a client computer to install a software package via a network on a computer with reference to a code store data structure tracking whether components of software packages are installed on the client computer by performing the following: downloading to the client computer from the network a manifest file and a distribution unit for a software package described by the manifest file from a server computer; resolving software dependencies on the client computer for the software by consulting the code store data structure tracking whether components of software packages are installed on the client computer and the manifest to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the client computer, wherein the manifest file specifies a non-local location for acquiring the distribution unit when not present on the client computer; responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the client computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file; causing the client computer to install the software package; and updating the code store data structure in the client computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the client computer.
Claim 26
Dependent Claim 267 words
A computer-readable medium having computer-executable instructions to cause a client computer to install a software package via a network on a computer with reference to a code store data structure tracking whether components of software packages are installed on the client computer by performing the following: downloading to the client computer from the network a manifest file and a distribution unit for a software package described by the manifest file from a server computer; resolving software dependencies on the client computer for the software by consulting the code store data structure tracking whether components of software packages are installed on the client computer and the manifest to identify at least one distribution unit indicated in the manifest file as depended on by the software package but not yet installed on the client computer, wherein the manifest file specifies a non-local location for acquiring the distribution unit when not present on the client computer; responsive to determining that the code store data structure tracking whether components of software packages are installed indicates the identified depended on distribution unit is not installed on the client computer, acquiring from the network the at least one identified distribution unit for the software package from the non-local location specified in the manifest file; causing the client computer to install the software package; and updating the code store data structure in the client computer to indicate that the at least one identified distribution unit indicated in the manifest file as depended on by the software package and acquired from the non-local location specified in the manifest file is installed on the client computer.
Claim 27
Dependent Claim 109 words
The computer-readable medium of claim 22 , wherein resolving the software dependencies comprises: acquiring, from a server computer for each of the software dependencies in turn, a dependency manifest file that describes a dependency distribution unit for a dependency software package; resolving software dependencies for the dependency software package as specified by the dependency manifest file; extracting components in the dependency software package from the dependency distribution unit into a directory on the client computer; causing the client computer to install the dependency software package; and updating the code store data structure on the client computer with information from each dependency manifest file pertaining to the dependency software package.
Claim 28
Dependent Claim 24 words
The computer-readable medium of claim 22 , wherein the software dependencies are nested so that the client computer processes resolving the software dependencies recursively.
Claim 29
Dependent Claim 42 words
The computer-readable medium of claim 22 , wherein the code store data structure resides in an existing system data structure managed by an operating system in the client computer and updating the code store data structure comprises interfacing with the operating system.
Claim 30
Dependent Claim 142 words
A computer-readable medium having stored thereon a code store data structure for tracking whether components of software packages are installed on a computer, the data structure comprising: a name field containing data representing a name of a distribution unit for a software package installed on the computer; a unit version field containing data representing a version for the distribution unit represented by the name field; a component field containing data representing a list of components in the distribution unit represented by the name field; a location field containing data representing a location, if any, on the computer at which components in the list can be found; and a source field containing data representing a source from which the distribution unit represented by the name field can be acquired by the computer, wherein the source field is operable to specify a non-local location.
Claim 31
Dependent Claim 142 words
A computer-readable medium having stored thereon a code store data structure for tracking whether components of software packages are installed on a computer, the data structure comprising: a name field containing data representing a name of a distribution unit for a software package installed on the computer; a unit version field containing data representing a version for the distribution unit represented by the name field; a component field containing data representing a list of components in the distribution unit represented by the name field; a location field containing data representing a location, if any, on the computer at which components in the list can be found; and a source field containing data representing a source from which the distribution unit represented by the name field can be acquired by the computer, wherein the source field is operable to specify a non-local location.
Claim 32
Dependent Claim 24 words
The computer-readable medium of claim 26 , wherein the component field further comprises a component name field for each component in the distribution unit.
Claim 33
Dependent Claim 53 words
The computer-readable medium of claim 26 , wherein the data structure further comprises: a component version field containing data representing a version for a component in the list represented in the component field; and a component type field containing data representing a data type for the component represented in the component version field.
Claim 34
Dependent Claim 29 words
The computer-readable medium of claim 26 , wherein the data structure further comprises a digital signature data field containing data representing a digital signature affixed to the distribution unit.
Claim 35
Dependent Claim 209 words
A computer system comprising: a processing unit; a system memory coupled to the processing unit through a system bus; a computer-readable medium coupled to the processing unit through the system bus; and a software package manager executed from the computer-readable medium by the processing unit, wherein the software package manager comprises a software installation function that causes the processing unit to store components comprising software and contained in a distribution unit onto a computer-readable medium as directed by a manifest file, to identify and acquire at least one distribution unit listed in the manifest file depended on by the software that a code store data structure indicates is not yet installed from a non-local location listed in the manifest file, to install the software, and to update the code store data structure stored on a computer-readable medium with information contained in the manifest file, a software execution function that causes the processing unit to locate the appropriate components using the code store data structure when the processing unit is instructed to execute the software, and an uninstallation function that causes the processing unit to remove the components from the computer-readable medium and to modify the code store data structure when the processing unit is instructed to uninstall the software.
Claim 36
Dependent Claim 209 words
A computer system comprising: a processing unit; a system memory coupled to the processing unit through a system bus; a computer-readable medium coupled to the processing unit through the system bus; and a software package manager executed from the computer-readable medium by the processing unit, wherein the software package manager comprises a software installation function that causes the processing unit to store components comprising software and contained in a distribution unit onto a computer-readable medium as directed by a manifest file, to identify and acquire at least one distribution unit listed in the manifest file depended on by the software that a code store data structure indicates is not yet installed from a non-local location listed in the manifest file, to install the software, and to update the code store data structure stored on a computer-readable medium with information contained in the manifest file, a software execution function that causes the processing unit to locate the appropriate components using the code store data structure when the processing unit is instructed to execute the software, and an uninstallation function that causes the processing unit to remove the components from the computer-readable medium and to modify the code store data structure when the processing unit is instructed to uninstall the software.
Claim 37
Dependent Claim 52 words
The computer system of claim 30 , further comprising a transport medium coupled to the system bus and further communicatively coupled to a server computer, and wherein the software installation function causes the processing unit to acquire the manifest file and the distribution unit from the server computer through the transport medium.
Claim 38
Dependent Claim 148 words
A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising: downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer, wherein the manifest file is Open Software Description format; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer; acquiring, by the client computer, the at least one identified distribution unit for the software package; extracting components in the at least one acquired software package from the distribution unit into a directory on the client computer; causing the client computer to install the software package; and updating a code store data structure in the client computer with information from the manifest file pertaining to the software package.
Claim 39
Dependent Claim 148 words
A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising: downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer, wherein the manifest file is Open Software Description format; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer; acquiring, by the client computer, the at least one identified distribution unit for the software package; extracting components in the at least one acquired software package from the distribution unit into a directory on the client computer; causing the client computer to install the software package; and updating a code store data structure in the client computer with information from the manifest file pertaining to the software package.
Claim 40
Dependent Claim 189 words
A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising: downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer; acquiring the at least one identified distribution unit for the software package by the client computer; extracting components in the software package from the at least one acquired distribution unit into a directory on the client computer; causing the client computer to install the software package; updating a code store data structure in the client computer with information from the manifest file pertaining to the software package; determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the client computer; and isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
Claim 41
Dependent Claim 189 words
A computer-readable medium having computer-executable instructions to cause a client computer to perform a method comprising: downloading a manifest file and a distribution unit for a software package described by the manifest file from a server computer; resolving software dependencies for the software package as specified by the manifest file by identifying at least one distribution unit depended on by the software package but not yet installed on the client computer; acquiring the at least one identified distribution unit for the software package by the client computer; extracting components in the software package from the at least one acquired distribution unit into a directory on the client computer; causing the client computer to install the software package; updating a code store data structure in the client computer with information from the manifest file pertaining to the software package; determining if the manifest file specifies that the software package cannot share components with a software package previously installed on the client computer; and isolating the components in the software package by associating the components in the code store data structure with a unique execution space specified by the manifest file.
Claim 42
Dependent Claim 152 words
A computer-implemented method for distributing software to a computer having a data structure for tracking whether software components are installed on the computer, the method comprising: downloading to the computer a software package, wherein the software package comprises a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained; consulting the data structure to determine that at least one of the items on the dependency list is not installed on the computer; responsive to determining that the item in the dependency list is not installed on the computer, downloading the item from the remote location specified in the software package; and updating the data structure to indicate that the downloaded item is installed on the computer.
Claim 43
Dependent Claim 152 words
A computer-implemented method for distributing software to a computer having a data structure for tracking whether software components are installed on the computer, the method comprising: downloading to the computer a software package, wherein the software package comprises a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained; consulting the data structure to determine that at least one of the items on the dependency list is not installed on the computer; responsive to determining that the item in the dependency list is not installed on the computer, downloading the item from the remote location specified in the software package; and updating the data structure to indicate that the downloaded item is installed on the computer.
Claim 44
Dependent Claim 26 words
The method of claim 34 wherein the consulting the data structure and downloading the item are performed responsive to execution of software of the software package.
Claim 45
Dependent Claim 174 words
A software installation system for installing software at a computer, the software installation system comprising: a data structure indicating whether or not a software package is installed at the computer; a software package receiver for receiving a software package comprising a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained; a dependency resolver operable to consult the data structure to determine that at least one of the items on the dependency list is not installed on the computer; a downloader responsive to the resolver and operable to download the item from the remote location specified in the software package when it is determined that the item in the dependency list is not installed on the computer; and a data structure updater to update the data structure to indicate that the downloaded item is installed on the computer.
Claim 46
Dependent Claim 174 words
A software installation system for installing software at a computer, the software installation system comprising: a data structure indicating whether or not a software package is installed at the computer; a software package receiver for receiving a software package comprising a dependency list indicating one or more items depended upon by the software package, wherein at least one of the items on the dependency list is not contained in the software package, and the software package indicates a remote location from which the item can be obtained; a dependency resolver operable to consult the data structure to determine that at least one of the items on the dependency list is not installed on the computer; a downloader responsive to the resolver and operable to download the item from the remote location specified in the software package when it is determined that the item in the dependency list is not installed on the computer; and a data structure updater to update the data structure to indicate that the downloaded item is installed on the computer.
Claim 47
Dependent Claim 26 words
The software installation system of claim 36 wherein the dependency resolver is operable to be invoked responsive to execution of the software of the software package.
Claim 48
Dependent Claim 198 words
A computer-implemented method for installing a software package on a computer system, wherein the software package comprises a name and a list of software dependencies, and the computer system comprises a code store data structure indicating whether a software package has been installed, the method comprising: via the software package name, consulting the code store data structure to identify whether the software package is already installed on the computer system; responsive to determining the software package is not already installed on the computer system, consulting the list of dependencies and the code store data structure to identify whether the dependencies are already installed on the computer system, wherein at least one of the dependencies indicates another software package; responsive to determining the dependency that is a software package is not installed, acquiring a list of further dependencies for the dependency that is a software package and consulting the list of the further dependencies and the code store data structure to identify whether the further dependencies are already installed on the computer system; and responsive to determining a dependency is not already installed on the computer system, acquiring the dependency from a location indicated in its respective software package.
Claim 49
Dependent Claim 198 words
A computer-implemented method for installing a software package on a computer system, wherein the software package comprises a name and a list of software dependencies, and the computer system comprises a code store data structure indicating whether a software package has been installed, the method comprising: via the software package name, consulting the code store data structure to identify whether the software package is already installed on the computer system; responsive to determining the software package is not already installed on the computer system, consulting the list of dependencies and the code store data structure to identify whether the dependencies are already installed on the computer system, wherein at least one of the dependencies indicates another software package; responsive to determining the dependency that is a software package is not installed, acquiring a list of further dependencies for the dependency that is a software package and consulting the list of the further dependencies and the code store data structure to identify whether the further dependencies are already installed on the computer system; and responsive to determining a dependency is not already installed on the computer system, acquiring the dependency from a location indicated in its respective software package.
Claim 50
Dependent Claim 19 words
The method of claim 38 wherein the software package comprises a mixture of native code components and Java classes.
Claim 51
Dependent Claim 15 words
The method of claim 38 wherein the software package is distributed via a computer-readable medium.
Claim 52
Dependent Claim 17 words
The method of claim 38 wherein acquiring dependencies is deferred until execution of the software is requested.
Claim 53
Dependent Claim 19 words
The method of claim 38 wherein the list of dependencies specifies at least one item at a remote location.
Claim 54
Dependent Claim 37 words
The method of claim 38 further comprising deleting installed software from the location indicated in the code store data structure when uninstallation is requested and the code store data structure indicates no other installed software depends thereon.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2005-04-29 2005-10-29 2006-04-30 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2009-04-29 2009-10-29 2010-04-30 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2013-04-29 2013-10-29 2014-04-30 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag