IP Library Granted Patent US 8,539,497
Granted Patent B2
US 8,539,497 · App. 11/393,348 · Granted Sep 17, 2013

Method for organizing software so the set of extensions for an extendable application can be run securely

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,539,497
App. No.
11/393,348
Granted
Sep 17, 2013
Kind
B2
Abstract

The operating system organizes software so the set of extensions for an extendable application can be dynamically discovered and the extension can be run securely. Extensions are run as separate applications instead of within the extendable application's process. Extensions are discoverable to an activated extendable application by querying a category catalog. A category provides at least a partial description of a contract between an activating software entity and a software entity that is activated by the activating software entity. The category may enumerate a set of configuration settings associated with the contract that may be used to set up an isolated execution environment for the activated software entity. The category may also specify one or more extension points to be used for communication between the activating and activated software entities. The category may also include a list of software entities that implement the category.

Claims (35)

1. A system for securely executing a first extension of a first extendable application comprising:

a processor;

an installation service separate from the first extendable application and the first extension that maintains a catalog of categories, each category having a respective extendable application and one or more respective extensions that implement the category

wherein the installation service separate from the first extendable application and the first extension maintains, for each category in the catalog, information including at least a partial description of a contract between the respective extendable application and the one or more respective extensions, an extension point for the respective extendable application, a list of the one or more respective extensions, and configuration settings for creating a separate, isolated execution environment for the one or more respective extensions; and

an activation service that creates a first execution environment for the first extendable application and a second execution environment different from the first execution environment for the first extension,

wherein the first extendable application specifies a first category,

wherein the activation service queries the installation service separate from the first extendable application and the first extension for a list of extensions that implement the first category,

wherein the installation service returns the list of extensions that implement the first category, and wherein the list comprises the first extension.

2. The system of claim 1 , wherein the activation service creates the second execution environment for the first extension by applying the configuration settings of the first category.

3. The system of claim 2 , wherein the second execution environment is an isolated execution environment, wherein resources available to the first extension are limited to those declared by the first extension, as modified by the first extendable application.

4. The system of claim 1 , wherein the installation service stores software units, wherein a software unit comprises executable code and a list of resources declared by the software unit, declared resources comprising resources required by the executable code to execute.

5. The system of claim 4 , wherein the software unit is an extendable application.

6. The system of claim 4 , wherein the software unit is an extension to an extendable application.

7. The system of claim 1 , wherein resources required by the first extension to execute are declared by the first extension.

8. A method for securely executing a first extension of a first extendable application comprising:

maintaining, by an installation service separate from the first extendable application and the first extension, a catalog of categories, each category having a respective extendable application and one or more respective extensions that implement the category, wherein the installation service separate from the first extendable application and the first extension maintains, for each category in the catalog, information including at least a partial description of a contract between the respective extendable application and the one or more respective extensions, an extension point for the respective extendable application, a list of the one or more respective extensions, and configuration settings for creating a separate, isolated execution environment for the one or more respective extensions;

creating a first execution environment for the first extendable application;

querying the installation service for a list of extensions that implement a first category specified by the first extendable application;

receiving, from the installation service, the list of extensions that implement the first category, wherein the list comprises the first extension; and

creating a second execution environment different from the first execution environment for the first extension.

9. The method of claim 8 , further comprising:

receiving an activation request for the first extendable application.

10. The method of claim 8 , wherein the first extendable application limits a set of resources accessible to the first extension by passing an open handle to a resource to the first extension.

11. A computer-readable medium excluding carrier waves for executing a first extension of a first extendable application, the computer-readable medium having program code stored thereon that, when executed by a computing environment, causes the computing environment to:

maintain, by an installation service separate from the first extendable application and the first extension, a catalog of categories, each category having a respective extendable application and one or more respective extensions that implement the category, wherein the installation service separate from the first extendable application and the first extension maintains, for each category in the catalog, information including at least a partial description of a contract between the respective extendable application and the one or more respective extensions, an extension point for the respective extendable application, a list of the one or more respective extensions, and configuration settings for creating a separate, isolated execution environment for the one or more respective extensions;

create a first execution environment for the first extendable application;

query the installation service for a list of extensions that implement a first category specified by the first extendable application;

receive, from the installation service, the list of extensions that implement the first category, wherein the list comprises the first extension; and

create a second execution environment different from the first execution environment for the first extension.

12. The computer-readable medium of claim 11 , having further program code stored thereon, that when executed by the computing environment, causes the computing environment to:

pass an open handle to a resource from the first extendable application to the first extension.

13. The computer-readable medium of claim 11 , having further program code stored thereon, that when executed by the computing environment, causes the computing environment to:

receive an activation request for the first extendable application.

14. The computer-readable medium of claim 11 , having further program code stored thereon, that when executed by the computing environment, causes the computing environment to:

generate the second execution environment according to configuration settings of the first category and activate the first extension in the second execution environment.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2006
From: BERNABEU-AUBAN, JOSE M.; DOSSICK, STEPHEN E.; PESCHEL-GALLEE, FRANK V.; ZACHWIEJA, STEPHAN J.
To: MICROSOFT CORPORATION
Reel/Frame 018161/0107 →