This description relates to installing one or more software products on a remote device.
When a user desires to install a software application or software application updates on a computer, the process typically involves a long series of prompts to which the user must respond in order to complete the installation process. Some of these steps are driven by the need for security and authorization that typically need to be addressed with each software installation request. Such issues may require action by a systems administrator or other high level security agent. Installed software applications may require maintenance in the form of software updates in order to provide additional features, to fix bugs, to increase robustness, to block security holes, or to address other issues. Online downloads of these updates, as well as the download of software applications generally have grown in popularity. Users often employ a web browser installed on their computers to access the sources of software applications and download these software applications.
Systems and methods can be implemented to automatically install software products while ensuring authorized installation of the software product.
In one general aspect, a request to install a software product on a device is received. Based on the request, the software product and the source of the software product are identified. A message including data identifying the software product and the source of the software product is transmitted to a remote update device. In response to the message, an authorization message is received from the remote update device indicating whether the source of the software product is authorized to provide the software product. If the authorization message indicates that the source of the software product is authorized to provide the software product, the software product is automatically installed on the device.
Implementations can include one or more of the following features. An error message can be transmitted to the source of the software product if the authorization message indicates that the source of the software product is not authorized to provide the software product. The error message can indicate that the installation of the software product failed. The request to install a software product can comprise installation instructions. Alternate installation instructions for installing a software product on a device may be received from the source of the request to install a software product in response to the error message. The alternate installation instructions can include displaying at least one prompt to a user and receiving at least one user selection in response to the user prompt.
The software product is automatically installed in accordance with the installation instructions. A notification message is transmitted to a source of the installation instructions indicating that an installation assistant plug-in is installed on the device prior to receiving the request to install the software product. The software product can be an update of software already installed on the device. The software product is installed on the device by an installation assistant module. A software license update message is received from the remote update device, indicating that an updated end user license agreement is needed prior to installation of the software product, and a user acceptance of the updated end user license agreement may be received prior to installing the software product. An authorization to install the software product can be received from the user through a web browser on the device.
Received installation instructions are processed to produce a processed installation instruction set. The received installation instructions received through a browser application to a module separate from the browser application are detected. The received installation instructions are processed to install the software product. Permission is received from a user through a user interface to install a software product.
In another general aspect there is at least one client device. A remote application server is adapted to transmit installation instructions for installation of the software product to the at least one client device and further adapted to transmit software product data to the at least one client device. At least one other remote application server is responsible for transmitting software product data and comprises a remote download server. At least one update server is adapted to receive an authorization query from the at least one client device, process the authorization query, and transmit an authorization message to the at least one client device.
Implementations may include one or more of the following features. The remote download server is distinct from the remote application server responsible for transmitting the installation instructions. At least one update server is adapted to process the authorization query to determine whether the remote download server is authorized to provide the software product to the client device. At least one update server is adapted to transmit an authorization message to the at least one client device indicating that the remote download server is authorized to provide the software product to the at least one client device. At least one update server is adapted to transmit an authorization message to the at least one client device indicating that the remote download server is authorized to provide the software product to the at least one client device.
At least one remote application server can be a web server. At least one client device comprises an installation assistant module, wherein the installation assistant module is adapted to install the software product on the at least one client device. At least one client device comprises an installation assistant plug-in, wherein the installation assistant plug-in is adapted to receive and process the installation instructions to produce a processed installation instruction set. The installation assistant module is adapted to receive and process the processed installation instruction set. At least one of the installation assistant module or the installation assistant plug-in is adapted to operate with a web browser installed on the at least one client device. At least one client device comprises a user authorization module, wherein the user authorization module is adapted to receive permission from a user to install the software product on the at least one client device.
In another general aspect, an authentication query is received from a client device. The authentication query is sent from the client device in response to an installation request received by the client device from a remote download device and identifies an installation request and a source of the installation request. The authentication query is processed to determine whether the remote download device is authorized to provide a software product identified in the installation request to the client device. An authorization status message is transmitted to the client device, indicating whether the remote download device is authorized to provide the software product to the client device.
Implementations may include one or more of the following features. Installation request identification data is interpreted to identify at least one of the software product or the source of the software product. The source of the software product can be a web server distinct from the remote download device. A database is consulted for an indication that the source of the software product is authorized to provide at least one application file to the client device for use in installing the software product on the client device. The authentication query can be installation instructions corresponding to the software product, wherein at least one of the software product or the source of the software product can be identified from the installation instructions. It can be determined whether the client device is authorized to execute the installation instructions. A network address is referenced corresponding to the source of the software product. A software license update associated with the software product is identified and transmitted to the client device. The source of at least one installation file corresponding to the software product is identified from the authentication query. The software product is identified from the authentication query. A list of authorized installation file sources is consulted for the identification of the source of at least one installation file corresponding to the software product. An authorization status message is generated indicating that the remote application device is authorized to provide the software product to the client device if the remote application device is identified on the list of authorized application devices. The remote application device is identified. A received installation request is analyzed. It can be determined whether the remote application device is authorized to provide the received installation request to the client device. A database is consulted for the identification of the software product and verify that the remote application device is authorized to provide a software product corresponding to the received installation request.
Like reference symbols in the various drawings indicate like elements.
As shown in
In some implementations, an installation assistant 140 installed and running on a device 105 may consist of three major parts: (1) a runtime component which may handle the core update and install services; (2) a web browser control (e,g., ActiveX for Internet Explorer) which may allow web pages and web-based applications to interface with the installation assistant 140; and (3) a graphical user interface layer which may provide progress and feedback to the user during installation, updates, or any other services provided by the installation assistant 140.
The installation assistant 140 may provide installation of software products by executing binary installation instructions passed to it. The installation instructions may be passed and received through a variety of sources. For example, the instructions may be delivered to the device via a portable data memory device, such as a thumbdrive, portable hard drive, CD, DVD, or other memory means known in the art. The instructions might also be provided over a closed, private network from another computer or server connected to the network, or provided from a server or other computing device over the internet or other large scale computer network. In connection with installation instructions received by the installation assistant 140, the installation assistant may then receive and install binary files corresponding to the software product on the device 105. Installation instructions, or other binary files corresponding to the software product, may comprise, for example, a software-product-specific installation stub. The installation assistant 140 may then invoke the installation stub instrumentality to complete the installation of the related software product. As another example, installation instructions could point the installation assistant 140 to the URL of a remote download server 135, from which binary files relating to the installation of a software product are to be downloaded and then installed on the client device 105.
In one example, the plug-in 145 may be embedded in the client device's 105 web browser 142. The plug-in 145 may be designed to route messages related to the installation of software products to the installation assistant 140. The messages may be received by the device via TCP/IP communications from remote web servers 120, 125, 130, 135. Here, the plug-in 145 may be capable of accepting arbitrary messages from arbitrary sources accessed through the web browser. In some examples, the plug-in 145 serves as a router for messages intended to be handled by the installation assistant 140. To accomplish this the plug-in 145 may, for example, store and execute logic instructions for recognizing messages, such as installation instructions, that should be relayed to the installation assistant 140. Alternatively, the routing functionality of the plug-in may be simplified in other implementations. For example, in order for a web server to send a message or specific type of message to the installation assistant 140, the web server 120 may be required to specifically address the message for routing by the plug-in 145. This may be accomplished by web servers 120, 125, 130, 135, accessed by the web browser, querying the device 105 regarding the installation of a particular installation assistant 140 or plug-in 145 on the device 105. If the web server 120 receives a positive response (i.e., indicating that a particular installation assistant 140 and/or plug-in 145 is installed on the device 105), the web server 120 could then send data intended for the plug-in 145, such as by employing a message tag, certificate, or other data recognizable to the plug-in 145 and signaling that the message is to be processed by the plug-in 145 and/or the installation assistant 140. The plug-in 145 could process these plug-in-supported-messages, for example, to invoke the installation assistant 140, route subsequent messages to the installation assistant 140 or the supported message itself to the installation assistant 140, or even perform certain authentication and authorization functions to certify the trustworthiness of the source of messages received by the device 105.
In some implementations, the plug-in 145 is designed to accept arbitrary messages from arbitrary sources, for example sets of installation instructions sent by arbitrary web servers 120, 125, 130, 135 offering the download of particular software products. This may be facilitated by providing the plug-in 145 with a fixed instruction set or vocabulary. Remote application and download devices 120, 125, 130, 135 would be responsible for formatting data sent to or through the plug-in so as to comport with this predefined plug-in vocabulary. If the arbitrary message sent to the plug-in 145 does not present data compatible with the plug-in vocabulary, the plug-in 145 could pass the message to a second component, such as a web browser 142 operating in concert with the plug-in 145, the installation assistant 140, or some other application on the device 105 capable of responsively processing the message. On the other hand, if the message employs plug-in vocabulary, enabling the plug-in to process the message, the plug-in would then be alerted that it is to handle further processing of this particular message.
The update device 150 is capable of processing queries and other messages received from the client device 105 related to the installation of software products on the client device 105. For example, the update device 150 may receive a query from the client device 105 regarding the trustworthiness or accuracy of certain installation instructions received by the client device 105. As an example, installation instructions received by the device 105 may direct the installation assistant 140 to send a request to a certain URL associated with a web server 130 in order to download data files required for the installation of a certain software product on the device 105. Prior to sending this request and thereby potentially exposing the device 105 to a malicious site associated with the URL, the device 105 sends a query to the update device 150. The query may specifically request the update device to authenticate the URL. In other implementations, the query may simply consist of the device 105 forwarding verbatim installation instructions, including the URL pointer in question, for processing by the update device 150.
The update device may develop a response to the query by, for example, consulting a whitelist maintained by the update device 150 to see if the software product being offered for installation in conjunction with the installation instructions matches a URL stored as a trusted source for files associated with the installation of the software product. Alternatively or in addition, the update device could consult a blacklist, storing a list of forbidden sources and software products, or other databases capable of providing the data necessary to construct a responsive query reply message. A processor module 160 and a storage module 165 may be provided on the update device 150, whereby the storage module 165 may manage storage and maintenance of the whitelist or other databases. The processor module 160 could be responsible for processing the data comprising the query, calling information from the storage module 165, and building a response message destined for the client device 105. The processor module 160 may also execute logic instructions allowing the processor module 160 to route query responses generated by the update device 150 to the originating client device 105. After processing the query, the update device then responds to the client device 105, allowing the update device 150 to determine whether or not to proceed with the installation of the software product. In addition to validating the source of the installation instructions, the update device 150 may also parse the installation instructions and validate that the installation instructions have been previously approved, correspond to instructions expected from the particular source, or are otherwise considered to be safe.
In this particular example 200, installation instructions are sent 205 from one or more application servers to a client device and then received by the client device 105. The installation instructions are received 210 by an installation assistant plug-in installed on the device and linked to a browser application on the device. The plug-in routes 215 the instructions to an installation assistant module installed on the device that is responsible for installing one or more software products associated with received installation instructions. The plug-in may process the installation instructions prior to routing them to the installation assistant module, so that, for example, only a portion of the installation instructions are forwarded 220 to the installation assistant module. The plug-in, in some implementations, may send additional instructions to the installation assistant. For example, the additional instructions may indicate that certain authentication queries need to be made regarding the installation instructions before the installation instructions are executed by the installation assistant.
A query is sent 225 from the device to an update device to authenticate the received installation instructions. The update device then receives 230 the query and processes 235 it. After processing the query, the update device sends 240 a query response message to the client device. The query response, responsive to the subject matter of the query sent at 225, may indicate that installation instructions, or certain installation steps, are trustworthy and authorized for execution by the client device. The query sent at 225 and the query response returned at 240 may alternatively pertain to any query related to the installation of a software product on a client device. For example, the query may relate to checking whether installation of the software product is needed (i.e. whether the software product or an equivalent is already installed on the device), checking to see if an end-user license agreement for the software product needs to be accepted by a user of the device, and/or suggesting installation instruction modifications or alternate installation instructions for a given software product.
Once the query response is received 245 by the client device, the client device then executes 250 the installation instructions. Execution of the installation instructions 250 may proceed differently than originally set forth in the installation instructions sent at 205, if, for example, the query response resulted in modification or replacement of the installation instructions. In fact, if a query response indicates, for example, that the installation instructions received by the client device at 210 are not authentic or instruct the client device to access an unauthorized URL, the client device may respond to receipt of such a query response by refusing to execute the installation instructions received at 210.
In some implementations, execution of the installation instructions 250 by the client device proceed by requesting 255 files from an application data source, in this example, an outside web server. The outside web server may be distinct from the application server that sent the installation instructions at 205. The application data source receives 260 the request and transmits 265 the files to the client device. After receiving these data files, the client device uses the received data files to complete installation of the software product.
Upon identifying the software product and the source of the software product, the device transmits 315 a message communicating the identity of the software product and the source of the software product to a remote update device. This message could be generated and transmitted as an XML, HTML, or other formatted communication. The message could contain the explicit name of the software product and source, could name a network address or URL affiliated with the software product and source, forward installation instructions received with the request to install the software product, or simply forward the entire request to install to the remote update server. In any event, data comprising the message is capable of being processed by the remote update server to identify the software product and the source of the software product. In response to the transmission of this message, an authorization message is received 320 from the remote update device. The contents of this message communicate whether the source of the software product is authorized to provide the software product. If the message indicates that the source of the software product is authorized to provide the software product, the software product is then automatically installed 325 on the device.
Receipt of the authorization message 320 may, in some implementations, result in the installing 325 of the software product on the device if the authorization message, in fact, indicates that the source of the software product is authorized to provide the software product. Installation of the software product, in some implementations may proceed automatically, without further approval or intervention by the user of the device, upon receipt of the authorization message 320.
Automatically installing a software product allows users to streamline the process for adding software programs to their devices as well as update software applications already installed on their devices by omitting several installation steps, such as required prompts to the user and inputs from the user of the device. While prompts and inputs involving the user slow the installation process, they do allow the user to manage what is being installed on their devices and how. Automating this process, while streamlining the user experience, threatens to allow malicious software products to be unwittingly installed on the user's device. Among the benefits of the process 300, when employed with an automatic installation process, such as described generally above, the process 300 allows for the device to check the authenticity and security of software products being offered for installation on the device, and guard against the installation of unauthorized or otherwise malicious software products on the device. Such implementations would allow for the secure, automatic installation of software products without input from the user.
Alternatively, automatic installation of the software products could also take place after receiving an initial user authorization to install a software product. The user authorization could be received through a web browser, for example, by the user selecting a download program link on a website corresponding to the source of the software product (e.g., thereby implementing a one-click installation process). Other implementations may include a pop-up dialogue box asking the user to authorize installation of a certain software product before proceeding with the automatic installation of the software product.
If the authorization message received at 320 indicates that an installation request, installation instructions, software product, or a software product source are not authorized, the authorization message could be processed so as to deny automatic installation of the software product. In some implementations the authorization message could be processed so as to generate and transmit an error message to the source of the installation instructions or installation request. Additionally, a prompt could be displayed to a user indicating that automatic installation of the software product failed. Were automatic installation of the software product to fail, the user might then be offered installation of the software product through an alternative installation method. For example, the alternative installation method might require one or more user selections, indicating user authorization of the installation, acceptance of certain installation conditions, designating a memory address for installation of the software product, and/or setting certain user profiles and other parameters and preferences related to installation of the software product.
Upon processing the authorization query 420, an authorization status message is generated 430 and then transmitted 440 to the client device indicating the results of the update device's processing of the authorization query. For example, the status message may indicate that the software product source is authorized to provide a certain software product. The status message may indicate, in the alternative, that installation of the software product, according to the installation request, is unauthorized. The status message may indicate additional data relating to the installation of the software program, including whether an end-user license agreement associated with the software product needs to be accepted or updated. In some embodiments, this additional data may be unsolicited and automatically included in the status message returned to the client device.
Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions tangibly stored on a computer-readable storage device for execution by, or to control the operation of, data processing apparatus. In addition, the one or more computer program products can be tangibly encoded in a propagated signal, which is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a computer. The computer-readable storage device can be a machine-readable storage device, a machine-readable storage substrate, a memory device, or a combination of one or more of them. The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, or a combination of one or more of them. In addition, the apparatus can employ various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described is this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many implementation details, these should not be construed as limitations on the scope of the invention or of what may be claimed, but rather as descriptions of features specific to particular implementations of the invention. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular implementations of the invention have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.