You are on page 1of 12

US 20120246630Al

(19) United States (12) Patent Application Publication (10) Pub. No.: US 2012/0246630 A1
Kuzins et al.
(54) SYSTEM AND METHOD FOR AUTOMATING INSTALLATION AND UPDATING OF THIRD PARTY SOFTWARE
Inventors: Sascha Kuzins’ San Francisco, CA

(43) Pub. Date:
(51)
(52)

Sep. 27, 2012

Publication Classi?cation Int Cl G06F 9/445 (2006.01)
US. Cl. ...................................................... .. 717/169

(75)

(US); Patrick SWieskoWski, New York’ NY (Us)
73 A . _ s B D . S F .

(57) ABSTRACT A software application installation system facilitates auto
matic installation and/or updating of software applications

( )

sslgnee'
_

ciiures y eslgn’ an ranclsco’ (U )

without requiring a user to have any speci?c knowledge of the con?guration of the computer system upon which the soft
ware application is to be installed and/or updated. The soft

(21) Appl' NO"
. _

13/428’789
Mar‘ 23’ 2012
. .

ware applications to be installed may be supplied by third
party providers. The installation is based on automatically

(22)

Flled'

derived knowledge of the computer system on which the
software applications are to be installed. The software appli

(60)

Related U's' Apphcatlon Data Provisional application No, 61/466,594, ?led on Mar, 23, 2011.

cations may be installed automatically using a standardized user interface (U1), and/ or without requiring substantial user

input.

2
1

‘1

1

imwmwwoj

1 i

w vi . WN Qmié egsi W W M .Patent Application Publication Sep. 2012 Sheet 1 0f 2 US 2012/0246630 A1 ww w. 27.

27. 2012 Sheet 2 0f 2 US 2012/0246630 A1 1% A gié2z% WW .Patent Application Publication Sep. W zég iii .

whereas other MSI packages may only contain an installation program that is executed by the MSI service. etc. version. etc.US 2012/0246630 A1 Sep. ?les. user’s computer. dur ing installation the MSI presents different user interfaces according to the software application being installed and the cation. For some software applica tions. etc. Thus. 2011. and such standardized packing formats are not known to exist for other operating systems. Some MSI packages may not contain installation programs and only instructions for copying ?les.594. the vendor of a software application to be installed supplies an MSI package that contains MSI instruc tions. BACKGROUND [0003] In today’s computing landscape. The MSI also has several limitations. English. however. The user may also need to installation programs from the MSI package. the software application may not be installed correctly. versions of any other software application installed on the especially for novice users. by providing a uni?ed software-installation process that automatically manages the identi?cation. Such auto . the installation steps differ based on the appli cations being installed.g. the MSI packages and service may not provide automatic installation of a software application. The instructions can cause the MSI to perform operations such as copying ?les to certain destinations and/or executing ating systems. the ?les may be installed automatically using a standardized user interface (UI). Speci?cally. As such. there is a need for improved systems and methods for installing software applications on a computer download the particular ?le version having the correct trans lation/ localization of the software application to be installed on the user’s computer system. German.) of operating systems are involved. The received ?les may be supplied by one or more third-party providers of software applications. 27. so as to make the software applica tion available for use on the computer system. In addition. in a process commonly referred to as software installation. In some instances. and thus. Thus. the user may need to have knowledge of the speci?c con?guration of his/her com puter system.. etc. For some oper associated setup program supplied by the software vendor. The APT. and as such. andlanguages (e. Moreover. [0010] Therefore. The MSI also does not automate the selection of [0002] The invention relates generally to the ?eld of com puter software. This interaction with the installation program can be tedious and error prone. a user must download a speci?c version of the software application that matches the type and version of the operating system on the user’s computer. For many software applications the MSI is simply not available. FIELD OF THE INVENTION ers using the Windows operating system. if installed previously. The MSI instruc tions are executed by the MSI service on the user’s computer. [0008] The Windows Installer (commonly known as MSI) offers a uni?ed interface to software installation on comput incorporated by reference in its entirety. [0006] Just as one example. ?led on Mar. is not compatible with other operating systems. system. thereby changing the state of the computer system. selection and receipt of ?les associated with a software application to be installed. These selections often relate to the language (e. a hard disk) of the computer system. it may be dif?cult for IT professionals to automate the installation of software appli cations on a number of computers if each installation requires substantial user input or has different settings and/ or states.. 61/466. the user may be required to know the different steps to manually install the software. No. without which. a software package that can download and install Linux software appli installed without requiring substantial user input by pre-ana lyzing the input sought from the user during installation and by automatically supplying pre-determined input. 2012 SYSTEM AND METHOD FOR AUTOMATING INSTALLATION AND UPDATING OF THIRD PARTY SOFTWARE RELATED APPLICATIONS cations automatically. and speci?cally. however. systems and methods according to the present invention facilitate automatic instal lation and/or updating of software applications without requiring a user to have any speci?c knowledge of the con software installation program. the entire content of which is hereby tral depository. [0009] In general. This is achieved. MSI does not auto matically download third-party (non-Microsoft) software. and language of the operating system. computer users often download software applications over the Internet. for example by going to a software application vendor’s web site and downloading the ?les.) of the software application and the location in the ?le system where the software application is to be installed. version of the software application. in part. 23. Users must manually acquire the ?les that make up the soft ware package.g. and/or installation programs. [0005] One common way to avoid some of the problems described above is to use a software installation program. [0012] The ?les are selected based on automatically derived knowledge of the computer system on which the software application is to be installed. English. versions. a user manually performs several steps to make the software available for use on a computer system. ordering a CD via mail. This knowledge may include type. several installation programs prompt the user to select options during installation. The APT also does not install applications that are not pro vided in a standardized pre-de?ned package format at a cen [0001] This application claims priority to and bene?t of US. Even with a [0011] In various embodiments. this manual selection and installation process includes a signi?cant risk of error. German.g. ?guration of the computer system upon which the software application is to be installed and/ or updated. however. in order to use a downloaded software appli the right version of a software application according to the operating system version and/ or language. The ?les may also be [0007] Some versions of the Linux operating system include the Advanced Packaging Tool (“APT”). SUMMARY OF THE INVENTION Such a program typically executes the required installation steps and modi?es the contents of a persistent storage (e. [0004] Another complication may arise when different types. software installation can be problematic. to automating software installation and updates. Provisional Patent Application Ser. software applications may require some collection of installation programs that the user must download from separate software vendors or sites. Upon receipt. requires substantial user interaction.. Further.

and hiding visible elements of the processes from the screen. (ii) softWare installation instruc to perform the operations of receiving an identi?cation of a ?rst softWare application component to be installed on the one or more client computers. the installation instructions may include several possible con?gurations for the ?rst soft Ware application component. [0016] Accordingly. published version of the main program. tions for installing the softWare application component on the computer. [0019] In some embodiments. In some embodiments. a method for providing installa tion softWare to a computer includes receiving at a computer server an identi?cation of a ?rst softWare application compo nent to be installed on a client computer. and tagged With a key that represents selected softWare applications. the installation system may generate a status report With the results of the installations. machine proces sor architecture. The computer servers are con?gured corresponding to the ?rst softWare application. The bootstrap component includes a key more computer servers. etc. a main program.) and may execute the stub When they Wish to perform installations and/ or updates. ensuring that the user has access to the latest functionality and improvements made to the main program. doWnload the ?les. 27. The method further includes identifying by the main program a version of the ?rst softWare application component if the ?rst softWare application component is installed on the com [0013] In various embodiments. and (iii) the ?rst softWare application component. and installing the ?rst softWare application component on the computer. the softWare installation instructions include a Uniform Resource Locator (URL). and receiving a bootstrap compo nent at the computer. a URL expression is retrieved from the con?guration informa tion. lists softWare applications available for installation/update using the installation system. the stub may check if the cached main program has changed based on a time stamp or check sum and may doWnload the latest version of the main program ing each of several programs. The automatic installa tion process includes creating processes based on the doWn [0020] In some embodiments. softWare installation instructions for installing the softWare application component on the client computer. The main program is a generic component Which interprets instructions on hoW to install the speci?ed softWare products. to the client computer. monitoring the state of the processes. in one aspect. the stub may also cache the main program locally. The report may be pre sented to the user to con?rm installation. to providers of the application(s) being installed for quality assurance or license sends a bootstrap component including a key corresponding to the ?rst softWare application. Users may store the keyed stub on storage media (hard disk of the user’s computer. operating system language. and perform steps to install the softWare applications using the doWn loaded ?les. As an optimization. 2012 matic installation Without signi?cant user interaction can be highly bene?cial if software applications are to be installed on a large number of computers. on the user’s computer. The receiving of the ?rst softWare applica tion component and/ or installation thereof is done at the direction of the main program operating based on the soft Ware installation instructions and/ or the identi?ed version. USB memory stick. copying and softWare application component With the tree representation of user interface elements. and optionally to the stub. The method also includes receiving (i) a main program at the direction of the bootstrap component. The stub fetches the latest version of the main component from the Web server. The identi?ed erroneous user interface states may be sent. the method includes travers current. i. command line parameters or some combination thereof. [0021] In another aspect. and sending a bootstrap component . via a netWork. if the ?rst softWare application component is installed on the client computer. [0018] In some embodiments. For each traversed program. The main softWare component may also make default choices on behalf of the user to reduce user interaction With inspection. ?ash memory or a SIM card in a mobile device. In this case. The algorithm may select one of the several con?gurations based on an operating only if there has been a change and the cached version is out of date. (4) and a hosted Web service that provides instructions to the main program. (2) a bootstrap softWare com ponent (also called a “stub”) that is doWnloaded from the Web-server.e. sending messages to the processes based on their state. The method may include creating a copy of the main program. to a server for manipulating ?les and other system state (such as registry keys). The URL expression may also include primitives to send HTTP requests and manipulate a response. The URL may be a URL expression including instructions to retrieve data from other URLs. and one or cation of a ?rst softWare application component to be installed on the computer. and embedding o?lline installation instruc tions and the temporary ?le in the copy of the main program. a system for installing softWare on a computer includes one or more client computers. and a program corresponding to the URL expression is retrieved. the method includes execut for installing the softWare application. [0015] The main softWare component utiliZes the installa tion instructions to determine the ?les to be doWnloaded. and/or IT staff to ensure security compli ance among others. and the ?rst softWare tracking purposes. [0014] The separation of the application into a stub and main program components enables an end user to retrieve the ing instructions including primitives to access and manipu late data of the version of the softWare application component installed on the computer. a method for automati cally installing a softWare application or components thereof on a computer includes sending from a computer an identi? application component. The method may also include identifying erroneous user interface states by matching user interface states associated With the ?rst loaded ?les. among other functions. used to doWnload the ?les. a softWare application installation system provides a uni?ed interface for doWnload ing and installing software applications.. (3) a main softWare component (also called a “main program”) doWnloaded by the stub or in response to the key that facilitates automation of the softWare installation. service packs (a WindoWs feature for major OS updates). the method includes creating a tree representation of user interface elements. con?guration information is retrieved from a Web service. The main program is con?gured to identify a version of the ?rst soft Ware application component.US 2012/0246630 A1 Sep. determine the Uniform Resources Locators (“URL”) to be system version. [0022] In another aspect. The method may also include storing the program in temporary ?le. At the end of the installation process. [0017] In some embodiments. The computer server the third-party set-up programs. and the method may include selecting one of the several con?gurations based on an algo rithm executed by the main program. An exemplary sys tem includes: (1) a Web-server accessible via a Website that puter.

without limitation. Storage Devices 140.. smart phones and PDAs) as well as notebooks.g.US 2012/0246630 A1 Sep. User Datagram Protocol (UDP). which should not be interpreted to limit the scope one of ordinary skill in the art would give to the inven tion. The Storage Device 150 may be local to the Publisher Server 160 and/or may be located remotely. etc. g. IrDa or other suitable proto col. 27. and the ?rst software application component. and variables. and application set keys representing a set of applications. FPGA. attributes.. The Installation System 100 includes Clients 120. stubs). an [0027] The following description provides exemplary embodiments of methods and systems consistent with the present invention. and may include tra set-top box used for distribution and viewing of subscription content. The program modules may include routines. including a wired or wireless local area network (LAN) or wide area generally being placed upon illustrating the principles of the invention. data structures. data communica tions infrastructure equipment such as application-enabled switches or routers. and a system bus that couples various system components including the system memory and the processing unit. The Web-Server 130 may access the grams. procedures. The cuitry. Zigbee. Any number of transport protocols may be utiliZed.e. orASIC. advantageously be implemented on many different platforms. The Clients 120 are computers on which a software application is to be installed. a mobile phone (e. and Application Stor age Devices 150. an iOS. co-processor.g.” and “machines” may include. or telecommunications infrastructure [0023] Other aspects and advantages of the invention will become apparent from the following drawings. emphasis instead accordance with embodiments of the invention. a system memory. by way of example. The functionality provided for in the components and modules may be combined into fewer components and modules or further separated into additional components and modules. a wireless personal area network (PAN). [0032] The Storage Device 150 includes the installation ?le or package for installing a software application. The Web-Server 130 is accessible to the Cli ents 120 via a web-site. gaming device (such as a Nin tendo Wii or DS. an Extranet. Andriod or Blackberry-powered device). or other appropriate mechanism. subroutines. BRIEF DESCRIPTION OF THE DRAWINGS private branch exchanges (PBX). pro ditional personal computers. 2012 including a key corresponding to the ?rst software application and a main program to the one or more client computers. various networks may be employed in refer to the same parts throughout the different views. tablet computers. [0029] As used herein.” and “algorithm” mean. one or more main programs. ?rmware. etc. The main program is con ?gured to identify a version of the ?rst software application component. 3G and 4G) and other types of net works. and Resource ReSerVation Protocol (RSVP). a laptop. 1 schematically depicts an environment in which a software application installation system according to an embodiment may be operated. Computers may be connected over the Internet. 2 illustrates exemplary operation of a software application installation system according to one embodiment. Datagram Congestion Control Protocol (DCCP).” “devices. references to a “device. without limitation. that per form particular tasks or implement particular abstract data types. references to “a module” and “mod Storage Devices 140. like reference characters generally [0030] In addition. the drawings are not necessarily to scale. and may be connected to the system bus via a user-input interface. which may be local to the Web-Server 130 and/or may be located remotely. The computer may be a desktop computer used for home or of?ce use. or Sony PS device) or a Web-Server 130. object-oriented software compo updated using the installation system 100. cellular phones. and claims. The nents. a software or hardware component which components (i. For wireless communications. Microsoft XBOX. such as public or private telephone switches or of the invention. notebook or pad com puting device. When used in a WAN networking envi ronment. mobile devices (e.” Ethernet. but are not limited to. The Storage Device 150 is accessible by the Publisher Server 160. g. in one or more databases) one or more bootstrap ules”.. drivers. A module lation instructions that may be used by the main programs. DETAILED DESCRIPTION network (WAN). seg ments of program code. Fibre Channel Protocol (FCP). microcode. components of the systems described herein may communicate through a combination of wired or “machine. com puters may be connected to the LAN through a network interface or adapter. imple mentation may be achieved either by writing applications that are native to the chosen platform. [0028] As used herein.. the components and modules may computer servers are also con?gured to send software instal lation instructions for installing the software application component on the one or more client computers. [0031] FIG. The general purpose computer may employ the process ing unit to execute computer-executable program modules stored on one or more computer readable media forming the wireless paths. a module may include. detailed description. computers typically include a modem or other com munication mechanism. and [0026] FIG. class components and task components. Thus. functions. Furthermore. data structures. components. “function”. tables. communications protocols may include Bluetooth.. “expression. or by interfacing the plat form to one or more external application engines. by way of example only. 1 illustrates an exemplary Installation System 100. [0024] In the drawings. data. Transmission Control Protocol (TCP). cellular networks (e.. which can be a third-party publisher of the application to be installed on the Clients 120. Stream Control Transmission Protocol (SCTP). computer servers. In any of these cases. Modems may be internal or external. Additionally. lists of software applications that may be installed and/or may be fully or partially implemented with a general purpose integrated circuit (IC). When used in a LAN networking environment. all of which illustrate the principles equipment. including. A module may advantageously be con?gured to reside on an addressable storage medium and be con?gured to execute on one or more processors. cir . instal performs certain tasks. components. such as software components. class libraries. [0025] FIG. arrays. databases. a system memory. if the ?rst software application component is installed on the one or more client computers. Venturi Trans port Protocol (VTP). The Storage Devices 140 store (e. processes. Also. or any other network that facilitates communica tions. Reliable User Datagram Pro tocol (RUDP). a general purpose computer including a processing unit. objects. including computers. an Intranet.

The stub then executes the main program.. the matching algorithm per forms the following steps. a software installation system 200 includes several executable program ?les.g. the matching algorithm returns the matched con?gu ration and the matched language identi?er and. If a match is program executable image. the stub) directs the download of another software component 204 (i. English and the United States as the language and country.e. Processing of Installation Instructions by the Main Program [0038] In some embodiments. and any current command line parameters. in some instances.. The web service may add a unique sequence of bytes. while FIG. the stub 202 veri?es the authen con?guration is compatible with the current environment. the presence of Service Packs (major operating sys tem updates on Microsoft Windows. herein referred to as the “key. the matching algorithm may search for the ?rst con?guration that matches a set of default parameters. e. respectively. The web service responds with the installation information for the applications associ ated with the key. An exemplary custom program can search the local hard drive for incompatible third party programs and mark the con?guration incompatible if any such con?icting third party programs are found. the program returns a value indicating if the [0036] During execution. including the operating system version. considering various factors including operating system version and machine architecture. the matched country identi?er. the Internet). Thus. e. in other embodiments. The stub program 202 waits for the end of execution of the main program and then discards the main matching con?guration is still found. In one embodiment. Based on this information.... clicking on a button. there is at least one “con?guration” which encapsulates the information needed . instructions for automating user interface interaction with setup programs. from the Internet. optionally.g. the main pro gram) 204. The stub 202 then downloads the next program stage (i. The bootstrap component 202 then executes the other software component (i.g.US 2012/0246630 A1 Sep. such as the Client 120. the bootstrapping component or the stub) 202. program instructions for performing the installation steps. a matching algorithm in the bootstrap component 202 (i. the stub program 202 may con tact the web service and request information about the next program stage.e. and may discard or cache the other software component..e. 1). including but not limited to the operating system version. The web service may respond by sending the ?rst program component (i. 1). Such a program takes as its input information about the current system. passing along the key to the main program 204 as well as any command line parameters that were passed to the stub 202.. [0039] For each application. The custom program also collects information from the local ?le system and registry. the result is empty and the installation may terminate unsuccessfully. The user’s web browser may then initiate an HTTP POST request to transmit the list of selected applications to current operating environment. contain a list of ?les needed for installing the contain speci?c instructions for installing each selected soft ware application. for example. instructions for determining the currently installed version of this application. [0033] Although FIG..” to the stub in a process called “tagging. instructions for verifying if an installation was successfully performed. instructions for retrieving those ?les. one Web-Server for each service provided by the Installation System 100. This determination may be based on a number of fac 130 (shown in FIG. 1 depicts one Storage Device 150 and one Publisher Server 160.” The user then executes the stub program 202 on his client device. First. Similarly. the language and country set tings of the operating system. This information typically includes a Uniform Resource Locator (URL) directing the installation process to the location of the next program component. and that information is then processed by the main program. and the custom program can optionally return a value indi cating the reason for incompatibility. and command line parameters passed to the main program 204.. via the web server 130 of FIG.g. language. Downloading Files for Installation [0042] The matched con?guration data may. The user may select a set of software tors. the algorithm searches for the ?rst con?guration that matches English as the language. for example). If no transmitting the key to the service. a list of shortcuts that are nor (e. or responding to a email or text message. [0037] The main program 204 contacts the web service ating system’s “locale. [0041] The matching algorithm then searches the remain ing con?gurations to ?nd the ?rst one that matches the oper ticity of the main program 204 using public key cryptography. the machine processor archi tecture. 27. a mally created during the installation of the application.. instructions for checking if a version of the software application to be installed is currently running. Matching Algorithm [0040] In some embodiments.e. the main pro gram) 204 from that URL. The list of con?gurations is ?ltered to exclude any con?gurations that are not compatible with the applications on the web page and con?rm the selection by. For each application.g. [0035] The software installation system 200 may direct the user to a web site at which he can request and display a list of applications available from a web service which may be asso ciated with the web site. and any combination of these attributes. 1 depicts one Web-Server 130. Multi-Stage Execution [0034] With reference to FIG. the Clients 120 may communicate with many storage devices and/or publisher servers across a network lation. Each con?guration may contain a custom program that deter the web service.” e. the operating system language.e. the main program) from a web service such as that provided by the Web Server main program determines the most suitable con?guration for the operating environment associated with the user’s com puter. If there are no matches. mines if the con?guration is compatible with the current environment. the installation instructions found. for to install that application under certain circumstances. other embodiments may use more than one Web-Server. g.. the user may be assured that the most up to date version of the main program is down loaded from the web service (e. If there are no matches. The matched con?guration is used during subsequent steps such as installation and audit. the Internet) to retrieve software applications for instal lation on one or more Clients 120. The con?guration may include a list of ?les needed for the instal example. system architectures and operating sys tem versions with which the con?guration is compatible. lists of locales. 2. 2012 Clients 120 may communicate with the Web-Server 130 and the Publisher Server 160 via a network (e.

HTTP refer rer header). [0050] The installation system 200 may also operate in “audit mode” to determine the version numbers of applica tions installed on a computer. constructs a ?le path. A result computed by the URL expres sion may be based on the computation of these data from the other URLs. and/or IT staff to ensure security compli ance. and directory contents. netWork (e.. These applications are A custom-built language may provide functional primitives to make the construction of version-checking programs rela tively easy compared to manual or other automated methods of version checking.g. the main program 204 may skip the installation of that softWare appli cation. but are not tion. 2012 application. HTTP Cookies and HTTP Referrer. Such complex searches are frequently needed When searching for the installed versions of programs. The report may be presented to the user. the html page) is relatively stable but the doWnload links to the actual target resource change fre quently. each con?guration includes an installation script for installing the softWare application. In one typically requires an active Internet or cellular connection to alloW the system to doWnload various data.” This expression reads a ?le path string of a third party appli With that application. The URL expression may contain additional instructions to retrieve data from other URLs. The custom language provides primitives to access and manipulate data including. the target URL. The request may contain attributes including. among others. [0047] An exemplary expression in the custom language that can perform the above steps is “?leversion(registry retrieved from the Web service by sending the key embedded in the calling stub. the URL expression may itself be a program for doWnloading resources. the main program 204 doWnloads the ?les iden ti?ed by the one or more computed URLs.g. the ?le version is extracted. to determine the version of a given softWare appli cation. [0044] More complex interactions With Web servers may be necessary to doWnload certain resources. The overall version value of the expression is the largest version number of the resulting set of versions. it may be necessary to look up the ?le location of the softWare application in the registry. processes. but not limited to. and pro gram installation ?les.US 2012/0246630 A1 Sep. limited to. The expression “?le version(registry(“hklm\softWare\myapp*\installlocation”)+ “\myapp*. For each application. and sending cookies and sending referrers (e. reading and Writing of ?les. an expression that evaluates to a URL is analyzed by the main program 204 to compute the URL. The freeZing process creates a version of the installation system called an “of?ine installer” that can function on computers Without Internet or cellular access. Audit mode skips the actual installation of applications and instead compiles a report of the versions of the installed softWare applications as deter Installation Scripting Language [0045] In some embodiments.. the installation system 200 may operate in “freezing” mode. but are not limited to the creation of mined by the version checking mechanism described above. but not limited to the version supplied by the vendor. including the main program. For each matching ?le name. 27. the main program 204 doWnloads the corresponding ?le to a cation “myapp” from the registry using the “registry” func temporary location. a URL expression (i. The html page may contain a link to an installer ?le creates a ?le path that is used to search for ?les matching the pattern. these instructions are supplied in the form of expressions in a purpose-built programming language. based on various factors Which include. Once all ?les have been successfully .exe”)” searches the registry for values that match one or more patterns passed to the “registry” function. The freeZing process creates the o?line installer by instructing the main program 204 to traverse the list of softWare applications to be installed While still connected to the netWork. These steps can be quite [0052] An o?line installer operates as a single executable ?le that contains the data to function Without access to a tedious to be expressed in common programming languages.e. including receiving already installed and the version number equals (or is greater than) the application version about to be installed. program installation instructions. to providers of the application(s) being installed for quality assurance or license tracking purposes. the program evaluates the URL expressions. embodiment. the Internet). custom language these searches tend to be tedious to imple ment. the doWn load program) may fetch an html page from a vendor’s Web server.202. For example.. For expressions. HTTP Cookies. The URL Audit expression language generally contains primitives to send HTTP requests and to manipulate the result. For each URL. each value obtained from the registry function. For each ?le. and then to read the ?le attributes of a ?le at that location. The result may contain the response data. After the main program 204 computes the URLs based on the [0048] Another complex example requires searching for registry keys and ?les using patterns. the matched language and the matched country. the expression Complex URL Expressions [0043] In some embodiments. and then reads the ?le version information from the executable ?le at that location. O?lline Installers [0051] The multi-stage installation/execution system 200 Version Checking [0046] Each con?guration may also include instructions for determining the version (if any) of the softWare applica tion that is currently installed on the user’s computer. This mechanism can be useful if the URL to the information attached to ?les. A URL expression that is a doWnload program can interact With Web servers in complex Ways With the goal of downloading a particular required resource.. the main pro gram 204 traverses one or more con?gurations associated (“hklm\softWare\myapp\installlocation”)+“\myapp. Instructions include. registry values. Without a domain speci?c. or alternatively message the user and request further instructions. For each relevant con?guration. If the version check determines that the softWare application to be installed is doWnload page (i.exe”). The doWnload program then extracts the relevant link from the html page and in turn doWnloads the installer ?le.e. For example. In some instances. the HTTP Status Code and other parts of the HTTP response. [0049] Version checking may be performed by the main program 204 before the installation. and reading and Writ ing of registry values.

Controlled Execution of Processes [0059] The main program 204 can monitor the execution of the setup programs. the main program 204 checks for any embedded installation instructions. as described above. For each top level WindoW. before undertaking other steps of installation. the main program 204 can periodically scan the UI elements associated With the setup program process and child processes thereof. As part of the caching mechanism. the doWnload step may be skipped and the data may instead be read from the cached ?le. closing a WindoW. . the con?guration data may also contain the hash values of the ?les listed Within the con?gu ration. and optionally. third-party setup UIs during installation. The CreateProcessW API is used to create the setup Caching [0055] In one embodiment. Hiding UnWanted User Interface Elements [0058] In some embodiments. For each WindoW. Which is generally required While installing third-party softWare applications. terminating a process. the main program 204 Waits for the child pro cesses of the third-party setup program to ?nish the installa tion. the system 200 may hide the softWare application installation tasks. caches) the doWnloaded data into ?les on the disk. UI automation. but are not limited to. The third party setup program may create child attributes retrieved by the GetClassName and GetWindoW Text APIs. hiding unWanted user interface elements. the CreateDesktopW API is used to create a neW Desktop object With a unique name. using the Enum ChildWindoWs API. This option may be exposed as a command line sWitch. Without any or substantial user input.” This representation is matched against a list of rules. In some embodiments. [0060] The main program 204 facilitates the assembly of the UI state. In this case. instead of contacting the Web server. including but not limited to setup program to a “Job Object” (a Microsoft WindoWs speci?c operating system mechanism). the display of the UI and the automatic response provided by the main program 204 are hidden. detection of pre-installation error conditions. the main program 204 may assemble the UI state using the Microsoft Active Accessibil ity API or the Microsoft UI Automation API. This effectively hides user inter face elements from the visible default desktop. When storing the data. uses these stored data instead of doWn loading the data/?les from the Internet again. uni?ed interfaces to application con?guration. the main program 204 may terminate any remaining child processes once the setup program terminates. the folloWing techniques for executing third party setup programs in an automated and controlled manner: controlling child processes.e. but the user only Wishes to install softWare applications and does not Wish to launch the installed application immediately after the installation. and under certain circumstances. naming the ?le With a string representation of the hash value. In other Words. The main program 204 then embeds the installation instructions and the downloaded ?les in the copy. additional attributes may be added to the UI state.. referred to as the “UI script. UI automation feedback loops.US 2012/0246630 A1 Sep. the system 200 may ?rst determine if the cache directory contains a ?le With the correct hash. simulating the pressing of a key and setting the content of an edit control. When the installation system 200 needs to doWnload a ?le. it attaches the processes created to run the WindoWs. The ?rst rule that matches the present UI state during execution of the setup program is selected and the associated action is performed. [0053] In general. As such. The Job Object is monitored to detect the presence of any child processes of the setup program. the system 200 saves (i. 27. and combinations thereof. but if the o?line mode is detected (by the existence of embed ded installation instructions) the main program 204 uses those instructions and the embedded ?les to perform the be bene?cial if the third party setup program launches the installed application once the installation is ?nished. To this end. the main program 204 normally fetches the installation instructions from the server. To run the setup process on a separate Desktop. load selection. the program calculates the strong hash value of the data and then stores the data in a ?le. When the main program 204 runs a setup program. This Way the main program 204 can determine if it is being run as part of an o?line installer or if it is being run in the “online” manner (in processes to perform the installation of the subordinate pro grams and the setup program may then immediate terminate. The stored data may be referenced by a strong hash value of the data to be stored. In particular. SHA-l is an exemplary hash algorithm used for hash process With the lpDesktop member of the STARTUPIN FOW structure set to the name of the neW Desktop. of processes associated With the Job Object (described above) using the QueryInformationJobObj ect API. the main program 204 creates a copy of itself. Altema tively. so as to install applications automatically and seamlessly. Some embodiments use. the main program 204 assembles a list of child Controlling Child Processes [0057] In some instances.” Each rule in the UI script has an action associated With that rule. the main program 204 assembles the list of all top-level Win doWs associated With the process by enumerating all top-level WindoWs With the EnumWindoWs API and ?ltering the result to exclude any WindoWs that do not belong to the process using the GetWindoWThreadProcessId API. thus representing the UI state. user interaction is emu [0056] One important part of installing softWare applica tions is the automated and controlled execution of third-party lated. referred to as the “UI state. the main program 204 runs the third-party setup programs/processes on a separate “Desktop” (a Microsoft Windows-speci?c oper ating system mechanism). If such a ?le is located. For each process. Silent Installation [0054] The end user may instruct the stub 202 and the main program 204 not to shoW any user interface (UI) components When run. 2012 collected. When run. the main program 204 may Wait for any child processes to terminate. This can Which the main program 204 Was doWnloaded by the stub and that the main program should fetch the installation instruc tions from the server). the main program 204 retrieves the list setup programs. Actions include sending of messages to the setup process to simulate a mouse click. Based on the instructions in the con?guration data. UI Automation ing. This result is a hierarchical representation of the WindoWs and UI controls of the setup program at that point of execution. To do so.

the associated action is performed. a command line sWitch called “Disable Shortcuts” option.2. then matches the rules against the snapshot.” then simulate a mouse click on that button. The main program 204 then deletes these shortcuts if the user selected the Disable Shortcuts option. embodiment. the change set is compared With a list of knoWn patterns and only the shortcuts that match a knoWn pattern are deleted. The MyApp setup program may create a neW shortcut on the desktop are locked by the operating system.e. and if a rule from the WinNT. For each relevant location. certain common error conditions are encoun tered on computers running the Microsoft WindoWs operating system. [0066] To detect if the softWare application to be installed is presently running or being installed/updated by another installer.. The ?le system paths to these locations may be retrieved through APIs including SHGetFolderPathW [0064] In some embodiments. Only the shortcuts in the resulting ?ltered set are deleted. and the state tree may also change in response to the simulated user input..g. If such an error condition is detected. and entries that do not match any pattern (e. the UI state can be a tree API to attempt to open ?les that exist on the computer and that are knoWn to belong to the softWare application to be installed.e. As such. and to succeed otherWise. in general the UI automation engine Within the main program 204 periodically creates a tree snapshot (e. 2012 [0061] The UI state can be a complete representation of the UI elements associated With the setup program at a certain point during its execution. Uni?ed Interfaces to Application Con?guration [0067] In some embodiments. a common function offered by several setup programs is the option to “Install component A” and if the checkbox is not checked. the user may create a neW shortcut named “My shortcut. but they may be undesirable to the users in some situations.g. the main program 204 moni tors setup programs for error conditions. the installation system 200 matches.” The resulting change set (i.. [0065] Another likely error condition is the presence of another installer process. For example. Thus.” The change set is then compared With the patterns in the installation instruc tions.. My shortcut. The dWDesiredAccess parameter is set to a value that causes the API call to fail if the ?le is locked. the installation instructions used by the main program 204 to install My App may contain a list of patterns of shortcuts Which are expected to be created during of the “Global\_MSIExecute” mutex using the OpenMutex and WaitForSingleObject WindoWs API functions. the actions speci?ed by the rules can be triggered dynamically based on simulated user input. Another example may be if there is a checkbox labeled exposes con?guration parameters for the softWare applica tions to be installed in a uni?ed Way. etc. already running. A suitable value is the DELETE constant shaped snapshot of the WindoWs and controls of the third party setup processes at a given point of time.lnk.g. and avoidance of that error. as opposed to deleting all short cuts in the change set. the setup program often fails to replace the existing executable ?les With the neW versions because the loaded executable ?les “MyApp” softWare application is in progress.lnk” on his/her desktop While an installation of the application on a computer on Which a version of that appli cation is already installed (a common occurrence during soft Ware updates). Relevant locations may include desktop directories and QuickLaunch directories (e. for example.. One method of detection of another installer processes is to check the existence and state [0071] To prevent this.lnk. It Would be undesirable to delete all shortcuts in the change set because then the user created shortcut Would also be deleted. the set of neWly created shortcuts) after the installation is (“My shortcut. In one checked. . on Microsoft WindoWs operating system). assembling a list of shortcuts that exist after the instal UI Automation Feedback Loop [0063] In some embodiments.lnk) are discarded. In order to avoid failed installations. once every second). A human operator may vieW the UI state that caused the error condition and create a neW UI automation lation (called the after set).lnk. and by subtracting the before set from the after set to generate a change set (the set of shortcuts that Were added during installation). This condition can be detected in advance and the installation by the system 200 can be aborted. if the softWare application to be installed/updated is running during the installation (i. performs the action associ ated With the matched rule.g. The rules in the UI script are then matched against this tree. In particular. the main program 204 may detect this error condition before performing the installation. [0069] The main program 204 can assemble the list of existing shortcuts as folloWs. the rule/ action can be (stated herein in natural language): if there is a control With the caption “Proceed” and if there is a button With the caption “OK.h header ?le supplied by Microsoft. 27.lnk”). users may specify Whether they Would like to suppress these shortcuts using.2. This feedback loop alloWs for the future automation of the UI state that resulted in the rare error condition. the shortcuts are created during installation and are then deleted right after the installation. a process exists Which has loaded an executable image belong ing to the softWare application to be installed/updated). [0070] In one embodiment. While installing a softWare and SHGetSpecialFolderPathW. the main program 204 aborts the installation and sends the UI state to a Web service. This prevents the unWanted deletion of shortcuts that Were added during the installation by the user using another program and not by the setup programs. These shortcuts are normally created by the setup programs to alloW users to launch the installed softWare application. If another installer process is named “MyApp l. The UI state includes the state of UI elements such as captions. and if a rule matches. then simulate a mouse click such that the checkbox is skip the creation of “Desktop shortcuts” and “QuickLaunch shortcuts” (e. the list of patterns may only contain one entry: “MyApp *. For example. Speci?cally.lnk”). checked state of checkboxes. on the Microsoft WindoWs operating system).US 2012/0246630 A1 Sep. text of edit controls.. this commonly leads to failed installations. Detection of Pre-Installation Error Conditions list ?les With the ?le extension of shortcuts (the string “. In this example. One exemplary error condition is the presence of a UI state for Which no automa tion rule exists. the main program 204 may also use the CreateFile the installation of My App. [0068] The main program 204 implements the Disable Shortcuts option by assembling a list of shortcuts that existed before installing any softWare application (called the before set). [0062] Thus. the FindFirstFile/FindNextFile combination of APIs is used to rule for this particular state. Accordingly.” “MyApp 1.

if the setup program of that software application exposes such functionality. puter. The user speci?es the sWitch along With a list of softWare appli cation names. For example.US 2012/0246630 A1 Sep. using . Thus. In some embodiments the compo nents may set aside portions of a computer’s random access doW (e. Further. a magnetic tape. 2012 [0072] In one embodiment. The service is installed With instructions to skip the creation of shortcuts. [0075] In other embodiments. the user typically doWnloads a stub that contains (via the key) all available softWare appli cations that may be installed/updated by the installation sys tem 200. a graphical UI shoWing a list of all softWare appli cations available for installation/update) Where the user can memory to provide control logic that affects the interception. [0079] Each functional component described above may be implemented as stand-alone softWare components or as a the instructions retrieved from the server (e.g. To use this feature. [0077] At this point a communication channel is estab li shed betWeen the remote instance and the initiating instance. The initiating instance handles these requests on behalf of the remote instance and returns the requested data to the remote instance. Without repeatedly using the Web site to create tagged stubs for those sets of applications. the stub 202 contains a key Which refers to a set of softWare applications and the stub 202 may be obtained from the Website by selecting a set of appli cations and doWnloading the corresponding stub. The initiating instance of the installation system 200 then creates a service on the target computer (e. When the local selection feature is used. For each of the target computers. The user then selects any softWare applications to be installed/updated using local selection in the future. the method comprising: sending from a computer an identi?cation of a ?rst soft Ware application component to be installed on the com The user speci?es the names of the target computers and login credentials to access the target computers. Java. The main program 204 evaluates the list of [0080] Additionally. A method for automatically installing a softWare appli cation component on a computer.g. e. thereby creat ing a remote instance of the installation system 200 on the remote computer. or BASIC.. What is claimed is: 1. scanning and presentation steps described above. [0076] The installation system 200 also alloWs users to perform installations remotely on other computers on the netWork.. the install script executed by the CreateService API on a computer having the WindoWs the main program 204 passes speci?c command line param eters to the setup program of a software application to be operating system). 1) When the stub 202 is run. The instance of the installation system 200 running on the user’s computer is referred to as the initiating instance. the installation system 200 uses local selection to install different sets of applications ating instance. using the StartService API). The service is set to execute the copied executable ?les of the installation system 200. [0081] The invention can be embodied in other speci?c forms Without departing from the spirit or essential charac teristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting on the invention described herein. Tcl. such as FORTRAN.. such as EXCEL or VISUAL BASIC. In one embodiment. the installation system 200 performs the folloWing steps. the Server 130) indicate that the main program 204 must display a selec tion WindoW. [0074] As described above. The softWare may be embedded on an article of manufacture including.g. receiving. a main program. the program can be Written in a script.. 27.. This Way.g. Then. then started (e. Any requests that Would otherWise be sent to the Internet services are instead sent through the named pipe to the initi Local Selection [0073] Local selection alloWs a user to select a subset of softWare applications from the stub/bootstrap component 202 Without visiting the Website (e. the softWare may be implemented in application names and performs the required tasks for those applications. a command line sWitch “/se lect” may be used to specify the subset of applications.g. the user may obtain an installer stub from the Web site once. it is possible to perform installations on several remote computers simultaneously. the service and executable on the remote computer are deleted. In such an embodiment. The remote instance performs installation and/ or audit tasks. an EPROM. an optical disk. When the user runs the stub 202. A copy of the one or more executable ?les of installation system 200 are created on the target computer using netWork ?le operations. a hard disk. the softWare can be implemented in Intel 80x86 assembly language if it is con?gured to run on an IBM PC or PC clone. or functionality embedded in commercially available softWare. In effect. PERL. C#. the initiating instance compiles a combined status report from all the status reports sent by the individual several remote instances. Remote Mode an assembly language directed to a microprocessor resident on a computer. When all remote instances are ?nished. This Way. the local selection then alloWs the user to select a subset of applications from the installer stub 202 Without visiting the Website When the stub 202 is run. named pipes. the above described method of deleting shortcuts can be employed. The main program 204 shoWs a selection Win single functional module. PASCAL. The initiating instance may use multiple threads of execution to serve multiple remote instances at the same time. at the direction of the bootstrap component. select Which softWare applications from the larger set (repre sented by the keys in the stub 202) the user actually Wants to install/update or to audit. a PROM. [0078] Once a remote instance has ?nished its task. at the computer: a bootstrap component comprising a key corresponding to the ?rst softWare application. at Server 130 of FIG. macro. C++. com puter-readable program means such as a ?oppy disk. but not limited to.g. C. the program or programs may be Written in any one of a number of high-level languages. or CD-ROM. The service then connects to the initiating computer using a communication mechanism. the user does not have to frequently visit the Website because he/ she can select any available soft Ware applications the user Wishes to install/update at that time from the selection WindoW or via the “/ select” command line sWitch. If the setup program does not expose such func tionality. If no credentials are speci?ed then the installation system users the credentials of the current user account. the remote instance sends a status report back to the initiating instance..

computer. and retrieving a program corresponding to the URL expres ?gured to perform the operations of: receiving an identi?cation of a ?rst softWare application component to be installed on the one or more client sion. the ?rst softWare application component. The method of claim 1. 3. at the direction of the main program operating based on the softWare installation instructions and the identi?ed version. Wherein the algorithm selects the one of the plurality of con?gurations based on one or more softWare installation instructions for installing the softWare application component on the one or more client computers. sending. The method of claim 3. softWare installation instructions for installing the soft Ware application component on the client computer. and identifying. The method of claim 1. and installing on the computer. machine processor architecture. The method of claim 1. if the ?rst softWare application component is installed on the com states associated With the ?rst softWare application compo nent With the tree representation of user interface elements. The method of claim 2. further comprising sending identi?ed erroneous user interface states to a server for inspection. operating system language. and for each traversed program. further comprising selecting one of the plurality of con?gurations based on an algorithm executed by the main program. puter. a main program con?gured to identify a version of the comprises primitives to send HTTP requests and manipulate a response. 10. service pacts. The method of claim 6. if the ?rst soft Ware application component is installed on the client 5. and command line parameters. 12. and the ?rst softWare application component. A method for providing installation softWare to a com application component. retrieving URL expression from the con?guration infor mation. the method comprising: receiving at a computer server an identi?cation of a ?rst softWare application component to be installed on a 4. and at the direction of the main program operating based on the softWare installation instructions. * * * * * . the ?rst softWare 13. by the computer server: a bootstrap component comprising a key corresponding to the ?rst softWare application component. 8. further comprising. A system for installing softWare on a computer. executing instructions including primitives to access and manipulate data of the version of the software application component installed on the computer. 14. puter. tions comprise a plurality of con?gurations for the applica tion component. The method of claim 1. The method of claim 1. Wherein the softWare installation instructions comprise a Uniform Resource Locator (URL). and 6. further comprising: traversing each of a plurality of programs to be installed using the main program. and storing the program in temporary ?le. if the ?rst softWare application component is installed on the one or more client computers. The method of claim 12.US 2012/0246630 A1 Sep. at the computer by the main program a version of operating system version. a main program con?gured to identify a version of the embedding o?lline installation instructions and the tempo rary ?le in the copy of the main program. 2012 software installation instructions for installing the soft Ware application component on the computer. Wherein the URL expression client computer. The method of claim 8. and computers. the ?rst soft Ware application component. and one or more computer servers. further comprising identifying erroneous user interface states by matching user interface of the ?rst softWare application component. and sending: a bootstrap component comprising a key correspond ing to the ?rst softWare application. the system comprising: one or more client computers. The method of claim 11. ?rst softWare application component. The method of claim 9. 7. the computer servers con retrieving con?guration information. 11. further comprising: creating a copy of the main program. Wherein the URL is a URL expression comprising instructions to retrieve data from other URLs. further comprising creating a tree representation of user interface elements. Wherein the installation instruc ?rst softWare application component. 2. 9. 27. 15.