throbber
(12) United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket