Académique Documents
Professionnel Documents
Culture Documents
US 8,495,621 B2
Jul. 23, 2013
7,574,706 B2 *
2003/0181242 A1*
717/174
...................... .. 463/42
(75)
2004/0093593 A1
2004/0093595 A1 * 2005/0091192 A1* 2005/0132349 A1 *
2006/0184932 A1 *
5/2004 Jhanwar et a1
5/2004 Bilange ....................... .. 717/171 4/2005 Probert et a1. 707/1 6/2005 Roberts et a1. 717/168
8/2006 Burnley et a1. 717/174
2007/0061799 A1
3/2007 Kimmerly
C t. d ( on mue )
OTHER PUBLICATIONS
Sonnenberger, Jorg, The redesign of pkg install for pkgsrc,
retrieved at <<http://www.netbsd.0rg/gallery/presentations/joerg/
eurobsdc0n2006/pkgiinstall.pdf>>, Oct. 15, 2006, pp. 1-12.
( * ) Notice:
Subject to any disclaimer, the term of this patent is extended or adjusted under 35
U.S.C. 154 b b 913 d
(Continued)
Primary Examiner * Don Wong Assistant Examiner * Mohammad Kabir (74) Attorney, Agent, or Firm * Wolfe-SBMC
( ) y
ays
(21)
(22) Filed:
(65)
US 2010/0318968 A1
(51)
G06F 17/00
(52)
(58)
Multiple software component identi?ers are maintained in a catalog of an operating system running on a device. Each of these software component identi?ers corresponds to one of multiple software components installed on the device. The catalog is accessed in response to a request regarding one of
US. Cl.
USPC ............................ .. 717/174; 717/ 170; 463/42
(56)
References Cited
U.S. PATENT DOCUMENTS
4,558,413 A *
6,397,378 B1*
information regarding the software component, information regarding the active version of the software component is returned.
. . . . .. 717/175
12/1985
5/2002
7,191,436 B1*
3/2007
110\
Computing Device
122_ (50%;;PIECE?) 7
124
r102
Operating System /- 104
126
Software
Component Access
Control Module r106
US 8,495,621 B2
Page 2
US. PATENT DOCUMENTS
2007/0150587 A1*
2007/0168957 A1*
6/2007
7/2007
2007/0220507 A1*
9/2007
Mikic-Rakic, et al., Architecture-Level Support for Software Com ponent Deployment in Resource Constrained Environments, retrieved at <<http://sunset.usc.edu/~softarch/Prism/publications/ Deployment.pdf>>, pp. 15. International Search Report, Mailed Date: Dec. 30, 2010, Appli
cation No. PCT/US2010/038590, Filed Date: Jun. 15, 2010, pp. 8.
Mikic-Rakin, Marij a et a1 ., Architecture-Level Support for Software
. 717/168
sunset.usc.edu/~softarch/Prism/publications/Deployment.pdf>,
(2002), 15 Pages.
* cited by examiner
US. Patent
Sheet 1 of6
US 8,495,621 B2
\rEOEWZQPQECRT)
l l l | | l l l l l
Software
,
Component
Software
r102
Component
Component Access
Control Module
/-106
112J/
Fig. 1
US. Patent
Sheet 2 of6
US 8,495,621 B2
f_{ 222
Software
Component(1)
\i COmp0r1ent(1) Identifier
206 \\ Component(2) Identifier /
C Softwaret 2
Omponen ( )
d
\\ Component(3) Identifier
[-226
:
208
Component(3)
a
Software
_
\: C0mpOnent(x) Identifier
228 Software
Component(x)
Cat2|8g\ r[24
Fig. 2
US. Patent
Sheet 3 of6
US 8,495,621 B2
300 \
Software Component
302 304
Resource I File
Manifest
Fig. 3
US. Patent
Sheet 4 of6
US 8,495,621 B2
402 \
r Maintain Software Component
Identifiers In Catalog
404 I
Request Regarding
Access Catalog
408 '
Fig. 4
US. Patent
Sheet 5 of6
US 8,495,621 B2
01 O
/ 502
ldentify Multiple Versions Of Software
Component Accessible To A User That is installed On A Device
'
f 504
Component
7 506
In Response To Requests For Information Regarding The Software Component, Return Information Regarding The Active Version Of The Software Component
Fig. 5
US. Patent
Sheet 6 of6
US 8,495,621 B2
OO IQ 602
rocessor
/ 604
Computer Readable
Media
Storage
7 /- 610
<
Bus
V
>
608
l l/O Device
Fig. 6
US 8,495 ,621 B2
1
CATALOG-BASED SOFTWARE COMPONENT MANAGEMENT BACKGROUND
2
software components. Each software component has an iden tity that is maintained in a catalog of an operating system on a computing device. The catalog identi?es which software components are installed on the computing device. The cata
those software components. FIG. 1 illustrates an example computing device 100 imple
different manners, resulting in various ?les and information being stored in numerous locations, folders, and so forth on
when attempting to upgrade the application to a new version, when uninstalling an application, and so forth.
SUMMARY
laptop computer, a mobile station, an entertainment appli ance, a set-top box communicatively coupled to a display
device, a cellular or other wireless phone, a game console, an
the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed sub
ject matter, nor is it intended to be used to limit the scope of
game consoles) to a low-resource device with limited memory and/ or processing resources (e.g., traditional set-top
ating system of a device. Each of these software component identi?ers corresponds to one of multiple software compo nents installed on the device. The catalog is accessed in response to a request regarding one of the multiple software components, and the request is responded to based at least in part on information included in the catalog.
In accordance with one or more aspects, in an operating system of a computing device two or more versions of a
included in computing device 100. Although two software products 110 and 112 are illustrated in the example of FIG. 1,
30
alternatively fewer than two or more than two software prod ucts can be included in computing device 100. Each software
product 110 and 112 includes one or more software compo
nents. In the example of FIG. 1, software product 110 includes software component 122, software component 124, and software component 126, while software product 112 includes software component 126 and software component
128. As can be seen in FIG. 1, multiple different software products can share a software component (e.g., software com
of the software component is an active version of the software component to be run is determined. In response to requests for
information regarding the software component, information regarding the active version of the software component is returned.
BRIEF DESCRIPTION OF THE DRAWINGS
ponent 126).
40
Software component access control module 104 manages the software components installed on computing device 100.
Control module 104 maintains as catalog 106 a record of the software components that are installed on computing device
The same numbers are used throughout the drawings to reference like features.
100 (e.g., software components 122-128 in the example of FIG. 1). Catalog 106 is a record of the software components
45
that are installed on and thus can be run on computing device 100. In order to run a software component on computing
an installation component or module, and typically includes storing ?les in various locations of a ?le system of operating
control module 104 is made aware of the software compo nent, allowing an identi?er of the software component to be added to catalog 106. Such installed software components
can also be referred to as active software components because the software components can be run on computing device 100.
60
Other software components may be stored on computing device 100 but not be installed on computing device 100.
Operating system 102 is typically not aware of such software components, does not include identi?ers of such components
65
DETAILED DESCRIPTION
in catalog 106, and does not support running such software components. Accordingly, such software components can
also be referred to as dormant because although they are
US 8,495 ,621 B2
3
are not installed on computing device 100. It is to be appre ciated that situations can arise where a software component is
4
Each software component 222-228 has a component iden
computing device 100. However, as such software compo nents are not installed on computing device 100, operating system 102 is typically not aware of information regarding
detail below. Alternatively, the component identity can be generated in other manners, such as by the operating system
Software component access control module 104 provides centraliZed management of software components installed on
In other embodiments, catalog 106 includes multiple indexes or portions of software components. These multiple indexes
or portions include, for example, one index or portion that includes all the installed software components installed,
which is also referred to as a full index. These multiple indexes or portions can also include, for example, a second index or portion that includes a subset of software compo nents that satisfy a particular set of rules or criteria, which is
also referred to as an effective index. This set of rules or
20
software components provide the functionality of the soft ware product. Operating system 102 communicates with the individual software components when running, rather than
with the software product as a whole.
Although a single catalog 106 is illustrated in FIG. 1, operating system 102 may alternatively include multiple cata
logs 106. In one or more embodiments, operating system 102
includes a different catalog 106 for each account on comput
inclusion in the effective index. A variety of different rules or criteria can be used to deter mine the versions selected for inclusion in the effective index.
In one or more embodiments, one such rule is a versioning
be set up on computing device 100. Operating system 102 maintains a different catalog 106 for each of these different
sioning rule can be, for example, that the most recent version is to be run (e. g., the version with the highest version number), that the version having a version identi?er in a particular
40
format or having a particular value is to be run, and so forth. In such embodiments, the active version of the software com
45
ponent is included in the effective index and other versions of the software component are excluded from the effective index even though they may be included in the full index. Another rule that can be used to determine the effective index is a policy rule. A policy can be established by, for example, an administrator of computing device 100 or an administrator of a network to which computing device 100 is coupled for a variety of different reasons. This policy can
50
different software components on computing device 100, resulting in different identi?ers being included in different
catalogs 106.
FIG. 2 illustrates an example catalog 200 in accordance
with one or more embodiments. Catalog 200 includes mul
60
tiple software component identi?ers 202, 204, 206, and 208, each identifying a corresponding software component 222, 224, 226, and 228, respectively. The software components
222-228 are the software components that are installed on the
index is a duplicate rule. A duplicate rule speci?es that if multiple copies of the same software component are installed on the computing device, only one such copy is to be main tained in the effective index. Multiple such copies can be
installed for a variety of different reasons, such as as a result
ponent.
FIG. 3 illustrates an example software component 300 in
accordance with one or more embodiments. A software com
US 8,495 ,621 B2
5
ponent is a collection of both one or more ?les and metadata
6
ti?er of software component 300 to the catalog, or altema
tively can communicate with a software component access
catalog.
In one or more embodiments, one or more validation
actions are taken by a software component access control module or by an installation component or module prior to
adding the identi?er of software component 300 to the cata log. A variety of different validation actions can be taken. For
example, a set of rules or criteria can be established that
an identi?er of software component 300. The identi?er of software component 300 allows software component 300 to be distinguished from other software components installed on the device. This identi?er can be made up of various
attributes, such as one or more version numbers of software
(and optionally parts of manifest 304), and an identi?er of the publisher or developer of software component 300. Alterna
conformed to, then the identi?er of software component 300 is not added to the catalog.
By way of another example, a check can be made as to whether a digital signature over resource ?les 302 and/or manifest 304 as discussed above is present in manifest 304. If
manifest 304, then a check is made that the resource ?les 302 and/or manifest 304 over which the digital signature was
made have not been altered since being digitally signed. This
check can include calculating hash values for the resource ?les 302 to verify that the calculated hash values are the same hash values as are stored in manifest 304. Checking that the
30
manifest 304 over which the digital signature is made has not been altered can be performed in any other variety of well
software component 300 is included in manifest 304 matches (e.g., is the same as) a publisher identi?er included in the digital signature. If the resource ?les 302 and/ or manifest 304 over which the digital signature was made have been altered
alternatively another entity that distributes software compo nent 300. The digital signature can be generated using any of a variety of well-known techniques based on public key cryp tography. The digital signature changes if the resource ?les
302 (e.g., due to the hash values of the resource ?les 302 in manifest 304) as well as the other portions of manifest 304
whether a digital certi?cate of the entity that generated the digital signature is included in a certi?cate store of the device on which software component 300 is being installed. Alter natively, rather than being included in the certi?cate store, a
certi?cate chain from a digital certi?cate in the certi?cate
the digital signature can also serve as an identi?er of a par 50 digital signature can be established. If such a digital certi? ticular set of resource ?les 302 as well as the other portions of cate is not included in the certi?cate store (or a certi?cate
55
nents 122-128 can be maintained. These paths can be main tained in catalog 106 or alternatively as metadata in other
services and/or devices. As part of the installation process, the identi?er of software
component 300 is added to the catalog of the particular account of the operating system of the computing device at
the time of installation or alternatively as identi?ed by the installation process. The installation process can add the iden
lar ?les to be retrieved and executed, loaded, or otherwise used as appropriate. For example, paths to icons to be dis played as shortcuts can be maintained, paths to executable ?les can be maintained, paths to dynamic link libraries (DLLs) can be maintained, and so forth. By maintaining these
65
paths, information regarding the software components can be readily identi?ed and returned. For example, if a particular
software component is to be run, the path to an executable ?le
US 8,495 ,621 B2
7
for the software component can be readily identi?ed. By way
of another example, if an icon representing a shortcut to a
8
of catalog 106 and removes the older version of the software
software component is to be displayed, the ?le storing the data for the icon can be readily identi?ed. By way of yet another example, if a DLL is to be loaded, the path to the ?le storing that DLL can be readily identi?ed.
Software component access control module 104 allows various other components and modules to obtain information
software component.
Additionally, each software component has a manifest as
discussed above. In one or more embodiments, the manifest
components 122-128. Information maintained in catalog 106 regarding the installed software components can be returned
to a requesting component or module, or alternatively can be used by control module 104 in generating a response to a
operation. For example, software component 122 may rely on software component 124 also running in the system, and software component 124 may rely on software component 126 also running in the system.
Given this information in the manifests of the software components, control module 104 can readily determine
whether a particular software component can run on comput
ing device 100. For example, control module 104 can access
Operation
Enumerate
Description
Returns a list of catalogs in the operating system.
Returns a catalog for an account speci?ed in the
catalogs
Get catalog
Add component Remove
component
Enumerate components Enumerate Returns a list of the software components in the full index and/or effective index of a catalog. Returns a list of the software components in the full
software components, control module 104 can readily deter mine whether removal of a particular software component from computing device 100 will prevent other software com ponents from running. For example, control module 104 can access the manifest of software component 122 and deter mine that, in order for software component 122 to run that
40
components by identity
index and/or effective index of a catalog speci?ed in the request having a software component identi?er that matches a speci?ed identity. The speci?ed identity can be partial or full. For example, the speci?ed identity
can use wildcards to indicate unspeci?ed attributes or
45
by path
software component 124 (and thus also software component 126) also be running. Accordingly, control module 104 can respond to queries from other components or modules (which can be part of operating system 102 or alternatively separate from operating system 1 02) regarding whether software com ponent 124 can be removed from computing device 100 by indicating that software component 124 cannot be removed
without resulting in at least one other software component
As discussed above, in one or more embodiments the iden ti?er for a software component includes a component identi
?er that identi?es a version number for the software compo nent. In situations where two software components have the
out by a control module of an operating system running on a device, such software component access control module 104
process for catalog-based software component management; additional discussions of catalog-based software component
60
?gures.
In process 400, software component identi?ers are main
number. Control module 104 replaces the older version of the software component with the new replacement version of the
tained in a catalog (act 402). These software component iden ti?ers distinguish software components from one another,
and can take a variety of different forms as discussed above. Multiple different catalogs can be included on a device, each
US 8,495 ,621 B2
10
Eventually, a request regarding a software component is received (act 404). Process 400 waits until such a request is received, and in response to the request accesses the catalog (act 406). The catalog to be accessed can be identi?ed as part of the request, or alternatively can be inherent in the request (e.g., the catalog of a current user of the computing device
Computing device 600 includes one or more processors or
components 606, one or more input/output (I/O) devices 608, and a bus 610 that allows the various components and devices to communicate with one another. Computer readable media
604 and/or one or more I/O devices 608 can be included as
carried out by a control module of an operating system run ning on a device, such software component access control
volatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). Com ponent 606 can include ?xed media (e.g., RAM, ROM, a ?xed
20
module 104 of FIG. 1, and can be implemented in software, ?rmware, hardware, or combinations thereof. Process 500 is an example process for catalog-based software component management; additional discussions of catalog-based soft
ware component management are included herein with ref erence to different ?gures.
hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so
forth).
The techniques discussed herein can be implemented in
software, with instructions being executed by one or more
25
30
puting device 600, such as in a processing unit 602, in various cache memories of a processing unit 602, in other cache memories of device 600 (not shown), on other computer readable media, and so forth. Additionally, it is to be appre
ciated that the location where instructions are stored in com
sions is an active version of the software component (act 504). This determination can be made when the multiple versions
are identi?ed or at other times, and a list of the active versions can be maintained (e.g., as an effective index) as discussed
above. Alternatively, this determination can be made in response to a request for information regarding the software
component.
In response to requests for information regarding the soft ware component, information regarding the active version of
40
microphone, a scanner, and so forth. Examples of output devices include a display device (e. g., a monitor or proj ector), speakers, a printer, a network card, and so forth.
of an operating system implementing process 500, or alter natively other software components as discussed above.
Process 500 refers to a single software component. It is to
includes routines, programs, objects, components, data struc tures, and so forth that perform particular tasks or implement
45
be appreciated that process 500 can be repeated for multiple software components. For example, an effective index of the active versions of multiple software components can be main
tained as discussed above.
can be accessed by a computing device. By way of example, and not limitation, computer readable media may comprise computer storage media and communications media. Computer storage media include volatile and non-vola tile, removable and non-removable media implemented in
any method or technology for storage of information such as
55
operating system when such a change is made. Examples of such changes include installing a software component and uninstalling a software component. Alternatively, acts 502
and 504 can be performed at other times, such as in response to a request for information regarding a software component
60
computer readable instructions, data structures, program modules, or other data. Computer storage media include, but
are not limited to, RAM, ROM, EEPROM, ?ash memory or
other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices,
or any other medium which can be used to store the desired
or catalog, during times of low activity (e.g., when the oper ating system is not busy performing other tasks), and so forth.
FIG. 6 illustrates an example computing device 600 that can be con?gured to implement the catalog-based software
component management in accordance with one or more 65 other data in a modulated data signal, such as carrier wave or
embodiments. Computing device 600 can be, for example, computing device 100 of FIG. 1.
other transport mechanism. Communication media also include any information delivery media. The term modu
US 8,495 ,621 B2
11
lated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode
12
4. One or more computer storage media as recited in claim
1, the effective index including a subset of the full index such that content of the subset is included in both the effective index and the full index.
6. One or more computer storage media as recited in claim
Within the scope of computer readable media. Generally, any of the functions or techniques described
an identi?er of a publisher of the softWare component; a digital signature of the publisher over a manifest storing
softWare component.
8. One or more computer storage media as recited in claim
1, Wherein the request comprises a request for a softWare component identi?er of one of the multiple softWare compo nents that includes a ?le having a given path.
25
1, Wherein the effective index comprises only a single version for each of the multiple softWare components.
10. One or more computer storage media as recited in claim
component.
11. A method, implemented in an operating system of a
that are installed on the computing device; maintaining, in a ?rst index of a catalog, softWare compo
nent identi?ers of each of the tWo or more versions of the
softWare component;
determining Which one of the tWo or more versions of the
40
tive index;
select, from the full index of the catalog that includes each of the multiple softWare component identi?ers, a version
associated With at least one of the multiple softWare component identi?ers to be included in the effective
45
in response to the determining, selecting the active version for inclusion in a second index of the catalog; and returning, in response to requests for information regarding the softWare component, information regarding the active version of the softWare component based, at least in part, on the second index of the catalog.
12. A method as recited in claim 11, the determining com
prising:
50
number of the version; and selecting, as the active version of the softWare component,
the one of the tWo or more versions having a highest
request regarding one of the multiple softWare compo nents; and respond to the request based at least in part on information included in the effective index of the catalog.
2. One or more computer storage media as recited in claim
version number.
55
13. A method as recited in claim 11, Wherein the tWo or more versions of the softWare component each have a soft Ware component identi?er that differs only in a version num
1, Wherein multiple catalogs are on the device, Wherein each of the multiple catalogs corresponds to one of multiple accounts of the operating system, and Wherein the instruc
tions further cause the one or more processors to identify one
ber.
14. A method as recited in claim 11, each softWare com
60
component;
65
a digital signature of the publisher over a manifest storing metadata describing the version of the softWare compo nent; and the version number of the version of the softWare compo
nent.
US 8,495 ,621 B2
13
15. A method as recited in claim 11, further comprising:
14
sion of the softWare component for a different one of multiple user accounts on the computing device, and Wherein the active version of the softWare component is different versions
in different catalogs.
20. A method, implemented by one or more processors of
ponents.
16. A method as recited in claim 11, the determining com
prising:
identifying a set of rules to be used to determine Which of tWo or more versions of a particular softWare component
a computing device, the method comprising: maintaining multiple softWare component identi?ers in a catalog of an operating system, each of the multiple
softWare component identi?ers corresponding to one of multiple softWare components installed on the comput
is the active version of the particular softWare compo nent, the set of rules including a policy rule set by an administrator of a netWork to Which the computing
ing device;
determining, for one or more of the multiple softWare com ponents, Which one of tWo or more versions of the soft Ware component is an active version of the softWare
softWare component.
17. A method as recited in claim 11, further comprising repeating the identifying and determining in response to a
neW version of the softWare component being installed on the
20
computing device.
18. A method as recited in claim 11, further comprising repeating the identifying and determining in response to one
of the tWo or more versions of the softWare component being
ponents;
accessing the catalog in response to a request regarding one