The invention relates generally to computer systems and networks, and more particularly to an improved method and system for deploying applications to users and computers in a network.
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 employees more productive. Lost productivity at employees' computer desktops is a major cost for corporations, often resulting 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 and/or compatible with others. Productivity is also lost when a desktop is too complex, such as when the desktop has too many non-essential applications and features thereon. Much of the expense of administering distributed personal computer networks is spent at the desktop, performing tasks such as fixing the applications and settings that the user has incorrectly or inadvertently modified.
At the same time, an enterprise wants certain personnel to have access to various software applications, while wanting other applications to be available 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. Similarly, the enterprise may decide that employees spend too much time browsing the Internet, whereby the enterprise desires that only certain groups such as the research group and management group should have Internet browsers installed on their machines.
However, to implement such policy decisions, administrators or the like generally need to physically visit each workstation to load or unload the specified programs, and spend time with the employees regarding the need for installing optional programs. 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 productivity. The administrator also needs to revisit the workstations to install new versions of applications.
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, deploying applications in an enterprise is a complex task that does not fit in well with existing systems and methods.
Briefly, the present invention provides a system and method for automatically deploying applications by assigning certain applications to users and machines in accordance with a policy. One or more advertising scripts are stored with a policy associated with computer or user policy recipients, and each advertising script includes an application assigned to the policy recipient. When one or more advertising scripts are applied, such as to a user at logon or a machine at re-boot, assigned applications are advertised as available to the user by placing application shortcuts on a start menu or desktop and by writing entries to the system registry such as to enable document invocation through the Windows shell and class activation through system components and applications, i.e., file-extension based activation and COM (Component Object Model) CLSID (class identifier)-based activation, respectively. In this manner, assigned applications may be advertised as available, prior to the actual installation thereof. An installer installs advertised applications as needed, i.e., upon user activation of the application. Other applications may be published, whereby they do not appear to be available, but are optionally available if activated (e.g., via file extension-based activation and CLSID-based activation) or manually installed by a user.
Other benefits and advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which:
Exemplary Operating Environment
With reference to
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 modules 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 computer 20, although only a memory storage device 50 has been illustrated in
When used in a LAN networking environment, the personal 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 establishing 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 communications link between the computers may be used.
For purposes of the following description, a client workstation (e.g., 201) may correspond to the computer system 20, while an application package 60 (
In general, the present invention provides a method and system for deploying software applications throughout a computer network in a highly flexible, scalable, extensible and efficient manner. To this end, the method and system leverage a highly flexible architecture wherein an administrator can tailor policies to sites, domains, and organizational units of users and computers thereunder, (in a hierarchical manner), by specifying one or more policies therefor, such that the policy within an organization is centrally managed. Such group policies, including the prioritizing of multiple policies for policy recipients (e.g., users or machines) are described in U.S. Pat. No. 6,466,932, a continuation-in-part of U.S. patent application Ser. No. 09/134,805, now abandoned, 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 are maintained via a Windows NT® 5.0 directory service, known as the Active Directory 62, ordinarily maintained in a domain controller 64 (
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 62. 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 utilize network information.
Application Deployment: Assign and Publish
In general, a primary aspect of application deployment involves initially making an application available to users. To initially deploy an application, an administrator can choose to either “assign” or “publish” the application. To this end, as shown in
In accordance with one aspect of the present invention, via this centrally maintained deployment information in the class store 68, policy recipients (e.g., users and workstations/machines) in a domain are assigned applications, or applications 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 therefrom. 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 on a per-group basis so that those groups of users who may benefit from the program have it, while others who do not need it will not have it occupy resources of their workstations. Publishing is described in more detail below.
In accordance with one aspect of the present invention, assigned applications have a number of attributes, including that they are advertised, i.e., they appear as available to a user at each logon (if assigned to a user) or at each re-boot (if assigned to a machine). Note that advertised applications are not necessarily installed on the workstation, but rather may only appear to be installed. As described in more detail below, so as to make an application appear installed, advertisements for an application include shortcuts that appear on the Start Menu and/or placement of shortcuts/icons on the desktop, and a collection of registry entries required primarily for OLE and shell activation. For example, to explicitly launch an application, users navigate the Start Menu looking for a shortcut representing the application, then click that shortcut. Thus, shortcuts placed on the Start Menu represent a blatant advertisement for an application. Users also implicitly launch applications by double-clicking a file (of a file system) having an extension associated with a particular application. Since associations between file extensions and applications are stored in the system registry 70 (
Assigned applications are also resilient, in that they will be re-advertised on the next logon (or machine re-boot as appropriate) if deleted from the local workstation (machine) 201. For purposes of simplicity, assignment will hereinafter ordinarily be described with reference to being applied to users via a policy at user logon, although it is understood that policies may be applied to a machine when the machine connects to the network, e.g., at machine re-boot, and thus applications may be assigned to machines (e.g., via a machine profile 79) in the same general manner as users. Moreover, even if a user installs another program or different version of the application over an assigned application, because the advertise script is applied, the assigned application (the administrator-specified version) will return at the next logon. Only an administrator (and in particular a domain administrator) may permanently remove an assigned application, by doing so via the centralized location.
To assign an application, as generally shown in
The managed software installer mechanism 76a facilitates a number of deployment tasks, including advertising, which occurs when a package 60 (and any transforms encapsulating administrator customizations) are advertised into a group policy object (e.g., 662). As described below, the result of such an advertisement is the advertise script 74, a file that gets physically stored in the group policy object 662. At logon time, a user having the group policy object 662 applied thereto receives a copy 74a of the advertise script (and other scripts). Note that the scripts may be copied from the domain controller's sysvol to the user profile 78, or processed from the network rather than physically copied, however, copying the scripts outside of the profile is preferable for security and performance reasons.
Logon code 80 then calls the managed software installer mechanism 76b to process the copied advertise script (or scripts) 74a, the result of which is the creation of a collection of advertisement information 82 including shortcuts on the Start Menu and registry entries required for shell and OLE activation, as also described below. Advertisement information references the managed software installer mechanism 76b, and, as described below, the operating system 35 knows what to do when it encounters such information. Lastly, the managed software installer mechanism 76b is involved when activation occurs, i.e., the managed software installer mechanism 76b is called when an application is activated to install one or more components as needed to service the activation request.
Thus, to summarize, via the managed software installer mechanism 76a, the application deployment editor causes the advertise script 74 to be stored for one or more groups of users (or machines) in a group policy object (template) (e.g., 662) of the Active Directory 62. In general, the application deployment editor 72 is an extension to a Group Policy Editor, which is a snap-in to the Microsoft Management Console, a common framework for administrative tools and processes. As described in the aforementioned “Group Policy” patent, the Group Policy Editor is a tool used by an administrator to create, edit, and manage group policy objects 66, which associate policy with Active Directory containers (sites, domains and organizational units). The application deployment editor 72 extension thereto allows an administrator to deploy applications, i.e., the application deployment editor 72 is an administrative tool for assigning, publishing and removing software in a network of servers and workstations.
Thus, to assign an application, the administrator selects an application package 60 (e.g., provided by a vendor) and optionally transforms the package 60 to customize it to meet particular needs. By way of example of a transform, a spreadsheet program may be installed with customized spreadsheet templates needed in an organization. The administrator may also create network shares for the software, including executable, configuration, data files, components and packages, and the administrator may set up the application to run from the network. The administrator then causes the advertise script 74 to be generated.
More particularly, to generate the advertise script 74, the application deployment editor 72 calls the MsiADvertiseProduct( ) API(application programming interface) of the managed software installer mechanism 76a with the information as set forth in the table below:
Upon successful completion, the result is the advertise script 74 containing records for creating advertisement information, e.g., including shortcuts, icon files, and OLE and shell activation registry entries. Note that in the network environment, szScriptFilePath may specify a file stored in the applications folder of the group policy object 662 as represented in
Thus, in accordance with another aspect of the present invention and as generally shown in
More particularly, the logon process 80 gathers up the new or modified advertise scripts from the group policy objects 661-66n associated with the directory containers to which the user belongs, and stores them in a storage in the user's local workstation 201. Then, each of these advertise scripts is handed to the managed software installer mechanism 76b for processing, via the MsiAdvertiseScript( ) API, as set forth in the table below:
Possible bits for the “dwFlags” argument include:
The MsiAdvertiseScript( ) serially executes the list of advertise script information in accordance with the above parameters. Once successfully processed, an advertise script stores information in the user's profile 78 and the system registry 70 that is used to manage advertised applications. This set of per-user information includes attributes for each advertised product, source list information, feature-to-product associations, and descriptors for each advertised component. An association between the managed software installer mechanism 76 and the operating system 35 facilitates advertising. For example, shell and OLE activation code, as well as many shell and OLE-related registry entries, are preferably installer mechanism-aware. To this end, managed shortcuts include a descriptor that the shell activation code (of the operating system 35) detects, hands to the managed software installer mechanism 76b for resolution in the form of a path, and then processes the resulting path. Similarly, OLE activation is aware of such descriptors and calls an API of the managed software installer mechanism 76b to resolve them.
To manage the advertised applications, the managed software installer mechanism 76b uses the identifiers set forth in the following table:
General properties for each advertised product are stored under a Products key by {ProductCode}.
An administrator may also choose to publish an application, essentially to make the application available to a user if needed. Published applications are just as manageable as assigned applications, however unlike assigned applications, a published application has no presence on a user's machine until invoked. Thus, a published application has no attributes on the client machine, but rather has its attributes stored in the Active Directory 62. A published application can be located in the Active Directory in a number of ways, including via the 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. 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 does not look installed. For example, there are no shortcuts present to use for activating the application, (however it should be noted that this does not prevent an administrator from placing a document managed by a published application on the desktop or the Start Menu, which is not the same as application assignment). Instead, published applications may be activated by the above-attributes such as file extension, in a two-step process as described below with particular reference to
Moreover, the “Desktop-New” context menu may choose to not list published applications, nor need the “Insert-object” menus of applications list published applications. However, another way in which a published application may be assigned is manually, via the “Add/Remove Programs” Control Panel applet. To this end, the class store 68 is queried and the list of installable programs provided to the user includes those published programs listed in the class store or stores associated via the policy objects with that user's group or groups.
Once advertised, the applications may be installed on the local workstation 201 by the managed software installer mechanism 76b on an as-needed basis, e.g., as Program Files 75 (
Turning to an explanation of the operation of the present invention,
Once the one or more scripts are processed, assigned applications are advertised as available to the user. One way in which a user may activate such an application is by clicking a shortcut corresponding thereto.
Both assigned and published applications may be activated by invoking (e.g., double-clicking) a file (document) having an extension with an associated application registered in the registry.
If not found in the local registry at step 804, then an application corresponding to the extension has not been assigned, however an application corresponding to the extension may still be published to the requesting user. Thus, step 804 branches to step 810 to look for the extension information in the Active Directory, i.e., the class stores 68 associated with this user. To determine this, step 810 queries the class store or stores 68 to find the appropriate script or scripts and look in the scripts for the file association. Note that the administrator may similarly prioritize which application in the class stores handles which extension. If found, the application script is advertised at step 814 as described above, i.e., the application is effectively assigned to the user, the registry is populated, the item added to the Start Menu, and so on as if the application was assigned. The process then returns to step 802 so that the application may be launched. Conversely, if no associated application is found in the class stores at step 812, an appropriate error is returned (e.g., no association for this application for this user) at step 816.
As can be seen from the foregoing detailed description, there is provided a method and system for automatically deploying applications across a network in accordance with a policy. Via a script associated with a policy, and applied at user logon or machine connection to the network, applications may be assigned to policy recipients (users or machines), whereby the assigned applications are advertised to those policy recipients. Other applications may be published to users, whereby the application may be indirectly activated.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.
This is a continuation of U.S. patent application Ser. No. 09/158,968 filed Sep. 21, 1998. This application is related to the following United States patents, all of which were filed on Sep. 21, 1998 and assigned to the same assignee as the present application: “Method and System for Advertising Applications” U.S. Pat. No. 6,345,386 hereby incorporated by reference herein in its entirety;“Class Store Schema” U.S. Pat. No. 6,389,589;“Method and System for On-Demand Installation of Software Implementations” U.S. Pat. No. 6,523,166 and“Software Implementation Installer Mechanism” U.S. Pat. No. 6,418,554.
Number | Name | Date | Kind |
---|---|---|---|
5155847 | Kirouac et al. | Oct 1992 | A |
5421009 | Platt | May 1995 | A |
5473772 | Halliwell et al. | Dec 1995 | A |
5535326 | Baskey et al. | Jul 1996 | A |
5555416 | Owens et al. | Sep 1996 | A |
5586304 | Stupek, Jr. et al. | Dec 1996 | A |
5625823 | Debenedictis et al. | Apr 1997 | A |
5630076 | Saulpaugh et al. | May 1997 | A |
5644766 | Coy et al. | Jul 1997 | A |
5655081 | Bonnell et al. | Aug 1997 | A |
5659547 | Scarr et al. | Aug 1997 | A |
5692129 | Sonderegger et al. | Nov 1997 | A |
5732266 | Moore et al. | Mar 1998 | A |
5732275 | Kullick et al. | Mar 1998 | A |
5742829 | Davis et al. | Apr 1998 | A |
5752042 | Cole et al. | May 1998 | A |
5764992 | Kullick et al. | Jun 1998 | A |
5768566 | Harikrishnan et al. | Jun 1998 | A |
5778234 | Hecht et al. | Jul 1998 | A |
5784612 | Crane et al. | Jul 1998 | A |
5790664 | Coley et al. | Aug 1998 | A |
5790856 | Lillich | Aug 1998 | A |
5796967 | Filepp et al. | Aug 1998 | A |
5805897 | Glowny | Sep 1998 | A |
5835911 | Nakagawa et al. | Nov 1998 | A |
5859969 | Oki et al. | Jan 1999 | A |
5859978 | Sonderegger et al. | Jan 1999 | A |
5867713 | Shrader et al. | Feb 1999 | A |
5867714 | Todd et al. | Feb 1999 | A |
5870762 | Lee | Feb 1999 | A |
5897640 | Veghte et al. | Apr 1999 | A |
5925127 | Ahmad | Jul 1999 | A |
5930513 | Taylor | Jul 1999 | A |
5930514 | Thompson et al. | Jul 1999 | A |
5933647 | Aronberg et al. | Aug 1999 | A |
5954827 | Frank et al. | Sep 1999 | A |
5960204 | Yinger et al. | Sep 1999 | A |
5966540 | Lister et al. | Oct 1999 | A |
5978590 | Imai et al. | Nov 1999 | A |
5987504 | Toga | Nov 1999 | A |
5995756 | Herrmann | Nov 1999 | A |
5999740 | Rowley et al. | Dec 1999 | A |
6006034 | Heath et al. | Dec 1999 | A |
6006035 | Nabah | Dec 1999 | A |
6009274 | Fletcher et al. | Dec 1999 | A |
6009401 | Horstmann | Dec 1999 | A |
6021438 | Duvvoori et al. | Feb 2000 | A |
6023586 | Gaisford et al. | Feb 2000 | A |
6029147 | Horadan et al. | Feb 2000 | A |
6041333 | Bretschneider et al. | Mar 2000 | A |
6067582 | Smith et al. | May 2000 | A |
6094531 | Allison | Jul 2000 | A |
6131192 | Henry | Oct 2000 | A |
6151643 | Cheng et al. | Nov 2000 | A |
6151708 | Pedrizetti et al. | Nov 2000 | A |
6161218 | Taylor | Dec 2000 | A |
6167567 | Chiles | Dec 2000 | A |
6189030 | Kirsch | Feb 2001 | B1 |
6192406 | Ma et al. | Feb 2001 | B1 |
6199204 | Donohue | Mar 2001 | B1 |
6202207 | Donohue | Mar 2001 | B1 |
6205527 | Goshey et al. | Mar 2001 | B1 |
6212536 | Klassen et al. | Apr 2001 | B1 |
6219786 | Cunningham et al. | Apr 2001 | B1 |
6286138 | Purcell | Sep 2001 | B1 |
6314565 | Kenner et al. | Nov 2001 | B1 |
6377263 | Falacara | Apr 2002 | B1 |
Number | Date | Country | |
---|---|---|---|
20050108688 A1 | May 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09158968 | Sep 1998 | US |
Child | 11010499 | US |