`Mishra et al.
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US006523166Bl
`US 6,523,166 Bl
`Feb.18,2003
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) METHOD AND SYSTEM FOR ON-DEMAND
`INSTALLATION OF SOFTWARE
`IMPLEMENTATIONS
`
`(75)
`
`Inventors: Debi P. Mishra, Redmond, WA (US);
`David E. Kays, Jr., Carnation, WA
`(US); Markus Horstmann, Redmond,
`WA (US); Mark H. Lucovsky,
`Redmond, WA (US); Shannon J. Chan,
`Bellevue, WA (US); Bharat A. Shah,
`Bellevue, WA (US); Gregory A.
`Jensenworth, Redmond, WA (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(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,022
`
`(22)
`
`Filed:
`
`Sep. 21, 1998
`
`(51)
`(52)
`
`(58)
`
`(56)
`
`Int. Cl.7 . ... ... .. ... ... ... ... .. ... ... ... ... ... .. ... ... .. G06F 9/445
`U.S. Cl. ......................... 717/11; 707/104; 709/246;
`709/203
`Field of Search ................................. 709/220, 246,
`709/203, 201; 707/513, 104; 717/11
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,418,554 A *
`5,421,009 A
`5,473,772 A
`5,535,326 A
`5,555,416 A
`5,581,764 A
`5,586,304 A
`5,625,823 A
`5,630,076 A
`5,644,766 A
`5,655,081 A
`5,659,547 A
`5,692,129 A
`
`Kiguchi et al. ............. 347/215
`Platt
`Halliwell et al.
`Baskey et al.
`Owens et al.
`Fitzgerald et al. .......... 709/223
`Stupek, Jr. et al.
`Debenedictis et al.
`Saulpaugh et al.
`Coy et al.
`Bonnell et al.
`Scarr et al.
`Sonderegger et al.
`
`5/1995
`5/1995
`12/1995
`7/1996
`9/1996
`* 12/1996
`12/1996
`4/1997
`5/1997
`7/1997
`8/1997
`8/1997
`11/1997
`
`5,732,266 A
`5,732,275 A
`
`3/1998 Moore et al.
`3/1998 Kullick et al.
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`Anonymous, "ADSTAR Distributed Storage Manager Basic
`Concepts," IBM Storage Software, http://www.storage.ibm.
`com/software/adsm/adbasics.htm pp. 1-8, (Oct. 31, 1997),
`printed Nov. 3, 1997.
`Jones, Michael B., "The Microsoft Interactive System: An
`Experience Report," Technical Report MSR-TR-97-18, pp.
`http ://research.microsoft.com/-mbj/papers/mitv I
`1-20,
`tr-97-18.htm (Jul. 1997), printed Sep. 4, 2001.
`Gree, "Windows Apps Need To Be Aware of Install Meth(cid:173)
`ods", Network World, p. 45 (Nov. 1994).
`McKinney et al., "Win Tips Windows 9x", Windows Maga(cid:173)
`zine, pp. 255-258 (Aug. 1998).
`McNutt, "Administering X Sites", Unix Review, pp. 45ff
`(Jul. 1992).
`
`(List continued on next page.)
`
`Primary Examiner---Mehmet B. Geckil
`(74) Attorney, Agent, or Firm-Law Offices of Albert S.
`Michalik, PLLC
`
`(57)
`
`ABSTRACT
`
`A method and system for installing software implementa(cid:173)
`tions such as applications and COM classes as they are
`needed from an external source, such as a centralized
`network store. When a software implementation is needed,
`the system and method first look 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
`locally, the present invention dynamically looks to a cen(cid:173)
`tralized class store of a network, to locate the needed
`implementation. When located, the implementation is down(cid:173)
`loaded and locally installed in a manner that is essentially
`transparent to the user. Software implementations such as
`application products may be divided into features and com(cid:173)
`ponents to improve on-demand installation thereof.
`
`44 Claims, 9 Drawing Sheets
`
`78
`
`Application
`Deployment
`Editor
`
`72
`
`Client Workstation
`
`Group
`Policy
`Object1
`
`Group
`Policy
`Object2
`
`Group
`Policy
`Objectn
`
`Active
`Directory
`
`66
`
`IPR2017-00184
`UNIFIED EX1012
`
`
`
`US 6,523,166 Bl
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`4/1998 Davis et al.
`5,742,829 A
`5/1998 Cole et al.
`5,752,042 A
`6/1998 Kullick et al.
`5,764,992 A
`6/1998 Harikrishnan et al.
`5,768,566 A
`7/1998 Hecht et al.
`5,778,234 A
`7/1998 Crane et al.
`5,784,612 A
`8/1998 Coley et al.
`5,790,664 A
`8/1998 Lillich
`5,790,856 A
`8/1998 Filepp et al.
`5,796,967 A
`9/1998 Glowny
`5,805,897 A
`11/1998 Nakagawa et al.
`5,835,911 A
`1/1999 Oki et al.
`5,859,969 A
`1/1999 Sonderegger et al.
`5,859,978 A
`2/1999 Shrader et al.
`5,867,713 A
`2/1999 Todd et al.
`5,867,714 A
`2/1999 Lee
`5,870,762 A
`4/1999 Veghte et al.
`5,897,640 A
`7/1999 Ahmad
`5,925,127 A
`7/1999 Taylor
`5,930,513 A
`7/1999 Thompson et al.
`5,930,514 A
`8/1999 Aronberg et al.
`5,933,647 A
`9/1999 Frank et al.
`5,954,827 A
`9/1999 Yinger et al.
`5,960,204 A
`10/1999 Lister et al.
`5,966,540 A
`11/1999 Imai et al.
`5,978,590 A
`11/1999 Toga
`5,987,504 A
`5,991,877 A * 11/1999 Luckenbaugh ................. 707/5
`5,995,756 A * 11/1999 Herrmann ................... 707/513
`5,999,740 A
`12/1999 Rowley
`6,006,034 A
`12/1999 Heath et al.
`6,006,035 A
`12/1999 Nabahi
`6,009,274 A
`12/1999 Fletcher et al.
`6,009,401 A
`12/1999 Horstmann
`2/2000 Duvvoori et al.
`6,021,438 A
`2/2000 Gaisford et al.
`6,023,586 A
`2/2000 Horadan et al.
`6,029,147 A
`6,041,333 A
`3/2000 Bretschneider et al.
`
`6,067,582 A
`6,131,192 A
`6,151,643 A
`6,151,708 A
`6,161,218 A
`6,199,204 Bl
`6,202,207 Bl
`6,205,527 Bl
`6,212,536 Bl *
`6,314,565 Bl
`6,345,386 Bl *
`6,389,589 Bl *
`
`5/2000
`10/2000
`11/2000
`11/2000
`12/2000
`3/2001
`3/2001
`3/2001
`4/2001
`11/2001
`2/2002
`5/2002
`
`Smith et al.
`Henry
`Cheng et al.
`Pedrizetti et al.
`Taylor
`Donohue
`Donohue
`Goshey et al.
`Klassen et al.
`Kenner et al.
`Delo et al. .................. 717/716
`................ 707/10
`Mishra et al.
`
`............. 345/738
`
`OTHER PUBLICATIONS
`
`Methvin, David, "Problem? In Win98?", Windows Maga(cid:173)
`zine, pp. 224ff (Oct. 1998).
`Spanbauer, Scott, "Internet Explorer 4.0, Problem Child",
`PC World, p. 53 (Jan. 1998).
`Dunigan, et al., MCSE Training Guide: Windows NT Work(cid:173)
`station 4, New Riders Publishing, pp. 28-32, 402 405,
`486-492 (1997).
`"Automating Microsoft Transaction Server Client Installa(cid:173)
`tion," Microsoft Corporation, URL:wysiwyg://MAIN.
`PRODINF0.6/http://msdn.mi ... m/library/backgrnd/html/
`msdn_install.html (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).
`Kelly, Mike, "Gain Control of Application Setup and Main(cid:173)
`tenance with the New Windows Installer," Microsoft Sys(cid:173)
`tems Journal, pp. 15-18, 20-23, 26-27 (Sep. 1998).
`Lang, Jay., "IBM Bolsters Windows NT Reliability With
`Tools Suite," Information Week, p. A6ff (Jul. 20, 1998).
`* cited by examiner
`
`
`
`---------------
`System Memory
`- - - - - - - - - - - - - -
`(ROM)
`24
`BIOS ___ ~-JI 22
`
`I
`
`20
`
`21
`
`48
`
`Processing
`Unit
`
`(RAM) 25
`OPERATING
`SYSTEM
`
`35
`-
`
`APPLICATION
`PROGRAMS 36
`
`OTHER PROGRAM
`MODULES 37
`
`55
`
`Video
`Adapter
`
`Host
`Adapter
`
`23
`
`System Bus
`
`47
`
`'nito~
`SCSI I 156
`
`Storage I
`
`Device
`
`r----PRg;T~AM 38
`
`Hard Disk Magnetic
`Drive
`Disk Drive
`Interface
`Interface
`
`Optical
`Drive
`Interface
`
`Serial
`Port
`Interface
`
`Network
`Interface
`
`LAN
`
`....----. 34
`
`53
`
`11111
`
`c
`
`..
`
`.
`
`----------~~7~--1~~~~-25-:;;J-~t----;~~~--
`~
`• 27./
`' ,
`'
`-
`'
`'
`
`/
`
`/
`
`/
`
`/
`
`/
`/ /
`
`/ /
`
`/
`
`/
`
`/
`
`/
`
`'
`'
`'··,
`
`29 31
`
`OPERATING APPLICATION OTHER 37 PROGRAM
`SYSTEM
`PROGRAMS
`PROGRAM
`DATA
`36
`-
`MODULES
`FIG. 1
`
`35
`
`38
`
`I
`I
`
`1-1......1
`
`\,I
`
`1
`
`1
`
`1
`
`"""-- '
`
`42
`
`I
`I
`- - - - - - - - - - - --~ - -- -
`Wide Area Network
`
`Remote
`Computer(s)
`
`111 IL&..L.I'
`l
`
`''U
`
`--
`
`I 11111
`
`50
`
`--
`--
`APPLICATION
`PROGRAMS 36'
`
`51
`
`I_)
`
`49
`
`v
`
`,
`
`d •
`\JJ.
`•
`~
`~ ......
`~ = ......
`
`"'!"j
`~
`?'
`'"""'
`~CIO
`N c c
`
`~
`
`'Jl =-~
`~ .....
`'"""' 0 .....,
`
`\C
`
`e
`
`rJ'J.
`O'I
`'&.
`N
`~ -..
`lo-"
`O'I
`O'I
`~
`lo-"
`
`
`
`I
`
`Directory
`Container (Site,
`Domain, OU)
`
`(
`64
`
`62
`
`1 Policy f
`I Class. Stor~-
`
`I
`
`I
`
`80
`
`~
`""
`
`I
`
`'\.
`
`Application I
`
`Packages
`
`I Application I
`
`Classes
`
`Component
`Categories
`
`Applications
`
`GUIDS
`
`FIG. 2
`
`d •
`\JJ.
`•
`~
`~ ......
`~ = ......
`
`"'!"j
`~
`?'
`"'""
`~CIO
`N c
`c
`~
`
`'Jl
`
`=-~
`~ .....
`N
`0 .....,
`\C
`
`e
`
`rJ'J.
`O'I
`'&.
`N
`~ -..
`lo-"
`O'I
`O'I
`~
`lo-"
`
`
`
`Domain
`Contoller
`
`I
`
`Group
`~ Policy -·
`Objects ....
`
`I
`
`L+
`
`-~
`
`Software
`Implementations
`Class Stores - --
`Active Directory
`
`--
`
`-
`
`/
`
`62 v
`)o
`l/
`v
`-._
`
`70
`
`I
`
`1,...-'
`
`,,,.,,,,
`
`--
`,,,,..
`Workstation 1
`v
`L/
`
`User _ __.
`Profile
`
`Machine_ i..-
`Profile
`
`72
`
`76
`
`Workstation2
`,,,,---
`
`I
`
`202
`
`Workstation3
`r-
`
`I
`
`Workstation4
`~
`
`7
`
`203
`
`204
`
`FIG. 3
`
`d •
`\JJ.
`•
`~
`~ ......
`~ = ......
`
`"'!"j
`~
`?'
`""""
`~CIO
`N c
`8
`
`'Jl =(cid:173)~
`~ ....
`~
`0 .....,
`\C
`
`e
`
`rJ'J.
`O'I
`'&.
`N
`~ -..
`lo-"
`O'I
`O'I
`~
`lo-"
`
`Network __..i.-
`Server
`
`Application
`
`Image -
`
`[....-' ~
`
`-
`
`.
`• Workstationn
`
`.,---
`
`20n
`
`
`
`78
`r-;:========~-----------------,49
`Application
`Network Server
`83a
`621
`Deployment
`Editor
`
`Managed
`Software
`Installer
`(API)
`
`1
`
`•• Adve~ise
`Scnpt
`
`80
`
`83b
`
`Managed
`Software
`Installer
`(API)
`
`86
`--------,
`On-Demand
`Installation
`Mechanism
`
`84
`
`Class Store
`Manager
`
`62n --r--1...
`
`85
`
`COM I Shell
`
`Client Workstation
`
`Advertise
`Script
`Information
`
`User Profile
`
`72
`
`Rollback
`Script
`
`110
`
`201
`
`Group
`Policy
`Object1
`
`Group
`Policy
`Object2
`
`•
`
`Group
`Policy
`Objectn
`
`Active
`Directory
`
`66
`
`FIG. 4
`
`d •
`\JJ.
`•
`~
`~ ......
`~ = ......
`
`"'!"j
`~
`?'
`'"""'
`~CIO
`N c
`8
`
`'Jl =(cid:173)~
`~ .....
`
`.i;;..
`0 .....,
`\C
`
`e
`
`rJ'J.
`O'I
`'&.
`N
`~ -..
`lo-"
`O'I
`O'I
`~
`lo-"
`
`
`
`U.S. Patent
`
`Feb.18,2003
`
`Sheet 5 of 9
`
`US 6,523,166 Bl
`
`85'
`
`I COM I Shell':....._---.
`
`86
`
`1
`
`Class Store 1
`Manager
`
`I I
`
`- - - -7 4
`Registry
`
`-
`
`Group Policy Object
`
`••
`84
`.____--1-a.1 On-Demand
`lnstallation.--+---rl./
`Mechanism
`
`Group Policy
`Container
`
`' .
`
`Program Files
`
`75
`
`Group Policy
`Template
`
`}
`
`62 ___/
`
`Workstation
`
`FIG. 5
`
`
`
`U.S. Patent
`
`Feb.18,2003
`
`Sheet 6 of 9
`
`US 6,523,166 Bl
`
`85+
`~-~ Shell / OLE
`
`98
`
`Application r
`
`Shortcut I
`Extension I
`Class ID
`
`86
`
`84
`
`AP ls
`--~~,-·~--~~---.@,.--~~--~~
`Application
`.. Class Store
`~
`Management Service
`Manager
`fJ\ 14\a
`fc\
`\J,, \J ~ 20
`r--~~---~--~-·~v 1
`System
`-
`
`FIG. 6
`
`Application
`
`98
`
`0 APls ©
`
`0
`
`MSI Service
`
`0
`
`System
`
`FIG. 9
`
`83b
`
`
`
`U.S. Patent
`
`Feb.18,2003
`
`Sheet 7 of 9
`
`US 6,523,166 Bl
`
`FIG. 7
`
`begin
`
`User Clicks
`Document
`
`700
`
`OS Looks for
`Extension in Local
`Registry
`
`702
`
`Yes
`
`706
`
`Call Installer to
`Launch Application
`(FIG. 8)
`
`708
`
`OS I App Mgt
`Service I Class
`Store Mgr Looks
`for Extension in
`Active Directory
`
`716
`
`No
`
`Return Error
`
`Return Success
`
`end
`
`Advertise
`Application
`Script
`
`
`
`U.S. Patent
`
`Feb.18,2003
`
`Sheet 8 of 9
`
`US 6,523,166 Bl
`
`begin
`(From FIG. 7)
`
`FIG. 8
`
`Installer Receives
`Request to Launch
`Application
`
`800
`
`804
`
`806
`
`Associated
`Application
`Locally
`Installed
`
`Install Application
`from Network
`
`Change
`Application State
`to Locally
`Installed
`
`808
`
`Launch
`Application,
`Return Success
`
`
`
`Install
`Package
`
`80
`
`74
`
`100
`
`102
`
`106
`
`Client Install
`Engine
`
`108
`
`Install
`Transaction
`
`RPC
`
`104
`
`Install
`Service
`
`74
`
`35
`
`110
`
`User Privileges
`
`Elevated Privileges
`
`FIG. 10
`
`Rollback
`(Transaction)
`Information
`
`d •
`\JJ.
`•
`~
`~ ......
`~ = ......
`
`"'!"j
`~
`?'
`'"""'
`~CIO
`N c
`8
`
`'Jl =(cid:173)~
`~ .....
`\C
`0 .....,
`\C
`
`e
`
`rJ'J.
`O'I
`'&.
`N
`~ -..
`lo-"
`O'I
`O'I
`~
`lo-"
`
`
`
`US 6,523,166 Bl
`
`1
`METHOD AND SYSTEM FOR ON-DEMAND
`INSTALLATION OF SOFTWARE
`IMPLEMENTATIONS
`
`RELATED APPLICATIONS
`
`2
`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
`5 software implementations in an enterprise is a complex task
`that does not fit in well with existing systems and methods.
`
`This application is related to the following United States
`Patent applications, all of which are filed on the same day
`and assigned to the same assignee as the present application:
`"Method and System for Advertising Applications," Ser. 10
`No. 09/158,967, now U.S. Pat. No. 6,345,386;
`"Method and System for Assigning and Publishing
`Applications," Ser. No. 09/158,968;
`"Class Store Schema," Ser. No. 09/158,023, now U.S. Pat.
`No. 6,389,589; and
`"Software Implementation Installer Mechanism," Ser.
`No. 09/158,021.
`
`SUMMARY OF THE INVENTION
`Briefly, the present invention provides a system and
`method for automatically installing a software implementa(cid:173)
`tion on demand. When the operating system receives the
`request corresponding to a software implementation, the
`system and method determine from the information whether
`the software implementation is locally installed on the
`15 computer system, and if not installed, install it from a
`network source, if available. For example, the information
`may correspond to an application or object identifier,
`whereby the method and mechanism access the system
`registry or other database to determine the install state
`20 thereof. If the information indicates that the software imple(cid:173)
`mentation is not locally installed on the computer system,
`the method and mechanism install it from a source, such as
`a centralized network source. The registry or database may
`then be modified to indicate that the software implementa-
`25 tion 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, file
`extension or application category information, an object
`class identified by a ClassID (GUID), application feature, or
`component. Software implementations may be automati(cid:173)
`cally 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 location.
`Other benefits and advantages will become apparent from
`the following detailed description when taken in conjunction
`with the drawings, in which:
`
`FIELD OF THE INVENTION
`
`The invention relates generally to computer systems and
`networks, and more particularly to an improved method and
`system for installing software implementations such as
`applications and components to users and computers in a
`network.
`
`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- 30
`ees more productive. Lost productivity at employees' com(cid:173)
`puter desktops is a major cost for corporations, often result(cid:173)
`ing from user errors such as inadvertently removing some or
`all of a needed application or using an old application rather
`than an enterprise-specified one that is improved, secure 35
`and/or compatible with others. Similarly, lost productivity
`often results from user errors such as removing or modifying
`other software implementations such as system configura(cid:173)
`tion files, dynamic link libraries (DLLs), application files
`and object classes (e.g., COM objects) in ways that render 40
`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(cid:173)
`ings thereon. At the same time, much of the expense of
`administering distributed personal computer networks is 45
`spent at the desktop, performing tasks such as fixing the
`settings or reinstalling implementations that the user has
`incorrectly or inadvertently modified.
`At the same time, an enterprise wants certain personnel to
`have access to various software implementations such as
`applications, while wanting other applications to be avail(cid:173)
`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 55
`department should be able to load a particular spreadsheet
`application if needed.
`However, to implement such policy decisions, adminis(cid:173)
`trators or the like generally need to physically visit each
`workstation to load (or unload) the specified programs and
`other software implementations, adjust various system
`configurations, 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 modifications, leading to lost produc(cid:173)
`tivity. The administrator also needs to revisit the worksta(cid:173)
`tions to install new versions of implementations.
`
`50
`
`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(cid:173)
`puter network into which the present invention may be
`incorporated;
`FIG. 4 is a block diagram generally representing exem(cid:173)
`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(cid:173)
`cations for policy recipients;
`FIG. 6 is a block diagram generally representing the
`on-demand finding and installation mechanism handling
`60 on-demand installation in response to a request by the
`operating system or OLE in accordance with one aspect of
`the present invention;
`FIGS. 7 and 8 comprise a flow diagram generally repre(cid:173)
`senting the steps taken when a user attempts to activate an
`65 application via a file extension associated therewith;
`FIG. 9 is a block diagram generally representing the
`installer mechanism handling on-demand installation in
`
`
`
`US 6,523,166 Bl
`
`3
`response to a request by an application in accordance with
`another aspect of the present invention; and
`FIG. 10 is a block diagram generally illustrating compo(cid:173)
`nents for installing software implementations in accordance
`with various aspects of the present invention;
`
`DETAILED DESCRIPTION OF IBE
`PREFERRED EMBODIMENT
`
`10
`
`4
`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-
`s 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
`(USE). A monitor 47 or other type of display device is also
`15 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
`20 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
`25 the elements described above relative to the personal com(cid:173)
`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
`area network (WAN) 52. Such networking environments are
`30 commonplace in offices, enterprise-wide computer
`networks, Intranets and the Internet.
`When used in a LAN networking environment, the per(cid:173)
`sonal computer 20 is connected to the local network 51
`through a network interface or adapter 53. When used in a
`3s WAN networking environment, the personal computer 20
`typically includes a modem 54 or other means for establish(cid:173)
`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
`40 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-
`4s cations link between the computers may be used.
`For purposes of the following description, a client work(cid:173)
`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
`so 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 files,
`interfaces, objects (classes), mechanisms, processes and so
`on described herein is necessary to the present invention.
`ss Indeed, as is understood in computing and networking in
`general, such files, interfaces, objects, mechanisms, pro(cid:173)
`cesses and so on may be combined, separated and/or dis(cid:173)
`tributed in virtually any number of ways among the various
`network devices.
`In general, the present invention provides a method and
`system for automatically installing software implementa(cid:173)
`tions throughout a computer network in a highly flexible,
`scalable, extensible and efficient manner. To this end, as
`shown in FIG. 2, the method and system leverage a highly
`65 flexible architecture wherein an administrator can tailor
`policies 62 to containers 64 (sites, domains, and organiza(cid:173)
`tional units of users and computers arranged in a hierarchical
`
`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(cid:173)
`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
`configurations, including hand-held devices, multi(cid:173)
`processor systems, microprocessor-based or programmable
`consumer electronics, network PCs, minicomputers, main(cid:173)
`frame computers and the like. The invention may also be
`practiced in distributed computing environments where
`tasks are performed by remote processing devices that are
`linked through a communications network. In a distributed
`computing environment, program modules may be located
`in both local and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple(cid:173)
`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(cid:173)
`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.
`A basic 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(cid:173)
`able magnetic disk 29 and a removable optical disk 31, it 60
`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, flash
`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.
`
`
`
`US 6,523,166 Bl
`
`5
`manner), by specifying one or more policies 62 therefor,
`such that the policy within an organization is centrally
`managed. Such group policy objects 62, including the pri(cid:173)
`oritizing of multiple policies for policy recipients (e.g., users
`or machines) are described in U.S. patent application Ser. 5
`No. 09/134,805, entitled "System and Method for Imple(cid:173)
`menting 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 10
`policies 62 are maintained via a Windows NT® 5.0 directory
`service, known as the Active Directory 66, ordinarily main(cid:173)
`tained in a domain controller 68 (FIG. 3). More particularly,
`each group policy object 62 (FIG. 3) comprises a group
`policy container in the directory service and a group policy 15
`template 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, find and 20
`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 25
`objects of a network exist within a domain. A single domain
`can span multiple physical locations or sites.
`Thus, the present invention is described herein with
`reference to the Microsoft® Windows NT® operating
`system, and in particular to the flexible hierarchical 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 Windows NT®
`and/or the Active Directory architecture, but on the contrary,
`the present invention is intended to operate with and provide
`benefits with any operating system, architecture and/or
`mechanisms that install software implementations.
`
`6
`workstations/machines) in a directory container 64 (e.g.,
`organizational unit) are assigned applications, or applica(cid:173)
`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 benefit there(cid:173)
`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
`assigned to every group of users that needs some word
`processing capabilities. However, an application program
`for editing images may not be needed by everyone, and thus
`such a program may be published so that those users who
`may need it will get it on an as-needed basis by means of
`on-demand installation, while others who do not need it will
`not have it occupy resources of their workstations. Publish(cid:173)
`ing is generally described below.
`The information for published applications is not found in
`the registry 74 by the operating system, whereby the oper(cid:173)
`ating system looks to the class stores 70 (subcontainers of
`the group policy objects) of the active directory 66 for the
`information. As described in more detail below, if found in
`a script in the class store 70, the script is applied and the
`(formerly) published application is now advertised, installed
`and launched by an on-demand installer 84.
`FIGS. 7 and 8 show how such an action leads to the file
`being executed, beginning at step 700 which represents the
`double-clicking (or similar operation such as right-click,
`30 open) of the document. At step 702, the operating system
`shell 85 looks to the local registry 74 for file extension
`information, i.e., an application associated with the file
`extension. If the information is found, step 704 branches to
`step 706 which then calls the installer 84 to launch the
`35 application (FIG. 8) as described below.
`If not found in the local registry 74 at step 704, then an
`application corresponding to the extension has not been
`assigned, however an application corresponding to the
`40 extension may still be published to the requesting user.
`Published applications are just as manageable as assigned
`applications, however unlike assigned applications, a pub(cid:173)
`lished application has no presence on a user's machine until
`invoked. Thus, a published application has no attributes on
`45 the client machine, but rather has its attributes stored in the
`Active Directory 66.
`Note that a published application can be located in the
`Active Directory in a number of ways, including via an
`application name, a class ID serviced by the application, a
`program ID serviced by the application, a file extension
`serviced by the application, an interface identifier serviced
`by the application and MIME type or content type serviced
`by the application. To this end, each of the above attributes
`may be used as the key to locate a published application in
`the Active Directory 66. Then, once a published application
`is located, the application's user-friendly (human readable)
`name is available, as well as enough information to assign
`the application to the user. Thus, until needed, a published
`application is not installed, nor does it appear to the user to
`be installed. For example, there are no shortcuts present to
`use for activating the application.
`Thus, when a possibly-published application is invoked,
`step 704 branches to step 710 to look for the extension
`information in the Active Directory 66, i.e., the class stores
`65 70 associated with this user. To determine this, at step 710,
`the operating system calls an application management ser(cid:173)
`vice 84 (i.e., the installer) to find the appropriate application
`
`On Demand Installation of Software
`Implementations
`
`In general, a first 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(cid:173)
`ing United States Patent Applications entitled "Method and
`System for Assigning and Publishing Applicatio