31
(12) United States Patent Delo et al. US006418554B1 (10) Patent N0.: (45) Date of Patent: US 6,418,554 B1 Jul. 9, 2002 (54) SOFTWARE IMPLEMENTATION INSTALLER MECHANISM (75) Inventors: John C. Delo, Bellevue; Malcolm S. Haar, Seattle; Chetan A. Parulekar, Redmond; Tracy D. Ferrier, Issaquah; Benjamin Chamberlain, Redmond; David E. Gonzalez, Issaquah; David R. Mckinnis, Seattle, all of WA (US) (73) Assignee: Microsoft Corporation, Redmond, VA (Us) ( * ) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 0 days. (21) Appl. No.: 09/158,021 (22) Filed: Sep. 21, 1998 (51) Int. Cl.7 . . . . . . . . . .. G06F 9/445 (52) US. Cl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 717/11 (58) Field of Search .......................... .. 395/712; 717/11; 707/200, 203; 709/220 (56) References Cited U.S. PATENT DOCUMENTS 5,421,009 A 5/1995 Platt ......................... .. 709/221 5,473,772 A 12/1995 Halliwell et a1. ........... .. 717/11 5,535,326 A 7/1996 Baskey et a1. ............... .. 714/4 (List continued on next page.) OTHER PUBLICATIONS “Automating Microsoft Transaction Server Client Installa tion,” Microsoft Corporation, URL:wysiwyg://MAIN. PRODINFO.6/http://msdn.mi . . . m/library/backgrnd/html/ msdniinstallhtml (Jun. 1997), printed Feb. 29, 2000. “Seagate Enterprise Management Software—East Announces Release of Desktop Management Suite; Best—of—Breed Point Solutions Integrated to Provide Heterogenous LAN Management,” Business Wire, p. 04020056 (Apr. 2, 1996). 78 Dunigan, et al., MCSE Training Guide: Windows NT Work station 4, New Riders Publishing, pp. 28—32, 402—405, 486—592 (Nov. 1997). Lang, Jay., “IBM Bolsters Windows NT Reliability With Tools Suite,” Information Week, p. A6ff (Jul. 20, 1998). Green, “Windows Apps Need To Be Aware of Install Meth ods”, Network World, p. 45 (Nov. 1994). McKinney et al., “Win Tips Windows 9x”, Windows Maga zine, pp. 255—258 (Aug. 1998). McNutt, “Administering X Sites”, Unix Review, p. 45ff (Jul. 1992). Methvin, David, “Problems? In Win98?”, Windows Maga zine, pp. 224ff (Oct. 1998). Spanbauer, Scott, “Internet Explorer 4.0, Problem Child”, PC World, p. 53 (Jan. 1998). (List continued on next page.) Primary Examiner—Kevin J. Teska Assistant Examiner—Kelvin Booker (74) Attorney, Agent, or Firm—The Law Offices of Albert S. Michalik, PLLC (57) ABSTRACT A method and mechanism for automatically installing soft ware implementations such as applications and COM classes as they are needed from an external source. When a software implementation is needed, the mechanism ?rst looks to the local system (e.g., registry) for that software implementation, and if found, returns the information such as a local path needed to use the software implementation. If the implementation is not found, the mechanism looks to another source, such as a CD-ROM or a centralized class store of a network, to locate the needed implementation. When located, the implementation is downloaded and locally installed from the source, and a local path is returned in a manner that is essentially transparent to the user. Software implementations such as application products may be divided into features and components to improve on-demand installation thereof. 37 Claims, 15 Drawing Sheets 49 Application 84a Network Server 621\ Group Deployment \J Polic Editor Managed . y Software Advertise Object1 installer Script \ (API) \ Policy /' . 80 // Objectz l 84b 86 // Managed \J cl St 622/ software ass ore 62 Manager n'7\\ GT0"? Installer Policy (API) I Objectn 88 / COM/Shell \ Active . Directory Adveruse - script Reglstry \ Information 74 66 ,User PM"? I Client Workstation I

Software implementation installer mechanism

Embed Size (px)

Citation preview

Page 1: Software implementation installer mechanism

(12) United States Patent Delo et al.

US006418554B1

(10) Patent N0.: (45) Date of Patent:

US 6,418,554 B1 Jul. 9, 2002

(54) SOFTWARE IMPLEMENTATION INSTALLER MECHANISM

(75) Inventors: John C. Delo, Bellevue; Malcolm S. Haar, Seattle; Chetan A. Parulekar, Redmond; Tracy D. Ferrier, Issaquah; Benjamin Chamberlain, Redmond; David E. Gonzalez, Issaquah; David R. Mckinnis, Seattle, all of WA (US)

(73) Assignee: Microsoft Corporation, Redmond, VA (Us)

( * ) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 0 days.

(21) Appl. No.: 09/158,021

(22) Filed: Sep. 21, 1998

(51) Int. Cl.7 . . . . . . . . . .. G06F 9/445

(52) US. Cl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 717/11

(58) Field of Search .......................... .. 395/712; 717/11; 707/200, 203; 709/220

(56) References Cited

U.S. PATENT DOCUMENTS

5,421,009 A 5/1995 Platt ......................... .. 709/221

5,473,772 A 12/1995 Halliwell et a1. ........... .. 717/11

5,535,326 A 7/1996 Baskey et a1. ............... .. 714/4

(List continued on next page.)

OTHER PUBLICATIONS

“Automating Microsoft Transaction Server Client Installa tion,” Microsoft Corporation, URL:wysiwyg://MAIN. PRODINFO.6/http://msdn.mi . . . m/library/backgrnd/html/

msdniinstallhtml (Jun. 1997), printed Feb. 29, 2000. “Seagate Enterprise Management Software—East Announces Release of Desktop Management Suite; Best—of—Breed Point Solutions Integrated to Provide Heterogenous LAN Management,” Business Wire, p. 04020056 (Apr. 2, 1996).

78

Dunigan, et al., MCSE Training Guide: Windows NT Work station 4, New Riders Publishing, pp. 28—32, 402—405, 486—592 (Nov. 1997). Lang, Jay., “IBM Bolsters Windows NT Reliability With Tools Suite,” Information Week, p. A6ff (Jul. 20, 1998). Green, “Windows Apps Need To Be Aware of Install Meth ods”, Network World, p. 45 (Nov. 1994). McKinney et al., “Win Tips Windows 9x”, Windows Maga zine, pp. 255—258 (Aug. 1998). McNutt, “Administering X Sites”, Unix Review, p. 45ff (Jul. 1992). Methvin, David, “Problems? In Win98?”, Windows Maga zine, pp. 224ff (Oct. 1998). Spanbauer, Scott, “Internet Explorer 4.0, Problem Child”, PC World, p. 53 (Jan. 1998).

(List continued on next page.)

Primary Examiner—Kevin J. Teska Assistant Examiner—Kelvin Booker (74) Attorney, Agent, or Firm—The Law Offices of Albert S. Michalik, PLLC

(57) ABSTRACT

A method and mechanism for automatically installing soft ware implementations such as applications and COM classes as they are needed from an external source. When a software

implementation is needed, the mechanism ?rst looks to the local system (e.g., registry) for that software implementation, and if found, returns the information such as a local path needed to use the software implementation. If the implementation is not found, the mechanism looks to another source, such as a CD-ROM or a centralized class

store of a network, to locate the needed implementation. When located, the implementation is downloaded and locally installed from the source, and a local path is returned in a manner that is essentially transparent to the user. Software implementations such as application products may be divided into features and components to improve on-demand installation thereof.

37 Claims, 15 Drawing Sheets

49 Application 84a Network Server 621\ Group Deployment \J Polic

Editor Managed . y Software Advertise Object1 installer Script \

(API) ’ \ Policy

/' .

80 // Objectz l

84b 86 // Managed \J cl St 622/ software ass ore 62

Manager n'7\\ GT0"? Installer Policy (API) I Objectn

88

/ COM/Shell \ Active

. Directory Adveruse - script Reglstry \

Information 74 66

,User PM"? I Client Workstation I

Page 2: Software implementation installer mechanism

US 6,418,554 B1 Page 2

US. PATENT DOCUMENTS 5,966,540 A 10/1999 Lister et a1. ................ .. 717/11 5,978,590 A * 11/1999 Imai et a1. .................. .. 717/11

5,555,416 A * 9/1996 Owens 9t a1~ --------------- -- 717/11 5,987,504 A 11/1999 Toga ........................ .. 709/206

5,586,304 A 12/1996 Stupek, Jr. et a1. .. 717/11 5999740 A 12/1999 Rowley ____ __ __ 717/11 5,625,823 A * 4/1997 Debenedictis et a1. .. 717/6 6,006,034 A 12/1999 Heath et aL 717/11 5,630,076 A 5/1997 Saulpaugh er a1- - 710/104 6,006,035 A 12/1999 Nabahi ........ .. .. 717/11 5,644,766 A 7/1997 Coy er a1- ------ -- 707/204 6,009,274 A * 12/1999 Fletcher et a1. 717/11 5,655,081 A 8/1997 Bonnell e191- 709/202 6,009,401 A 12/1999 Hortsmann . 705/1 5,659,547 A 8/1997 Scarf er a1 714/4 6,021,438 A * 2/2000 Duvvoori et a1. . . 709/224 5,692,129 A * 11/1997 Sonderegger er a- 707/103 6,023,586 A 2/2000 Gaisford et a1. 717/11 5,732,266 A 3/1998 M9919 er a1 713/1 6,029,147 A 2/2000 Horadan et a1. 705/35 5,732,275 A 3/1998 Kulhck e191- 717/11 6,041,333 A 3/2000 Bretschneider et a1. 707/203 5,742,829 A * 4/1998 Davis er a1- -- 717/11 6,067,582 A * 5/2000 Smith et a1. ....... .. 717/11 5,752,042 A 5/1998 C919 9191 717/11 6,131,192 A 10/2000 Henry ...... .. .. 717/11 5,764,992 A 6/1998 Kullick e191 717/11 6,151,643 A 11/2000 Cheng et a1. 710/36 5,768,566 A 6/1998 Harikrishnan er a1- 717/11 6,151,708 A 11/2000 PedriZetti et a1. . 717/11 5,778,234 A 7/1998 Hecht 9t a1~ 717/11 6,161,218 A 12/2000 Taylor ............ .. .. 717/11 5,784,612 A 7/1998 Crane 9191- -- 713/100 6,199,204 B1 3/2001 Donohue . 717/11 5,790,664 A 8/1998 Coley er a1- 709/203 6,202,207 B1 * 3/2001 Donohue ..... .. .. 717/11

5,790,856 A 8/1998 Lillich . . . . . . . . . . . . . .. 717/3 6,205,527 B1 3/2001 Goshey et a1_ 711/162

5,796,967 A 8/1998 FilePP er a1- - 345/339 6,314,565 B1 * 11/2001 Kenner et a1. .............. .. 717/11 5,805,897 A * 9/1998 Glowny ......... .. 717/11

5,835,911 A * 11/1998 Nakagawa et al. 707/203 OTHER PUBLICATIONS 5,859,969 A * 1/1999 Oki et a1. 709/200 5,859,978 A * 1/ 1999 sonderegger et al- 709/226 Anonymous, “ADSTAR Distributed Storage Manager Basic 5,867,713 A * 2/1999 Shfadef et a1~ ~~ 717/11 Concepts,” IBM Storage Software, http://WWWstorageibrn 5,867,714 A * 2/1999 Todd et al' 717/11 .corn/softWare/adsrn/adbasics.htrn pp. 1—8, (Oct. 31, 1997), 5,870,762 A 2/1999 Lee ......... .. 707/202 printed NW 3 1997_ 5,897,640 A 4/1999 Veghte et al. 707/202 _ ’ “ _ _

5,925,127 A 7/1999 Ahmad 713/200 Jones,'M1chae1 B., The Microsoft Interactive System: An 5,930,513 A 7/1999 Taylor ........... .. 717/11 EXperlence Report,” TechnicalR@P0rlMSR—TR—97—18, PP 5,930,514 A 7/1999 Thompson et a1, 717/11 1—20, http://research.rnicrosoft.corn/~rnbj/papers/rnitv/ 5,933,647 A * 8/1999 Aronberg et al. 717/11 tr—97—18.htrn (Jul. 1997), printed Sep. 4, 2001. 5,954,827 A 9/1999 Frank et a1. .. . 714/48 5,960,204 A 9/1999 Yinger et a1. ............... .. 717/11 * cited by eXarniner

Page 3: Software implementation installer mechanism
Page 4: Software implementation installer mechanism
Page 5: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 3 0f 15 US 6,418,554 B1

50:89:02, "

m .QE

"2.. |\ 20:89:05

New 2:05 820 3:8:00 EmEoo

Page 6: Software implementation installer mechanism
Page 7: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 5 0f 15 US 6,418,554 B1

85 \

com I Shell —l 8? Class Store, 4 Manager a Group Policy Obiect

74 Registry \/

Group Policy glaptaged 84b Container 0 ware

Installer / (APl)

Group Policy Template

75 ) Program Files /

/ 62 //

201

Workstation ____/

FIG. 5

Page 8: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 6 0f 15 US 6,418,554 B1

FIG. 6

600 Write Advertise __/ Script(s) to User

Profile

i 602 Select (Next)

Advertise Script

l Call Installer _/ Mechanism to Process Script

604

l Installer Populates 606 Registry, Writes Shortcuts to Start Menu/Desktop

608

Another Script

?

Page 9: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 7 0f 15 US 6,418,554 B1

85 98

Shortcut! w I Extension! —> Shell/OLE -—> Application ClasslD

<0 @ 86 APls x

Q) I 34 Application ________ a’ Class Store

Management Servic Manager

(016)] g@ i

System —--/

FIG. 7

98 Application ,/

@ APls @ 84

MSI Service ———-/

@ i®i 20 System —--'/ 1

FIG. 11

Page 10: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 8 of 15 US 6,418,554 B1

User Clicks 800 Advertised -/

Application Shortcut

OS Passes Application Request to Installer __/802

Mechanism

804

f 806 Install Application, Change State to Locally Installed

808

OS Executes Application

Page 11: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 9 0f 15 US 6,418,554 B1

900 User Clicks Document \)

OS Looks for 902 Extension in Local

Registry \)

FIG. 9

Extension in Local Registry 910 \

? OS 1 App Mgt Service / Class Store Mgr Looks for Extension in

906 Active Directory

Call Installer to Locate Application 912

(FIG' 10) Extension in Active Directory

908 ? 914

Return Error Yes

Launch Advertise Application Application

Script

Page 12: Software implementation installer mechanism

U.S. Patent

begin (From FIG. 9)

Installer Receives Request to Locate

Application

Jul. 9, 2002

1002

ls Application

Locally installed

?

Install Application from Source

l Change

Application State to Locally Installed

——»l

Sheet 10 0f 15

1000

1004

1008

Installer Verifies Key Files Are Present

US 6,418,554 B1

FIG. 10

1010

1012

/ No

Needed

Install File(s)

1014

Return Path to Application

Page 13: Software implementation installer mechanism
Page 14: Software implementation installer mechanism
Page 15: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 13 0f 15 US 6,418,554 B1

(5%‘) FIG. 14 1400

__/ OS Requests Path to Execute

Product

i Mechanism 1402

Checks for Piece -/ of Product

Present on Local Machine 1406

/ Install Necessary

Piece(s) of Product

Return Path to Key File Back to OS

1410

OS Executes

Path

Page 16: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002

@ Application

Needs Feature! Component

l

Sheet 14 0f 15 US 6,418,554 B1

FIG. 15A

_/ 1500

Application asks Installer for Feature State (Query Feature

State API)

1502 _/

l Installer Returns Feature State (Absent, Local, Source, Advertised) to

Application

1504

Need to Install

'? 1508

No Install Feature I Component

To FIG. 15B

Page 17: Software implementation installer mechanism

U.S. Patent Jul. 9, 2002 Sheet 15 0f 15 US 6,418,554 B1

FIG-15B

Application asks 1520 Installer to Verify -/ Files are Present

1 1522 installer Returns Verify State (Valid, Invalid) to

Application

Need to Install

Install File(s) Needed

Application asks Installer for Path

l 1530 Application /

Receives Path, Loads, Executes

(i)

Page 18: Software implementation installer mechanism

US 6,418,554 B1 1

SOFTWARE IMPLEMENTATION INSTALLER MECHANISM

RELATED APPLICATIONS

This application is related to the following United States Patent applications, all of Which are ?led on the same day and assigned to the same assignee as the present application:

“Use of Relational Databases for Software Installation”— Ser. No. 09/158,125;

“System and Method for Repairing a Damaged Application”—Ser. No. 09/158,126;

“Method and System for Restoring a Computer to its Original State After an Unsuccessful Installation Attempt”—Ser. No. 09/158,124;

“A Method for CategoriZing and Installing Selected Soft Ware Components”—Ser. No. 09/657,695;

“System and Method for Managing Locations of SoftWare Components Via A Source List”—Ser. No. 09/ 157,974;

“Method for OptimiZing the Installation of a SoftWare product onto a Target Computer System”—Ser. No. 09/157,853;

“SoftWare Installation and Validation Using Custom Actions”—Ser. No. 09/157,776;

“Internal Database Validation”—Ser. No. 09/157,828; “Management of Non-persistent Data in a Persistent

Database”—Ser. No. 09/157,883; “Method and System for Advertising Applications”—Ser.

No. 09/158,967; “Method and System for On-Demand Installation of Soft

Ware Implementations”—Ser. No. 09/158,022; “Method and System for Assigning and Publishing Appli

cations” Ser. No. 09/158,968; and “Class Store Schema”—Ser. No. 09/158,023.

FIELD OF THE INVENTION

The invention relates generally to computer systems, and more particularly to an improved method and system for installing softWare implementations such as applications and components.

BACKGROUND OF THE INVENTION

In contemporary enterprises such as a corporation, one of the duties of a netWork administrator is to set up and maintain the corporation’s computers so as to make employ ees more productive. Lost productivity at employees’ com puter desktops is a major cost for corporations, often result ing from user errors such as inadvertently removing some or all of a needed application or using an old application rather than an enterprise-speci?ed one that is improved, secure and/or compatible With others. Similarly, lost productivity often results from user errors such as removing or modifying other softWare implementations such as system con?gura tion ?les, dynamic link libraries (DLLs), application ?les and object classes (e.g., COM objects) in Ways that render the computer or applications unWorkable. Productivity is also lost When a desktop is too complex, such as When the desktop has too many non-essential applications and offer ings thereon. At the same time, much of the expense of administering distributed personal computer netWorks is spent at the desktop, performing tasks such as ?xing the settings or reinstalling implementations that the user has incorrectly or inadvertently modi?ed. At the same time, an enterprise Wants certain personnel to

have access to various softWare implementations such as

10

15

20

25

30

35

40

45

50

55

60

65

2 applications, While Wanting other applications to be avail able to certain users for access if needed. For example, a corporate enterprise may declare a policy specifying that everyone in the company should use a particular electronic mail program, While in addition, those in the research department should be able to load a particular spreadsheet application if needed.

HoWever, to implement such policy decisions, adminis trators or the like generally need to physically visit each Workstation to load (or unload) the speci?ed programs and other softWare implementations, adjust various system con?gurations, and so forth. In addition to initially setting the computers, the administrators must hope (or regularly check) that the users do not change the settings, hoWever users regularly make modi?cations, leading to lost produc tivity. The administrator also needs to revisit the Worksta tions to install neW versions of implementations.

Moreover, such policies cause problems When multiple users share the same computer, since a policy instituted for one user of that computer may not be compatible With the policy for another. As can be readily appreciated, installing softWare implementations in an enterprise is a complex task that does not ?t in Well With existing systems and methods. In addition, installation for non-netWork users may also be improved.

SUMMARY OF THE INVENTION

Brie?y, the present invention provides a method and mechanism for automatically installing a softWare imple mentation on demand. When information corresponding to a softWare implementation is received via an interface (API), the method and mechanism determine from the information Whether the softWare implementation is locally installed on the computer system. For example, the information may correspond to an application or object identi?er, Whereby the method and mechanism access the system registry or other database to determine the install state thereof. If the infor mation indicates that the softWare implementation is not installed on the computer system, the method and mecha nism install it from a source, such as a CD-ROM or netWork source. The registry or database may then be modi?ed to indicate that the softWare implementation is installed. Path information or the like of the softWare implementation is then returned, such as to an operating system or application.

SoftWare implementations include applications, identi?ed by a GUID (Globally Unique Identi?er), ?le extension or application category information, an object class, applica tion feature, or component. In a netWork environment, softWare implementations may be automatically applied (assigned or published) to a policy recipient, such as a user at logon, and installed on an as-needed basis. A resulting feature of the present invention is that an administrator may assign or publish implementations in a single, central loca tion.

Other bene?ts and advantages Will become apparent from the folloWing detailed description When taken in conjunction With the draWings, in Which:

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram representing a computer system into Which the present invention may be incorporated;

FIG. 2 is a diagram representing hoW various containers including a class store container are hierarchically organiZed under a policy object associated With a directory container;

FIG. 3 is a block diagram generally representing a com puter netWork into Which the present invention may be incorporated;

Page 19: Software implementation installer mechanism

US 6,418,554 B1 3

FIG. 4 is a block diagram generally representing exem plary components for possible on-demand installation thereof in accordance With various aspects of the present invention;

FIG. 5 is a block diagram generally representing the processing of on-demand location and installation of appli cations for policy recipients;

FIG. 6 is a How diagram generally representing the steps taken at user logon to advertise an assigned application;

FIG. 7 is a block diagram generally representing the installer mechanism handling on-demand installation in response to a request by the operating system or OLE in accordance With one aspect of the present invention;

FIG. 8 is a How diagram generally representing the steps taken When a user activates an assigned application via a shortcut including possible on-demand installation thereof in accordance With one aspect of the present invention;

FIG. 9 is a How diagram generally representing the steps taken When a user attempts to activate an application via a ?le extension associated thereWith;

FIG. 10 is a How diagram generally representing the steps taken by an installer mechanism to possibly install an application associated With a ?le extension in accordance With one aspect of the present invention;

FIG. 11 is a block diagram generally representing the installer mechanism handling on-demand installation in response to a request by an application in accordance With another aspect of the present invention;

FIG. 12 is a block diagram generally illustrating the components for installing softWare implementations in accordance With various aspects of the present invention;

FIG. 13 is a block diagram representing hoW an applica tion package may be hierarchically organiZed into features, components and ?les;

FIG. 14 is a How diagram generally representing the steps taken by an operating system When a softWare implemen tation needs to be installed in accordance With one aspect of the present invention; and

FIGS. 15A—15B comprise a How diagram generally rep resenting the steps taken by an application to request instal lation of an implementation needed thereby in accordance With another aspect of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Exemplary Operating Environment FIG. 1 and the folloWing discussion are intended to

provide a brief general description of a suitable computing environment in Which the invention may be implemented. Although not required, the invention Will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures and the like that per form particular tasks or implement particular abstract data types. Moreover, those skilled in the art Will appreciate that the invention may be practiced With other computer system con?gurations, 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

15

25

35

45

55

65

4 computing environment, program modules may be located in both local and remote memory storage devices. With reference to FIG. 1, an exemplary system for imple

menting the invention includes a general purpose computing device in the form of a conventional personal computer 20 or the like, including a processing unit 21, a system memory 22, and a system bus 23 that couples various system com ponents including the system memory to the processing unit 21. The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM) 24 and random access memory (RAM) 25. Abasic input/output system 26 (BIOS), containing the basic routines that help to transfer information betWeen elements Within the personal computer 20, such as during start-up, is stored in ROM 24. The personal computer 20 may further include 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-ROM or other optical media. 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 interface 33, and an optical drive interface 34, respectively. The drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 20. Although the exemplary environment described herein employs a hard disk, a remov able magnetic disk 29 and a removable optical disk 31, it should be appreciated by those skilled in the art that other types of computer readable media Which can store data that is accessible by a computer, such as magnetic cassettes, ?ash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs) and the like may also be used in the exemplary operating environment. 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 (preferably WindoWs NT), one or more application programs 36, other program mod ules 37 and program data 38. A user may enter commands and information 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, game pad, satellite dish, scanner or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or 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 47, personal computers typically include other peripheral output devices (not shoWn), such as speakers and printers. The personal computer 20 may operate in a netWorked

environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another personal computer, a server, a router, a netWork PC, a peer device or other common netWork node, and typically includes many or all of the elements described above relative to the personal com puter 20, although only a memory storage device 50 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area netWork (LAN) 51 and a Wide

Page 20: Software implementation installer mechanism

US 6,418,554 B1 5

area network 52. Such networking environments are commonplace in of?ces, enterprise-wide computer networks, Intranets and the Internet. When used in a LAN networking environment, the per

sonal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establish ing 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 will be appreciated that the network connections shown are exemplary and other means of establishing a communi cations link between the computers may be used.

For purposes of the following description, a client work station (e.g., 201) may correspond to the computer system 20, while software implementations 60 such as applications or pieces thereof, (e.g., products, features and components as described below), objects and so on may reside on one or more of the remote computers 49. However as can be readily appreciated, no particular arrangement of the various ?les, interfaces, objects (classes), mechanisms, processes and so on described herein is necessary to the present invention. Indeed, as is understood in computing and networking in general, such ?les, interfaces, objects, mechanisms, pro cesses and so on may be combined, separated and/or dis tributed in virtually any number of ways among the various network devices.

Also, as will become apparent below, there is no require ment to limit on-demand installation to networks, as other implementations such as standalone users may bene?t from the present invention. The on-demand installation of imple mentations may be performed by the present invention for any number of users in many types of environments, from a single standalone user to an enterprise-wide network of policy recipients, i.e., users and machines. Indeed, although a deployment scheme is able to trigger the installation mechanism remotely and ef?ciently, thus leveraging it for enterprise-wide deployment, it is understood that the con cept of install on demand is valid outside the scope of application deployment. Notwithstanding, many aspects of the present invention will be described hereinafter with respect to network application deployment, since network application deployment bene?ts signi?cantly from on-demand installation.

In one embodiment, the present invention provides a method and system that facilitates deploying software implementations by automatically installing the software implementations throughout a computer network in a highly ?exible, scalable, extensible and efficient manner. To this end, as shown in FIG. 2, the method and system leverage a highly ?exible architecture wherein an administrator can tailor policies 62 to containers 64 (sites, domains, and organiZational units of users and computers arranged in a hierarchical manner), by specifying one or more policies 62 therefor, such that the policy within an organiZation is centrally managed. Such group policies 62, including the prioritizing of multiple policies for policy recipients (e.g., users or machines) are described in US. patent application Ser. No. 09/134,805, entitled “System and Method for Implementing Group Policy,” assigned to the assignee of the present invention and hereby incorporated by reference herein in its entirety.

Although not necessary to the present invention, group policies 62 are maintained via a Windows NT® 5.0 directory

10

15

20

25

30

35

40

45

50

55

60

65

6 service, known as the Active Directory 66, ordinarily main tained in a domain controller 68 (FIG. 3). More particularly, each group policy object 62 comprises a group policy container in the directory service and a group policy tem plate in the “sysvol” of the domain controller 68, but for purposes of simplicity are generically referred to herein as a group policy object. In general, the Active Directory 66 stores information about the objects of a domain, and makes this information easy for administrators to access, ?nd and apply via a single, consistent and open set of interfaces. For example, with the Active Directory 66, administrators have a single point of administration for the objects on the network, which can be viewed in a hierarchical structure. A core unit in the Active Directory 66 is the domain, and the objects of a network exist within a domain. Asingle domain can span multiple physical locations or sites.

Thus, one aspect of the present invention is described herein with reference to the Microsoft® Windows NT® operating system, and in particular to the ?exible hierarchi cal structure of sites, domains and/or organiZational units of a Windows NT® Active Directory 66. Notwithstanding, there is no intention to limit the present invention to Win dows NT® and/or the Active Directory architecture, or even to networks, but on the contrary, the present invention is intended to operate with and provide bene?ts with any operating system, architecture and/or mechanisms that install software implementations.

SOFTWARE IMPLEMENTATION INSTALLER METHOD AND MECHANISM

In general, a ?rst aspect of the present invention involves the on-demand installation of applications for purposes of application deployment, i.e., initially making an application or some piece thereof available (e.g., core code) to network policy recipients via policies 62. As described in the copend ing United States Patent Applications entitled “Method and System for Assigning and Publishing Applications” and “Method and System for Advertising Applications,” assigned to the assignee of the present invention, ?led concurrently herewith and hereby incorporated by reference herein in their entireties, to initially deploy an application, an administrator can choose to either “assign” or “publish” the application. To this end, as shown in FIGS. 2 and 3, one or more group policy objects (templates) 66 associated with users or machines of a directory container may be associated with policy recipients, and a subcontainer of each group policy object, deemed a class store, may include application deployment information. Note that although separately shown in FIG. 2 for purposes of simplicity, a class store 70 is actually a subcontainer of the group policy container, as described in more detail in co-pending United States Patent Application entitled “Class Store Schema,” assigned to the same assignee as the present invention, ?led concurrently herewith and hereby incorporated by reference herein in its entirety.

Via this centrally maintained deployment information in the class store 70, policy recipients (e.g., users and workstations/machines) in a directory container 64 (e.g., organiZational unit) are assigned applications, or applica tions are published thereto. An application typically is assigned to a group of users (or a group of machines) when it is deemed mandatory for that group to have that application, while published applications are those that are made optionally available to users who may bene?t there from. For example, the same version of an electronic mail application program may be assigned to everyone in an organiZation, while a word processing program may be

Page 21: Software implementation installer mechanism
Page 22: Software implementation installer mechanism
Page 23: Software implementation installer mechanism
Page 24: Software implementation installer mechanism
Page 25: Software implementation installer mechanism
Page 26: Software implementation installer mechanism
Page 27: Software implementation installer mechanism
Page 28: Software implementation installer mechanism
Page 29: Software implementation installer mechanism
Page 30: Software implementation installer mechanism
Page 31: Software implementation installer mechanism