Fault tolerant remote application installation
By queuing installation requests in the computing system and installing application stubs when the computing device is back online or has sufficient storage, the system addresses installation failures caused by the computing device being offline or lacking storage, improving application installation success rates and reducing user interaction and battery consumption.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2024-10-03
- Publication Date
- 2026-05-05
AI Technical Summary
In the prior art, there are problems with application installation failures caused by offline or insufficient storage space on computing devices, especially mobile computing devices with intermittent internet connectivity and limited storage space, which cannot effectively install applications.
The problems of offline operation and insufficient storage space are solved by queuing installation requests in the computing system and downloading them when the computing device returns to online status, or installing application stubs when the computing device has sufficient storage space, and retrying application downloads when the Internet connection is stable.
It reduces application installation failures due to offline computing devices or insufficient storage space, improves the success rate of application installation, reduces user interaction and battery consumption, and enhances the security of remote management.
Smart Images

Figure CN121986322A_ABST
Abstract
Description
[0001] This application claims the benefit of U.S. Patent Application No. 18 / 482,690, filed October 6, 2023, the entire contents of which are incorporated herein by reference. Background Technology
[0002] Users can use multiple different computing devices logged into the same user account. For example, a user can use a smartphone, smartwatch, and / or tablet computer, all logged into the same user account. Summary of the Invention
[0003] Generally speaking, various aspects of the technology described in this disclosure relate to fault-tolerant application installation at a remote computing device. A user can use a computing device logged into a user account to control the installation of applications at other computing devices also logged into the same user account. For example, a first computing device logged into a user account can send a request to a second computing device logged into the same user account to install an application, and in response, the second computing device can download and install the application.
[0004] In some examples, a first computing device may send a request to a second computing device to install an application via a computing system. The first computing device may send the request to the computing system, and the computing system may forward the request to the second computing device. If the computing system is unable to forward the request to the second computing device (e.g., when the second computing device is offline), the computing system may queue the request and may send a queuing request to the second computing device in response to a query received from the second computing device for a request to install an application that is queued at the computing system.
[0005] The second computing device can determine whether it has sufficient available storage space to install the application in response to a request from the first computing device to install the application. If the second computing device determines that it has sufficient available storage space to install the application, it can download the application from the computing system and install the downloaded application. If the second computing device determines that it does not have sufficient available storage space to install the application, it can download the stub associated with the application from the computing system and install the downloaded stub associated with the application.
[0006] Furthermore, the second computing device may attempt to download the application from the computing system in response to receiving a request from the first computing device to install the application. If the second computing device fails to download the application, it may retry downloading the application at a later time.
[0007] The technology disclosed herein can solve problems caused by computing devices that are not always online and connected to the Internet by enabling the computing system to queue requests destined for the offline computing device when the receiving computing device is offline, allowing the receiving computing device to retrieve the request from the computing system when the computing device returns to online. The technology disclosed herein can also solve problems caused by computing devices that may have intermittent Internet connectivity issues by enabling computing devices suffering from such connectivity problems to retry downloading applications when the computing device has a more reliable Internet connection. Furthermore, the technology disclosed herein can reduce application installation failures due to insufficient storage space, which addresses a common problem encountered by mobile computing devices with limited storage space.
[0008] In some aspects, the technology described herein relates to a method comprising: receiving, by one or more processors of a first computing device, a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, downloading a stub associated with the application from a computing system by the one or more processors; and installing the stub associated with the application by the first computing device.
[0009] In some aspects, the technology described herein relates to a computing device comprising: a memory storing instructions; and one or more processors executing the instructions to: receive a request to install an application on the computing device, wherein the request is sent by a second computing device logged into the same user account as the computing device; in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system; and install the stub associated with the application.
[0010] In some aspects, the technology described herein relates to a computer-readable storage medium storing instructions that, when executed, cause one or more processors of a first computing device to: receive a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system; and install the stub associated with the application.
[0011] In some respects, the technology described herein relates to a computer program product comprising instructions which, when executed, cause one or more processors of a first computing device to: receive a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system; and install the stub associated with the application.
[0012] In some aspects, the technology described herein relates to an apparatus comprising: means for receiving a request to install an application on a first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; means for downloading a stub associated with the application from a computing system in response to receiving the request and based on the first computing device not having sufficient available storage space to install the application; and means for installing the stub associated with the application.
[0013] In some aspects, the technology described herein relates to a method comprising: receiving a request to download an application from a computing device by one or more processors of a computing system; and in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, sending a stub associated with the application to the computing device for installation on the computing device.
[0014] In some aspects, the technology described herein relates to a computing system comprising: a memory storing instructions; and one or more processors executing the instructions to: receive a request to download an application from a computing device; and, in response to receiving the request and based on the computing device not having sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0015] In some respects, the techniques described herein relate to a computer-readable storage medium that stores instructions, when executed, causing one or more processors of a computing system to: receive a request from a computing device to download an application; and, in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0016] In some respects, the technology described herein relates to a computer program product comprising instructions which, when executed by one or more processors of a computing device, cause one or more processors to: receive a request from the computing device to download an application; and, in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0017] In some aspects, the technology described herein relates to an apparatus comprising: a component for receiving a request to download an application from a computing device; and a component for sending a stub associated with the application to the computing device for installation on the computing device in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application.
[0018] Details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of this disclosure will be apparent from the description and drawings, as well as from the claims. Attached Figure Description
[0019] Figure 1 This is a conceptual diagram illustrating an example environment for performing fault-tolerant remote application installation according to one or more aspects of this disclosure.
[0020] Figure 2 This is a block diagram illustrating an example computing device according to one or more aspects of this disclosure.
[0021] Figure 3 This is a block diagram illustrating an example computing system according to one or more aspects of this disclosure.
[0022] Figure 4 This is a flowchart illustrating a fault-tolerant forwarding process for an application installation request based on one or more technologies disclosed herein.
[0023] Figure 5 This is a flowchart illustrating a fault-tolerant installation process for an application based on one or more techniques according to this disclosure.
[0024] Figure 6 This is a flowchart illustrating a fault-tolerant download process for an application based on one or more techniques according to this disclosure.
[0025] Figure 7 This is a flowchart illustrating a fault-tolerant installation process for an application based on one or more techniques according to this disclosure.
[0026] Figure 8 This is a flowchart illustrating an example operating mode for performing fault-tolerant application installation on a computing device according to one or more techniques of this disclosure.
[0027] Figure 9 This is a flowchart illustrating an example operating mode for performing fault-tolerant application installation on a computing system according to one or more techniques of this disclosure. Detailed Implementation
[0028] Figure 1 This is a conceptual diagram illustrating an example environment for performing fault-tolerant remote application installation according to one or more aspects of this disclosure. Figure 1 In one example, environment 100 may include computing device 102, computing device 120, and computing system 150 communicating via network 130.
[0029] The computing system 150 can be any suitable remote computing system capable of sending and receiving information via the network 130, such as one or more desktop computers, laptop computers, mainframes, servers, cloud computing systems, virtual machines, etc. In some examples, the computing system 150 can represent a cloud computing system that provides one or more services via the network 130. That is, in some examples, the computing system 150 can be a distributed computing system. One or more computing devices (such as computing device 102 and / or computing device 120) can access services provided by the cloud by communicating with the computing system 150 via the network 130. Although described herein as being performed at least in part by the computing system 150, various aspects of the techniques of this disclosure can be performed by one or more other devices (such as computing device 102 or computing device 120). That is, in some examples, computing device 102 and / or computing device 120 can be operable to perform one or more aspects of the techniques of this disclosure individually or in combination.
[0030] Computing system 150 may include application management module 132. Application management module 132 may perform the operations described herein using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and executing on or at computing system 150 or one or more other remote computing devices. In some examples, application management module 132 may be implemented as hardware, software, and / or a combination of hardware and software. Computing system 150 may utilize one or more processors to execute application management module 132. Computing system 150 may execute application management module 132 as a virtual machine executing on the underlying hardware, or execute the application management module within a virtual machine.
[0031] The application management module 132 can be implemented in various ways. For example, the application management module 132 can be implemented as part of the operating system of the computing system 150. Other examples of the computing system 150 implementing the techniques of this disclosure may include Figure 1 Additional components not shown.
[0032] The computing system 150 may also include an application store 162. The application store 162 may be a data repository for applications that can be downloaded from the computing system 150.
[0033] The computing system 150 can act as an application distribution platform for computing devices (such as computing devices 102 and 120), such as an app marketplace. For example, the computing system 150 can store a repository of applications that can be installed on the computing device, and the computing device can communicate with the computing system 150 to download and install applications and download and install application updates.
[0034] Network 130 can be any suitable network that enables communication between computing device 102, computing device 120, and / or computing system 150. Network 130 may include wide area networks such as the Internet, local area networks (LANs), personal area networks (PANs) (e.g., Bluetooth®), enterprise networks, wireless networks, cellular networks, telephone networks, metropolitan area networks (e.g., WiFi™, WAN, WiMAX, etc.), one or more other types of networks, or a combination of two or more different types of networks (e.g., a combination of cellular networks and the Internet).
[0035] Computing device 102 and computing device 120 may include, but are not limited to, portable or mobile devices such as mobile phones (including smartphones), laptop computers, tablet computers, wearable computing devices (such as smartwatches or computerized glasses (including virtual reality headsets, augmented reality headsets, etc.)), smart TV platforms (such as over-the-head (OTT) devices), cameras, computerized electronics, vehicle head units, etc. In some examples, computing device 102 may be a smartphone or tablet computer, while computing device 120 may be a wearable computing device, a smart TV platform, or a vehicle head unit.
[0036] Computing device 102 may include a remote management module 108. The remote management module 108 may perform the operations described herein using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and executing on the computing device 102. In some examples, the remote management module 108 may be implemented as hardware, software, and / or a combination of hardware and software. The computing device 102 may utilize one or more processors to execute the remote management module 108. The remote management module 108 may be implemented in various ways. For example, the remote management module 108 may be implemented as a downloadable or pre-installed application or "app". In another example, the remote management module 108 may be implemented as part of the operating system of the computing device 102. Other examples of computing device 102 implementing the techniques of this disclosure may include… Figure 1 Additional components not shown.
[0037] Computing device 120 may include user interface component 104 (“UIC 104”), user interface module 106 (“UI module 106”), and application installation module 124. UI module 106 and application installation module 124 may perform the operations described herein using software, hardware, firmware, or a mixture of hardware, software, and firmware residing in and executing on or at computing device 120 or one or more other remote computing devices. In some examples, UI module 106 and application installation module 124 may be implemented as hardware, software, and / or a combination of hardware and software. Computing device 120 may utilize one or more processors to execute UI module 106 and application installation module 124. UI module 106 and application installation module 124 may be implemented in various ways. For example, either UI module 106 or application installation module 124 may be implemented as a downloadable or pre-installable application or “app”. In another example, either UI module 106 or application installation module 124 may be implemented as part of the operating system of computing device 120. Other examples of the computing device 120 that implements the technology of this disclosure may include Figure 1 Additional components not shown.
[0038] The UIC 104 of the computing device 120 can be used as both an input device and an output device. For example, the UIC 104 can be used as an input device using a resistive touchscreen, a surface acoustic wave touchscreen, a capacitive touchscreen, a projected capacitive touchscreen, a pressure-sensitive screen, an acoustic pulse recognition touchscreen, or another presence-sensitive screen technology. The UIC 104 can be used as an output device using any one or more of the following: a liquid crystal display (LCD), a dot matrix display, a light-emitting diode (LED) display, a micro LED, an organic light-emitting diode (OLED) display, an e-ink screen, or a similar monochrome or color display capable of outputting visible information to the user of the computing device 120.
[0039] In some examples, UIC 104 may include a presence-sensitive screen that receives tactile user input from a user of computing device 120. UIC 104 can receive tactile user input by detecting one or more taps and / or gestures from a user of computing device 120 (e.g., a user touching or pointing at one or more locations on UIC 104 with a finger or stylus). The presence-sensitive screen of UIC 104 can present output to the user. UIC 104 can present the output as a user interface that can be associated with functionality provided by computing device 120. For example, UIC 104 can present various functions and applications performed on computing device 120, such as electronic messaging applications, messaging applications, map applications, etc.
[0040] UI module 106 can interpret input detected at UIC 104 (e.g., when a user provides one or more gestures at the location of the display user interface on UIC 104). UI module 106 can relay information about the input detected at UIC 104 to one or more associated platforms, operating systems, applications, and / or services executing at computing device 120, causing computing device 120 to perform functions. UI module 106 can also receive information and instructions from one or more associated platforms, operating systems, applications, and / or services executing at computing device 120 (e.g., application installation module 124) for generating a graphical user interface (GUI). Furthermore, UI module 106 can act as an intermediary between one or more associated platforms, operating systems, applications, and / or services executing at computing device 120 and various output devices of computing device 120 (e.g., speakers, LED indicators, vibrators, etc.) to utilize computing device 120 to generate outputs (e.g., graphical, audible, tactile, etc.).
[0041] A single user can own and / or use multiple different computing devices logged into the same user account associated with that user. This user account can serve as a centralized account for the computing devices used by the user, enabling each device to link to the user and access various services and products, synchronize data, purchase apps and content, etc. For example, applications installed on the computing devices logged into the user account can also be associated with that account, allowing the user to log into the new computing device when setting up a new one, automatically downloading the applications associated with that account to the new device.
[0042] It should be noted that the user accounts described throughout this disclosure are not superuser or administrator accounts used by administrators within an enterprise to manage computing devices used by various different users within the enterprise. Rather, the user accounts described throughout this disclosure are centralized accounts used by end users of multiple computing devices as end users, which are used to link computing devices to end users and enable users' computing devices to access various services and products, synchronize data, purchase apps and content, etc.
[0043] A user who is logged into multiple computing devices (such as computing device 102 and computing device 120) associated with the same user account can use one of the computing devices used by the user to manage other computing devices used by the user. The user can select the computing device to manage other computing devices used by the user based on factors such as ease of interaction with the computing device. For example, if the user uses a smartphone, a smartwatch, and an OTT device, the user can select the smartphone as the computing device to manage the smartwatch and OTT device used by the user.
[0044] exist Figure 1 In the example, a user can use both computing device 102 and computing device 120, and both computing device 102 and computing device 120 are logged into the same user account associated with the user. The user can use computing device 102 to manage computing device 120, such as managing the installation of applications on computing device 120. For example, a user can interact with computing device 102 to remotely install a specific application on computing device 120.
[0045] For example, a user can interact with computing device 102 to select application 112 to be installed on computing device 120, and cause computing device 102 to execute remote management module 108 to send a request to computing device 120 to install application 112. The request may include instructions for actions to be performed by computing device 120, such as the installation of application 112. The request may also include metadata indicating the application 112 to be installed by computing device 120, such as the package name of application 112.
[0046] Application 112 may be software that includes functionality for performing various operations on computing device 120. For example, application 112 may include a web browser, email application, text messaging application, instant messaging application, weather application, video conferencing application, social networking application, stock market application, emergency alarm application, sports application, office productivity application, multimedia player, etc.
[0047] The request does not include the package of application 112 to be installed. That is, the request does not include the executable code of application 112. Instead, the request generated by the remote management module 108 is a control signal instructing the computing device 120 to install application 112. Therefore, in order to perform the requested installation of application 112, the computing device 120 can communicate with the computing system 150 via the network 130 to download application 112.
[0048] In some examples, computing device 102 may send a request to computing device 120 via network 130. For example, computing device 102 may send a request to computing system 150 via network 130, and computing system 150 may then forward the request to computing device 120 via network 130. In some examples, computing device 102 may establish a short-range wireless connection 118 (also referred to herein as a direct connection) with computing device 120, and may send requests to computing device 120 via short-range wireless connection 118. Examples of short-range wireless connections 118 include Bluetooth® connection, Bluetooth® Low Energy (BLE) connection, Wi-Fi® Direct connection, Ultra Wideband (UWB) connection, Near Field Communication (NFC) connection, Personal Area Network (PAN), etc.
[0049] The computing device 120 can receive a request to install an application, such as a request to install application 112, sent by the computing device 102. The computing device 120 can execute the application installation module 124 to attempt to install application 112 on the computing device 120 in response to receiving the request to install application 112. The computing device 120 can attempt to install application 112 by downloading the requested application 112 from the computing system 150 and by installing application 112 on the computing device 120.
[0050] For example, the application installation module 124 of computing device 120 may send a request to computing system 150 to download application 112 in response to receiving a request to install application 112. The application management module 132 of computing system 150 may receive the request to download application 112, and in response, may retrieve application 112 from application storage 162 and send application 112 to computing device 120. The application installation module 124 may install application 112 on computing device 120 in response to downloading application 112 from computing system 150.
[0051] However, remote installation of applications can have many different points of failure. For example, the computing device may not have enough available storage space to install the application. Furthermore, if the computing device is offline for an extended period, it may be unable to receive requests to install the application sent to it. Additionally, computing devices with connectivity issues may have problems successfully downloading the application intended for installation.
[0052] According to aspects of this disclosure, in order to reduce the failure of remote application installation due to prolonged periods of offline operation of the computing device, if the computing system 150 is unable to deliver the request to the intended recipient of the request, the computing system 150 may queue the application installation requests received by the computing system 150. Figure 1 In the example, computing device 102 can send a request to computing device 120 to install application 112 by sending a request to computing system 150 via network 130. Application management module 132 of computing system 150 can attempt to forward the request to computing device 120 via network 130 in response to computing system 150 receiving the request from computing device 102.
[0053] Application management module 132 can determine whether computing system 150 can successfully forward requests to computing device 120. If application management module 132 determines that computing system 150 cannot successfully forward requests to computing device 120 (such as if computing device 120 is offline (e.g., not connected to network 130)), application management module 132 can queue requests at computing system 150.
[0054] The application installation module 124 of computing device 120 can query computing system 150 for requests to install applications on computing device 220 that are queued by computing system 150. For example, if computing device 120 is offline, computing device 120 can send a query to computing system 150 via network 130 for requests to install applications on computing device 120 that are queued by computing system 150 after reconnecting to network 130. The application installation module 124 can send any requests to computing device 120 that are queued by computing system 150 for installing applications on computing device 120 in response to receiving a query from computing device 120.
[0055] According to this disclosure, in order to reduce application installation failures due to insufficient available storage space, the computing device receiving the application installation request can determine whether the computing device has sufficient available storage space to install the application. In response to determining that the computing device does not have sufficient available storage space to install the application, the computing device can install a stub associated with the application.
[0056] exist Figure 1In the example, computing device 120 may execute application installation module 124 in response to receiving a request to install application 112, to determine whether computing device 120 has sufficient available storage space to install application 112. Application installation module 124 may determine the amount of available storage space at computing device 120 and the amount of storage space required to install application 112, and may compare the amount of available storage space at computing device 120 with the amount of storage space required to install application 112 to determine whether computing device 120 has sufficient available storage space to install application 112.
[0057] If the application installation module 124 determines that the computing device 120 has sufficient available storage space to install the application 112, then the application installation module 124 can download the application 112 from the computing system 150 and install the application 112 at the computing device 120. If the application installation module 124 determines that the computing device 120 does not have sufficient available storage space to install the application 112, then the application installation module 124 can install the stub 119 associated with the application 112.
[0058] The stub associated with the application can be one or more files, such as applets or other program code, that act as placeholders for the application at the computing device 120. The stub can have a relatively small size, such as less than 100 kilobytes or less than 1 megabyte. Therefore, even if the computing device 120 has very little available storage space, it can have sufficient storage space to install the application-associated stub.
[0059] After the stub 119 associated with application 112 has been installed on computing device 120, application installation module 124 may attempt to download application 112 associated with stub 119 at a later time. In some examples, application installation module 124 may periodically determine whether computing device 120 has sufficient available storage space to install application 112. In response to determining that computing device 120 has sufficient available storage space to install application 112, application installation module 124 may download application 112 from computing system 150 and install application 112 on computing device 120 to replace stub 119.
[0060] In some examples, after the stub 119 associated with application 112 has been installed on the computing device 120, the computing device 120 may present an indication of the stub 119 in the user interface as if application 112 were already installed on the computing device 120, and may enable the user to interact with the computing device 120 to launch the stub 119. For example, after the stub 119 is installed, the computing device 120 may display an application icon associated with the stub 119 on the desktop or home screen displayed by the computing device 120. This application icon may be the same as the application icon of application 112 associated with the stub 119.
[0061] exist Figure 1 In the example, application installation module 124 can send data to UI module 106 causing UIC 104 to display user interface 114, which presents the home screen of computing device 120. The home screen may include application icons 116A-116E associated with applications installed on computing device 120. For example, application icon 116D may be an icon associated with a phone application, and the user can provide user input at UIC 104 to select application icon 116D to launch the phone application.
[0062] When the application installation module 124 downloads the stub 119 associated with application 112 and installs the stub at the computing device 120, the application installation module 124 can update the home screen to include the application icon 116F associated with the stub 119, wherein the application icon 116F may be the same application icon as the application icon of application 112 associated with the stub 119. The user can provide user input at UIC 104 to open or launch the stub 119 associated with the application icon 116F, such as by selecting the application icon 116F, double-clicking the application icon 116F, etc.
[0063] UI module 106 can send an instruction to application installation module 124 to open or launch the stub 119 associated with application icon 116F. Application installation module 124 can, in response to receiving the instruction to open or launch the stub 119 associated with application icon 116F, attempt to download the application 112 associated with stub 119 from computing system 150 and install the application 112 at computing device 120.
[0064] According to this disclosure, in order to reduce application installation failures due to intermittent connectivity issues, a computing device that fails to successfully download an application from the computing system 150 can retry downloading the application from the computing system 150 at a later time. Figure 1In the example, application installation module 124 may attempt to install application 112 on computing device 120 in response to receiving a request to install application 112. Application installation module 124 may send a request to computing system 150 to download application 112.
[0065] If the application installation module 124 fails to download application 112 from computing system 150 (e.g., due to intermittent connectivity between computing device 120 and network 130), the application installation module 124 can detect this temporary failure to download application 112. In response to detecting this temporary failure, the application installation module 124 can schedule a retry to download and install application 112 after a specified period of time (e.g., after 1 hour, after 1 day, etc.). In some examples, the application installation module 124 can periodically retry downloading and installing application 112, such as hourly, daily, etc., until the application installation module 124 is able to successfully download application 112. In this way, the application installation module 124 can overcome temporary failures in downloading applications from computing system 150.
[0066] The technology disclosed herein provides one or more technical advantages. By queuing requests when a computing system is unable to forward requests to install an application to the intended recipient of the request, the technology disclosed herein can reduce the number of times a computing system fails to deliver requests to install an application to the intended recipient of the request. This addresses the internet-centric problem of computing devices that are not always online and connected to the internet by enabling the computing system to queue requests destined for the offline computing device when the receiving computing device is offline, so that the receiving computing device can retrieve the request from the computing system when the computing device returns to online.
[0067] Furthermore, by allowing the computing device to retry downloading the application at a later time if it fails to do so, the computing device can more appropriately handle intermittent connectivity issues that cause temporary failures in downloading applications. This addresses the internet-centric problem of computing devices that may experience intermittent internet connectivity issues by enabling such devices to retry downloading applications when they have a more reliable internet connection.
[0068] Furthermore, by enabling the computing device to determine whether it has sufficient storage space to install an application, and to install a stub associated with the application if the computing device determines that it does not have sufficient storage space to install the application, the technology disclosed herein can reduce application installation failures due to insufficient storage space, which can solve a problem frequently encountered by mobile computing devices with limited storage space. By installing a stub associated with the application, the computing device can be able to install the application at a later point in time when the computing device has sufficient storage space to install the application.
[0069] Using a single computing device to remotely install applications on multiple other computing devices can also reduce the amount of user interaction with these other computing devices. Reducing the amount of user interaction with these other computing devices can reduce the number of processing cycles that these computing devices spend handling user interactions, and can also reduce the battery consumption of these computing devices.
[0070] Furthermore, by enabling a computing device to send application installation requests to other computing devices only if the computing device is logged into the same user account as the other computing device, the technology of this disclosure improves the security of remote management of computing devices. For example, the technology of this disclosure can prevent a computing device from fulfilling application installation requests from unauthorized computing devices that are not logged into the same user account as the computing device.
[0071] Figure 2 This is a block diagram illustrating an example computing device according to one or more aspects of this disclosure. Figure 2 This is just one specific example of computing device 220, and many other examples of computing device 220 may be used in other situations, and may include a subset of the components included in the example computing device 220, or may include... Figure 2 Additional components not shown. The computing device 220 may be... Figure 1 Example of computing device 120.
[0072] like Figure 2 As shown in the example, computing device 220 includes a user interface component 204 (“UIC 204”), one or more processors 240, one or more input devices 242, one or more communication units 244, one or more output devices 246, and one or more storage devices 248. The storage device 248 of computing device 220 also includes an operating system 226, a UI module 206, an application installation module 224, an application 212, and a stub 219. The UI module 206 is... Figure 1 The example of UI module 106 is the application installation module 224. Figure 1 Example of application installation module 124, application 212 is Figure 1 The example of application 112, and stub 219 is Figure 1 Example of stub 119.
[0073] Communication channel 252 can interconnect each of components 204, 240, 242, 244, 246, and 248 for inter-component communication (physically, communicatively, and / or operationally). In some examples, communication channel 252 may include a system bus, a network connection, one or more inter-process communication data structures, or any other component for communicating data between hardware and / or software.
[0074] One or more processors 240 may implement functionality and / or execute instructions within computing device 220. For example, one or more processors 240 on computing device 102 may receive and execute instructions stored in storage device 248 that provide functionality for operating system 226, UI module 206, application installation module 224, application 212, and stub 219. These instructions, executed by one or more processors 240, may cause computing device 220 to store and / or modify information in storage device 248 during program execution. One or more processors 240 may execute instructions for operating system 226, UI module 206, application installation module 224, application 212, and stub 219. That is, operating system 226, UI module 206, application installation module 224, application 212, and stub 219 may be operable by one or more processors 240 to perform the various functions described herein.
[0075] One or more processors 240 may be or include digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), and / or other equivalent integrated or discrete logic circuit systems. One or more input devices 242 of the computing device 220 may be configured to receive input. Examples of inputs are tactile input, audio input, and video input. In one example, the input device 242 of the computing device 220 includes a presence-sensitive display, a touch-sensitive screen, a mouse, a keyboard, a voice response system, a video camera, a microphone, or any other type of device for detecting input from a human or machine.
[0076] One or more output devices 246 of computing device 220 may be configured to generate output. Examples of outputs are haptic output, audio output, and video output. In one example, output devices 246 of computing device 220 include presence-sensitive organic light-emitting diode (OLED) displays, sound cards, video graphics adapter cards, speakers, monitors, presence-sensitive liquid crystal displays (LCDs), or any other type of device for generating output to humans or machines.
[0077] One or more communication units 244 of computing device 220 can communicate with external devices by transmitting and / or receiving data. For example, computing device 220 can use communication units 244 to transmit and / or receive radio signals on a radio network, such as a cellular radio network. In some examples, communication units 244 can transmit and / or receive satellite signals on a satellite network, such as a Global Positioning System (GPS) network. Examples of communication units 244 include network interface cards (e.g., such as Ethernet cards), optical transceivers, radio frequency transceivers, GPS receivers, or any other type of device capable of transmitting and / or receiving information. Other examples of communication units 244 may include Bluetooth®, BLE, UWB, NFC, GPS, 3G, 4G, and Wi-Fi® radios and Universal Serial Bus (USB) controllers found in mobile devices.
[0078] UIC 204 is Figure 1 Example of UIC 104. In some examples, UIC 204 of computing device 220 may include the functionality of input device 242 and / or output device 246. Figure 2 In some examples, UIC 204 may be or may include a presence-sensitive input device, such as a presence-sensitive display (e.g., a touchscreen). In some examples, the presence-sensitive input device can detect objects at and / or near the screen. As one example, the presence-sensitive input device can detect objects, such as a finger or stylus within 2 inches or less of the screen. The presence-sensitive input device can determine the location (e.g., (x,y) coordinates) of the detected object on the screen. In another example, the presence-sensitive input device can detect objects within six inches or less of the screen, and other ranges are possible. The presence-sensitive input device can use capacitive, inductive, and / or optical recognition techniques to determine the location on the screen selected by the user's finger. In some examples, the presence-sensitive input device also uses tactile, audio, or video stimuli as described with respect to one or more output devices 246 to provide output to the user (e.g., at the display). Figure 2 In the example, UIC 204 can render the user interface.
[0079] Although illustrated as an internal component of computing device 220, UIC 204 also refers to an external component that shares a data path with computing device 220 for transmitting and / or receiving input and output. For example, in one example, UIC 204 refers to a built-in component of computing device 220 located within the external package of computing device 220 and physically connected to that computing device (e.g., a screen on a mobile phone). In another example, UIC 204 refers to an external component of computing device 220 located outside the package of computing device 220 and physically separate from that computing device (e.g., a monitor, projector, etc., sharing a wired and / or wireless data path with a tablet computer).
[0080] One or more storage devices 248 within the computing device 220 may store information for processing during operation of the computing device 220. In some examples, the storage device 248 is temporary memory, meaning that its primary purpose is not long-term storage. The storage device 248 on the computing device 220 may be configured to act as volatile memory for short-term storage of information, and therefore the stored contents are not retained when the device is deactivated. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.
[0081] In some examples, storage device 248 also includes one or more computer-readable storage media. Storage device 248 can be configured to store a larger amount of information compared to volatile memory. Storage device 248 can also be configured to serve as non-volatile memory space to store information for a long period of time and retain information after an activation / deactivation cycle. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM). Storage device 248 can store program instructions and / or data associated with operating system 226, UI module 206, application installation module 224, application 212, and stub 219.
[0082] According to the technology of this disclosure, one or more processors 240 of computing device 220 are configured to execute application installation module 224 to receive requests from computing devices (such as computing device 102) logged into the same user account as computing device 220 for installing applications (such as application 212) on computing device 220. In some examples, application installation module 224 may receive requests from computing system (such as computing system 150) via one or more communication units 244, which forwards requests from computing device 102 to computing device 220 via network 130. In some examples, application installation module 224 may receive requests from computing device 102 via one or more communication units 244 through a short-range wireless connection (such as short-range wireless connection 118) between computing device 102 and computing device 220.
[0083] In some examples, if computing system 150 is unable to forward application installation requests sent by other computing devices to computing device 220 (such as when computing device 220 is offline or otherwise not connected to network 130), computing system 150 may queue such requests. Application installation module 224 may, after computing device 220 returns to online, send a query to computing system 150 via one or more communication units 244 regarding the queued applications for installation on computing device 220. One or more communication units 244 may, in response to sending a query to computing system 150, receive from computing system 150 one or more requests for installing one or more applications on computing device 220.
[0084] One or more processors 240 are configured to execute application installation module 224 to parse a request in response to receiving a request to install application 212. The request may include instructions for actions to be performed by computing device 220, such as the installation of application 212. The request may also include metadata indicating the application to be installed by computing device 220, such as the package name of application 212. By parsing the request, application installation module 224 can determine that the request is for computing device 220 to download the specific application 212 specified by the request. Therefore, application installation module 224 may attempt to download the application 212 specified by the request from computing system 150 and install the downloaded application 212.
[0085] In some examples, before attempting to download and install application 212, application installation module 224 can authenticate the request as being sent by a computing device logged into the same user account as computing device 220, and verify that the request is intended for computing device 220. The request may include information that enables computing device 220 to authenticate the request as being sent by a computing device logged into the same user account as computing device 220 and to verify that the request is intended for computing device 220. For example, the request may include an indication of the computing device sending the request (e.g., by including a device identifier associated with computing device 102) and an indication of the computing device intended to receive the request (e.g., by including a device identifier associated with computing device 220).
[0086] If the request includes an indication of the sender of the request, such as a device identifier associated with the sender, then the application installation module 224 can determine whether the device identifier associated with the sender of the request matches a device identifier of a computing device logged into a user account, to authenticate the request as being sent by a computing device logged into the same user account as computing device 220. Similarly, if the request includes an indication of the intended recipient of the request, such as a device identifier associated with the recipient, then the application installation module 224 can determine whether the device identifier associated with the recipient of the request matches a device identifier of computing device 220, to verify that the request is intended for computing device 220.
[0087] In some examples, if the request is encrypted or digitally signed using a shared cryptographic key that is logged into the same user account (e.g., computing devices 102 and 220), the application installation module 224 can use the shared cryptographic key to authenticate the request as being sent by a computing device logged into the same user account as computing device 220, and to verify that the request is intended for computing device 220, such as by decrypting the request using the shared cryptographic key or by verifying the digital signature using the shared cryptographic key.
[0088] Therefore, the application installation module 224 may attempt to download and install the application 212 specified in the request in response to successfully authenticating that the request was sent by a computing device logged into the same user account as computing device 220 and in response to successfully verifying that the request is intended for computing device 220. In some examples, the application installation module 224 may attempt to download and install application 212 without authenticating that the request was sent by a computing device logged into the same user account as computing device 220 and without successfully verifying that the request is intended for computing device 220.
[0089] In some examples, one or more processors 240 are configured to execute application installation module 224 to determine whether the storage device 248 of computing device 220 has sufficient available storage space to install the application 212 specified in the request. If application installation module 224 determines that the storage device 248 of computing device 220 has sufficient available storage space to install application 212, then application installation module 224 can download and install application 212. If application installation module 224 determines that the storage device 248 of computing device 220 does not have sufficient available storage space to install application 212, then application installation module 224 can download and install the stub 219 associated with application 212.
[0090] In some examples, the application installation module 224 may query the computing system 150 for the amount of storage space that may be needed to install application 212, and in response, may receive an indication from the computing system 150 of the amount of storage space that may be needed to install application 212. The application installation module 224 may determine whether the storage device 248 of the computing device 220 has sufficient available storage space to install application 212 based on the amount of storage space that may be needed to install application 212.
[0091] For example, application installation module 224 can compare the amount of available storage space (e.g., unused storage space) of storage device 248 with the amount of storage space that may be needed to install application 212. If application installation module 224 determines that the amount of available storage space of storage device 248 is greater than or equal to the amount of storage space required to install application 212, then application installation module 224 can determine that storage device 248 has sufficient available storage space to install application 212. Similarly, if application installation module 224 determines that the amount of available storage space of storage device 248 is less than the amount of storage space required to install application 212, then application installation module 224 can determine that storage device 248 does not have sufficient available storage space to install application 212.
[0092] If the application installation module 224 determines that the storage device 248 does not have enough available storage space to install the application 212, the application installation module 224 may send a request to the computing system 150 via one or more communication units 244 to download the stub 219 associated with the application 212.
[0093] Therefore, the application installation module 224 can download the stub 219 associated with application 212 from the computing system 150 via one or more communication units 244. After the application installation module 224 has downloaded the stub 219 associated with application 212, it can install the stub 219 associated with application 212 at the computing device 220. The stub 219 associated with application 212 can be one or more files, such as applets or other program code, that act as placeholders for application 212 at the computing device 220. The stub (such as stub 219) can have a relatively small size, such as less than 100 kilobytes or less than 1 megabyte. Therefore, even if the storage device 248 has very little available storage space, the storage device 248 can have sufficient storage space to install the stub 219 associated with application 212.
[0094] If the application installation module 224 determines that the storage device 248 has sufficient available storage space to install the application 212, the application installation module 224 may send a request to the computing system 150 to download the application 212 via one or more communication units 244. Therefore, the application installation module 224 can download the application 212 from the computing system 150 via one or more communication units 244. After the application installation module 224 has downloaded the application 212, it can install the application 212 at the computing device 220. In some examples, the application installation module 224 can download the application 212 without determining whether the storage device 248 has sufficient available storage space to install the application 212.
[0095] In some examples, after installing the stub 219 associated with application 212, the application installation module 224 can monitor the available storage space of storage device 248 to determine whether storage device 248 has sufficient available storage space to install application 212. For example, the application installation module 224 can periodically determine whether storage device 248 has sufficient available storage space to install application 212 by comparing the amount of available storage space at storage device 248 with the amount of storage space required to install application 212. If the application installation module 224 determines that storage device 248 has sufficient available storage space to install application 212, the application installation module 224 can download application 212 from computing system 150 and can install application 212 at computing device 220 to replace stub 219.
[0096] In some examples, application installation module 224 may include an application icon associated with stub 219 in the home screen or desktop displayed at UIC 204 on computing device 220 in response to the installation of stub 219. A user may provide user input at UIC 204 to open or launch stub 219, such as by selecting or double-clicking the application icon associated with stub 219. UI module 206 may send an instruction to application installation module 224, corresponding to user input for opening or launching stub 219 associated with the application icon, in response to the user providing user input to open or launch stub 219. Application installation module 224 may, in response to receiving the instruction to open or launch stub 219 associated with the application icon, attempt to download application 212 associated with stub 219 from computing system 150 and install application 212 at computing device 220 to replace stub 219.
[0097] In some examples, if the application installation module 224 determines, while attempting to download the application 212 associated with stub 219, that storage device 248 does not yet have sufficient available storage space to install the application 212, the application installation module 224 may cause UIC 204 to display a prompt to the user of computing device 220 to perform one or more storage-saving actions, such as enabling the automatic archiving feature to archive unused applications on computing device 220. The automatic archiving feature may archive applications that have not been used recently (such as applications that have not been used in the past 30 days), such as by deleting certain data associated with those unused applications from storage device 248.
[0098] In some examples, application installation module 224 may fail to download the application from computing system 150. For example, one or more communication units 244 of computing device 220 may encounter intermittent connectivity problems that prevent computing device 220 from connecting to network 130 for a sufficient period of time to fail to download application 212 from computing system 150. If application installation module 224 fails to download application 212 from computing system 150, it may schedule the download of application 212 at a later time (such as one hour later, one day later, etc.). If application installation module 224 also fails to download application 212 from computing system 150 at the scheduled later time, it may continue to periodically attempt to download application 212, such as by attempting to download application 212 hourly, daily, etc. In some examples, application installation module 224 may be able to detect that computing device 220 has a stable connection to network 130 and, in response, may attempt to download application 212 from computing system 150.
[0099] Figure 3This is a block diagram illustrating an example computing system according to one or more aspects of this disclosure. Figure 3 This is just one specific example of computing system 350, and many other examples of computing system 350 may be used in other situations, and may include a subset of the components included in example computing system 350, or may include... Figure 3 Additional components not shown. The computing system 350 may be... Figure 1 Example of computing system 150.
[0100] like Figure 3 As shown in the example, computing system 350 includes one or more processors 340, one or more input devices 342, one or more communication units 344, one or more output devices 346, and one or more storage devices 348. The storage device 348 of computing system 350 also includes an operating system 326, an application management module 332, a request data repository 360, and an application store 362. The application management module 332 is... Figure 1 An example of application management module 132, and application repository 362 is... Figure 1 Example of application storage library 162.
[0101] Communication channel 352 can interconnect each of components 340, 342, 344, 346, and 348 for inter-component communication (physically, communicatively, and / or operationally). In some examples, communication channel 352 may include a system bus, a network connection, one or more inter-process communication data structures, or any other component for communicating data between hardware and / or software.
[0102] One or more processors 340 may implement functionality and / or execute instructions within computing system 350. For example, processor 340 on computing system 350 may receive and execute instructions stored in storage device 348, which provide functionality for operating system 326 and application management module 332. These instructions executed by processor 340 may cause computing system 350 to store and / or modify information in storage device 348 during program execution. Processor 340 may execute instructions of operating system 326 and application management module 332. That is, operating system 326 and application management module 332 may be operable by processor 340 to perform the various functions described herein.
[0103] One or more processors 340 may be or include digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), and / or other equivalent integrated or discrete logic circuit systems. One or more input devices 342 of the computing system 350 may receive input. Examples of inputs are tactile inputs, audio inputs, motion inputs, and optical inputs, to name just a few. One or more output devices 346 of the computing system 350 may generate outputs. Examples of outputs are tactile outputs, audio outputs, and video outputs.
[0104] One or more communication units 344 of the computing system 350 can communicate with external devices by transmitting and / or receiving data. For example, the computing system 350 can use the communication unit 344 to transmit and / or receive radio signals on a radio network, such as a cellular radio network. In some examples, the communication unit 344 can transmit and / or receive satellite signals on a satellite network, such as a Global Positioning System (GPS) network. Examples of communication units 344 include network interface cards (e.g., such as Ethernet cards), optical transceivers, radio frequency transceivers, GPS receivers, or any other type of device capable of sending and / or receiving information. Other examples of communication units 344 may include Bluetooth®, GPS, 3G, 4G, and Wi-Fi® radios and Universal Serial Bus (USB) controllers found in mobile devices.
[0105] One or more storage devices 348 within the computing system 350 may store information for processing during operation of the computing system 350. In some examples, the storage device 348 is temporary memory, meaning that its primary purpose is not long-term storage. The storage device 348 on the computing system 350 may be configured to act as volatile memory to store information for short periods, and therefore the stored contents are not retained when the system is not in use. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.
[0106] In some examples, storage device 348 also includes one or more computer-readable storage media. Storage device 348 can be configured to store a larger amount of information compared to volatile memory. Storage device 348 can be further configured to serve as non-volatile memory space for long-term storage of information and to retain information after an activation / deactivation cycle. Examples of non-volatile memory include magnetic hard disks, optical disks, floppy disks, flash memory, or electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM). Storage device 348 can store program instructions and / or data associated with operating system 326 and application management module 332.
[0107] According to the technology disclosed herein, one or more processors 340 of the computing system 350 are configured to execute an application management module 332 to receive a request from a first computing device (such as computing device 102) for installing an application on a second computing device (such as computing device 120). For example, the application management module 332 may receive the request for installing an application on computing device 120 from computing device 102 via a communication unit 344, and the application management module 332 may forward the request to computing device 120 via a network 130.
[0108] If computing system 350 is unable to forward a request to computing device 120 (e.g., when computing device 120 is offline or otherwise unreachable via network 130), application management module 332 can queue the request at computing system 350, such as in request data repository 360. When application management module 332 receives a query from computing device 120 via communication unit 344 for a queued request to install an application, application management module 332 can retrieve the request from request data repository 360 and can forward the request to computing device 120 via network 130.
[0109] In some examples, application management module 332 may use communication unit 344 to periodically attempt to send queued requests to the intended recipient of the request via network 130. For example, if computing system 350 is unable to forward the request to computing device 120 and has therefore queued the request in request data repository 360, application management module 332 may periodically attempt to send the request to computing device 120, such as by attempting to send the request to computing device 120 once an hour, once a day, and so on.
[0110] One or more processors 340 are also configured to execute the application management module 332 to receive requests for downloading applications from a computing device using the communication unit 344, and in response, to send the applications to the computing device. For example, the application management module 332 can use the communication unit 344 to receive requests for downloading applications from the computing device 120 via the network 130. The application management module 332 can retrieve the requested application from the application store 362 (such as by retrieving the application package of the requested application from the application store 362) in response to receiving a request, and can use the communication unit 344 to send the applications to the computing device 120 via the network 130.
[0111] In some examples, the application management module 332 can receive requests to download stubs associated with an application. For example, the application management module 332 can use the communication unit 344 via the network 130 to receive a request from the computing device 120 to download a stub associated with a specific application. In response to receiving a request, the application management module 332 can retrieve the requested stub associated with the specific application from the application repository 362, and can use the communication unit 344 via the network 130 to send the stub associated with the specific application to the computing device 120.
[0112] In some examples, application management module 332 may determine whether the computing device has sufficient available storage space to install the application in response to receiving a request from the computing device to download a specific application. For example, application management module 332 may receive a request to download a specific application from computing device 120, wherein the request may indicate the amount of available storage space (e.g., free storage space) at computing device 120. Application management module 332 may determine whether computing device 120 has sufficient available storage space to install the requested application in response to receiving the request from computing device 120.
[0113] In some examples, computing system 350 may store information about the amount of storage space each application stored in application store 362 might require, and application management module 332 may use this information to determine the amount of storage space required to install a requested application. Therefore, application management module 332 may compare the amount of storage space required to install the requested application with the amount of available storage space at computing device 120 to determine whether computing device 120 has sufficient available storage space to install the requested application.
[0114] For example, if the amount of storage space required to install the requested application is less than or equal to the amount of available storage space on computing device 120, the application management module 332 can determine that computing device 120 has sufficient available storage space to install the requested application. Similarly, if the amount of storage space required to install the requested application is greater than the amount of available storage space on computing device 120, the application management module 332 can determine that computing device 120 does not have sufficient available storage space to install the requested application.
[0115] If the application management module 332 determines that the computing device 120 has sufficient available storage space to install the requested application, the application management module 332 may use the communication unit 344 to send the requested application to the computing device 120 via the network 130. Similarly, if the application management module 332 determines that the computing device 120 does not have sufficient available storage space to install the requested application, the application management module 332 may use the communication unit 344 to send the stub associated with the requested application to the computing device 120 via the network 130.
[0116] Figure 4 This is a flowchart illustrating a fault-tolerant forwarding process for an application installation request based on one or more technologies disclosed herein. Figure 4 In the following text Figures 1 to 3 Described in the context of.
[0117] like Figure 4 As shown, computing system 150 can receive a request (402) from computing device 102 for installing an application on computing device 120. In response to receiving the request from computing device 102, computing system 150 can determine whether it is capable of sending the request to computing device 120 via network 130 (404). For example, computing system 150 can determine whether computing device 120 is online and whether it is capable of receiving communication from computing system 150 via network 130.
[0118] The computing system 150 may send a request to the computing device 120 (406) in response to determining that the computing system 150 is able to send a request to the computing device 120 (yes at 404). The computing system 150 may queue the request at the computing system 150 (408) in response to determining that the computing system 150 is unable to send a request to the computing device 120 (no at 404) (such as when the computing device 120 is unreachable via the network 130).
[0119] After queuing the requests, the computing system 150 can then receive a query (410) from the computing device 120 for the queuing of the application to be installed at the computing device 120. The computing system 150 can send a queuing request to the computing device 120 in response to receiving the query from the computing device 120 (412).
[0120] Figure 5 This is a flowchart illustrating a fault-tolerant installation process for an application based on one or more techniques according to this disclosure. Figure 5 In the following text Figures 1 to 3 Described in the context of.
[0121] like Figure 5 As shown, computing system 150 can receive a request from computing device 120 to download an application for installation on computing device 120 (502). Computing system 150 can determine, in response to receiving the request, whether computing device 120 has sufficient available storage space to install the application (504). For example, the request may indicate the amount of available storage space on computing device 120, or computing system 150 may have previously determined the amount of available storage space on computing device 120. Therefore, computing system 150 can compare the amount of available storage space on computing device 120 with the amount of storage space required to install the requested application to determine whether computing device 120 has sufficient available storage space to install the application.
[0122] The computing system 150 may send the requested application to the computing device 120 for installation on the computing device 120 in response to determining that the computing device 120 has sufficient available storage space to install the requested application (yes at 504). The computing system 150 may also send a stub associated with the requested application to the computing device 120 for installation on the computing device 120 in response to determining that the computing device 120 does not have sufficient available storage space to install the requested application (no at 504).
[0123] Figure 6 This is a flowchart illustrating a fault-tolerant download process for an application based on one or more techniques according to this disclosure. Figure 6 In the following text Figures 1 to 3 Described in the context of.
[0124] like Figure 6 As shown, computing device 120 can receive a request to install an application sent by computing device 102 (602). Computing device 120 can, in response to receiving the request, attempt to download the application from computing system 150 (604). For example, computing device 120 can attempt to communicate with computing system 150 via network 130 and establish a connection to download the application.
[0125] The computing device 120 can determine whether it can successfully download the application from the computing system 150 (606). For example, the computing device 120 can determine whether it can fully download the application package. Network connectivity problems (such as intermittent connectivity with network 130) can cause the computing device 120 to fail to download the application from the computing system 150.
[0126] The computing device 120 may schedule the download of the application at a later time (608) in response to determining that the computing device can successfully download the application (yes at 606). The computing device 120 may install the application on the computing device 120, such as one hour later or one day later, in response to determining that the computing device cannot successfully download the application (no at 606).
[0127] Figure 7 This is a flowchart illustrating a fault-tolerant installation process for an application based on one or more techniques according to this disclosure. Figure 7 In the following text Figures 1 to 3 Described in the context of.
[0128] like Figure 7 As shown, computing device 120 can receive a request to install an application sent by computing device 102 (702). In response to receiving the request, computing device 120 can determine whether it has sufficient available storage space to install the application (704). For example, computing device 120 can receive an indication of the amount of storage space required to install the application from computing system 150, and computing device 120 can compare the amount of storage space required to install the application with the amount of available storage space at computing device 120 to determine whether it has sufficient available storage space to install the application.
[0129] The computing device 120 may download the application from the computing system 150 (706) in response to determining that the computing device 120 has sufficient available storage space to install the application (yes at 704). The computing device 120 may download the stub associated with the application from the computing system 150 (708) in response to determining that the computing device 120 does not have sufficient available storage space to install the application (no at 704).
[0130] Figure 8 This is a flowchart illustrating an example operating mode for performing fault-tolerant application installation on a computing device according to one or more techniques of this disclosure. Figure 8 In the following text Figures 1 to 7 Described in the context of.
[0131] like Figure 8As shown, one or more processors 240 of computing device 220 can receive a request to install application 212 at computing device 220, wherein the request is sent by a second computing device 102 logged into the same user account as computing device 220 (802). In some examples, in order to receive the request to install application 212 at computing device 220, one or more processors 240 can query computing system 150 for queued requests to install application 212 at computing device 220, and can receive the request to install application 212 from computing system 150 in response to the query. In some examples, in order to receive the request to install application 212 at computing device 220, one or more processors 240 can receive the request to install application 212 from the second computing device 102 via a direct wireless connection 118 between computing device 220 and the second computing device 102.
[0132] One or more processors 240 may, in response to receiving a request and based on the premise that computing device 220 does not have sufficient available storage space to install application 212, download stub 219 (804) associated with application 212 from computing system 150. In some examples, one or more processors 240 may determine that computing device 220 does not have sufficient available storage space to install application 212, and may, in response to determining that computing device 220 does not have sufficient available storage space to install application 212, download stub 219 associated with application 212 from computing system 150.
[0133] In some examples, in order to download the stub 219 associated with application 212, one or more processors 240 may authenticate that the request is sent by a second computing device 102 logged into the same user account as computing device 220, verify that the request is intended for computing device 220, and download the stub 219 associated with application 212 from computing system 150 in response to successfully authenticating that the request is sent by a second computing device 102 logged into the same user account as computing device 220 and successfully verifying that the request is intended for computing device 220.
[0134] One or more processors 240 may install the stub 219 (806) associated with application 212. In some examples, one or more processors 240 may re-attempt to install application 212 after installing the stub 219 associated with application 212. In some examples, in order to re-attempt to install application 212, one or more processors 240 may download application 212 from computing system 150 based on whether computing device 220 has sufficient available storage space to install application 212, and may install application 212.
[0135] In some examples, in order to download application 212 from computing system 150, one or more processors 240 may determine that computing device 220 is unable to successfully download application 212 from computing system 150, and may schedule the download of application 212 at a later time in response to determining that computing device 220 is unable to successfully download application 212 from computing system 150.
[0136] In some examples, in order to retry installing application 212, one or more processors 240 may receive an instruction corresponding to user input associated with launching stub 219 associated with application 212, and may retry installing application 212 in response to receiving the instruction corresponding to user input associated with launching stub 219 associated with application 212.
[0137] Figure 9 This is a flowchart illustrating an example operating mode for performing fault-tolerant application installation on a computing system according to one or more techniques of this disclosure. Figure 9 In the following text Figures 1 to 7 Described in the context of.
[0138] like Figure 9 As shown, one or more processors 340 of the computing system 350 can receive a request (902) to download an application from the computing device 120.
[0139] One or more processors 340 may, in response to receiving a request and based on the premise that computing device 120 does not have sufficient available storage space to install application 112, send a stub 119 associated with application 112 to computing device 120 for installation at computing device 120 (904). In some examples, one or more processors 340 may determine that computing device 120 does not have sufficient available storage space to install application 112, and may, in response to determining that computing device 120 does not have sufficient available storage space to install application 112, send a stub 119 associated with application 112 to computing device 120 for installation at computing device 120.
[0140] In some examples, one or more processors 340 may receive a subsequent request from computing device 120 to download application 112. One or more processors 340 may, in response to receiving the subsequent request, determine that computing device 120 has sufficient available storage space to install application 112. One or more processors 340 may, in response to determining that computing device 120 has sufficient available storage space to install application 112, send application 112 to computing device 120 for installation on computing device 120.
[0141] In some examples, in order to send application 112 to computing device 120 for installation on computing device 120, one or more processors 340 may determine that computing device 120 has failed to successfully download application 112 from computing system 350. One or more processors 340 may, in response to determining that computing device 120 has failed to successfully download application 112 from computing system 350, schedule to send application 112 to computing device 120 at a later time.
[0142] In some examples, one or more processors 340 may receive a request from a second computing device 102 logged into the same user account as computing device 120 for installing application 112 on computing device 120, and the one or more processors 340 may forward the request to computing device 120. In some examples, in order to forward the request for installing application 112 on computing device 120, one or more processors 340 may determine that computing system 350 cannot forward the request to computing device 120. One or more processors 340 may queue the request at computing system 350 in response to determining that computing system 350 cannot forward the request to computing device 120. One or more processors 340 may receive a query from computing device 120 after queuing the request for installing application 112 on computing device 120. One or more processors 340 may forward the queued request to computing device 120 in response to receiving the query.
[0143] In some examples, one or more processors 340 may receive a second request from a second computing device 102 logged into the same user account as computing device 120 for installing a second application on computing device 120. One or more processors 340 may determine that computing system 350 is unable to forward the second request to computing device 120. One or more processors 340 may queue the second request at computing system 350 in response to determining that computing system 350 is unable to forward the second request to computing device 120. One or more processors 340 may determine that the queued second request has not been forwarded to computing device 120 within a specified time period. One or more processors 340 may send an indication to the second computing device 102 that the second request has failed in response to determining that the queued second request has not been forwarded to computing device 120 within the specified time period.
[0144] This disclosure includes the following examples.
[0145] Example 1. A method comprising: receiving, by one or more processors of a first computing device, a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, downloading a stub associated with the application from a computing system by the one or more processors; and installing the stub associated with the application by the first computing device.
[0146] Example 2. The method described in Example 1 further includes: after installing the stub associated with the application, one or more processors retry installing the application.
[0147] Example 3. The method as described in Example 2, wherein retrying to install the application further includes: downloading the application from the computing system by one or more processors, based on the premise that the first computing device has sufficient available storage space to install the application; and installing the application by one or more processors.
[0148] Example 4. The method as described in Example 3, wherein downloading an application from the computing system further comprises: determining, by one or more processors, that the first computing device cannot successfully download the application from the computing system; and, in response to determining that the first computing device cannot successfully download the application from the computing system, scheduling, by one or more processors, to download the application at a later time.
[0149] Example 5. The method of any one of Examples 2 to 4, wherein retrying to install the application further comprises: receiving, by one or more processors, an instruction corresponding to user input associated with launching the stub associated with the application; and, in response to receiving the instruction corresponding to user input associated with launching the stub associated with the application, retrying to install the application by one or more processors.
[0150] Example 6. The method of any one of Examples 1 to 5, wherein downloading the stub associated with the application further comprises: one or more processors authenticating that the request is sent by a second computing device logged into the same user account as the first computing device; one or more processors verifying that the request is intended for the first computing device; and one or more processors downloading the stub associated with the application from the computing system in response to successfully authenticating that the request is sent by a second computing device logged into the same user account as the first computing device and successfully verifying that the request is intended for the first computing device.
[0151] Example 7. The method of any one of Examples 1 to 6, wherein receiving a request to install an application at the first computing device further comprises: querying the computing system by one or more processors in response to a queue of requests to install the application at the first computing device; and receiving the request to install the application from the computing system by one or more processors in response to the query.
[0152] Example 8. The method of any one of Examples 1 to 6, wherein receiving a request to install an application on a first computing device further comprises: receiving the request to install the application from a second computing device by one or more processors via a direct wireless connection between the first computing device and the second computing device.
[0153] Example 9. The method of any one of Examples 1 to 8, wherein downloading a stub associated with the application from the computing system based on the first computing device not having sufficient available storage space to install the application further comprises: determining by one or more processors that the first computing device does not have sufficient available storage space to install the application; and in response to determining that the first computing device does not have sufficient available storage space to install the application, downloading a stub associated with the application from the computing system by one or more processors.
[0154] Example 10. A computing device includes: a memory storing instructions; and one or more processors executing the instructions to: receive a request to install an application on the computing device, wherein the request is sent by a second computing device logged into the same user account as the computing device; in response to receiving the request and based on the computing device not having sufficient available storage space to install the application, download a stub associated with the application from a computing system; and install the stub associated with the application.
[0155] Example 11. A computing device as described in Example 10, wherein one or more processors are further configured to re-attempt to install the application after installing a stub associated with the application.
[0156] Example 12. A computing device as described in Example 11, wherein, in order to retry installing the application, one or more processors are further configured to: download the application from the computing system based on the computing device having sufficient available storage space to install the application; and install the application.
[0157] Example 13. A computing device as described in Example 12, wherein, in order to download an application from a computing system, one or more processors are further configured to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule the download of the application at a later time.
[0158] Example 14. A computing device as described in any one of Examples 11 to 13, wherein, in order to retry installing the application, one or more processors are further configured to: receive an instruction corresponding to user input associated with launching a stub associated with the application; and, in response to receiving the instruction corresponding to user input associated with launching a stub associated with the application, retry installing the application.
[0159] Example 15. A computing device as described in any one of Examples 10 to 14, wherein, in order to download a stub associated with an application, one or more processors are further configured to: send an authentication request from a second computing device logged into the same user account as the computing device; verify that the request is intended for the computing device; and, in response to successfully verifying that the authentication request was sent from a second computing device logged into the same user account as the computing device and successfully verifying that the request is intended for the computing device, download the stub associated with the application from the computing system.
[0160] Example 16. A computing device as described in any one of Examples 10 to 15, wherein, in order to receive a request to install an application at the computing device, one or more processors are further configured to: query a computing system for a queue of requests to install an application at the computing device; and, in response to the query to the computing system, receive a request to install the application from the computing system.
[0161] Example 17. A computing device as described in any one of Examples 10 to 15, wherein, in order to receive a request to install an application at the computing device, one or more processors are further configured to receive the request to install the application from the second computing device via a direct wireless connection between the computing device and the second computing device.
[0162] Example 18. A computing device as described in any one of Examples 10 to 17, wherein, in order to download a stub associated with an application from a computing system based on the computing device not having sufficient available storage space to install the application, one or more processors are further configured to: determine that the computing device does not have sufficient available storage space to install the application; and, in response to determining that the computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system.
[0163] Example 19. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a first computing device to: receive a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, download a stub associated with the application from a computing system; and install the stub associated with the application.
[0164] Example 20. A computer-readable storage medium as described in Example 19, wherein the instructions further cause one or more processors to re-attempt to install the application after installing the stub associated with the application.
[0165] Example 21. A computer-readable storage medium as described in Example 20, wherein instructions causing one or more processors to retry installing an application further cause one or more processors to: download an application from a computing system based on the computing device having sufficient available storage space to install the application; and install the application.
[0166] Example 22. A computer-readable storage medium as described in Example 21, wherein instructions causing one or more processors to download an application from a computing system further cause one or more processors to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule the download of the application at a later time.
[0167] Example 23. A computer-readable storage medium as described in any one of Examples 20 to 22, wherein the instruction causing one or more processors to retry installing an application further causes one or more processors to: receive an instruction corresponding to user input associated with launching a stub associated with the application; and, in response to receiving the instruction corresponding to user input associated with launching a stub associated with the application, retry installing the application.
[0168] Example 24. A computer-readable storage medium as described in any one of Examples 19 to 23, wherein an instruction causing one or more processors to download a stub associated with an application further causes one or more processors to: send an authentication request from a second computing device logged into the same user account as the computing device; verify that the request is intended for the computing device; and, in response to successfully authenticating that the request was sent from a second computing device logged into the same user account as the computing device and successfully verifying that the request is intended for the computing device, download a stub associated with the application from the computing system.
[0169] Example 25. A computer-readable storage medium as described in any one of Examples 19 to 24, wherein an instruction causing one or more processors to receive a request to install an application at a computing device further causes one or more processors to: query a computing system in response to a queue of requests to install the application at the computing device; and, in response to the query to the computing system, receive from the computing system the request to install the application.
[0170] Example 26. A computer-readable storage medium as described in any one of Examples 19 to 24, wherein an instruction causing one or more processors to receive a request to install an application at a computing device further causes one or more processors to: receive the request to install the application from a second computing device via a direct wireless connection between the computing device and the second computing device.
[0171] Example 27. A computer-readable storage medium as described in any one of Examples 19 to 26, wherein an instruction causing one or more processors to download a stub associated with the application from a computing system based on insufficient available storage space on the computing device to install the application further causes one or more processors to: determine that the computing device does not have sufficient available storage space to install the application; and, in response to determining that the computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system.
[0172] Example 27. A computer program product containing stored instructions that, when executed, cause one or more processors of a first computing device to: receive a request to install an application on the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; in response to receiving the request and based on the premise that the first computing device does not have sufficient available storage space to install the application, download a stub associated with the application from a computing system; and install the stub associated with the application.
[0173] Example 28. A computer program product as described in Example 27, wherein the instructions further cause one or more processors to re-attempt to install the application after installing the stub associated with the application.
[0174] Example 29. A computer program product as described in Example 28, wherein instructions causing one or more processors to retry installing an application further cause one or more processors to: download the application from the computing system based on the computing device having sufficient available storage space to install the application; and install the application.
[0175] Example 30. A computer program product as described in Example 29, wherein instructions causing one or more processors to download an application from a computing system further cause one or more processors to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule the download of the application at a later time.
[0176] Example 31. A computer program product as described in any one of Examples 28 to 30, wherein the instruction causing one or more processors to retry installing the application further causes one or more processors to: receive an instruction corresponding to user input associated with launching the stub associated with the application; and, in response to receiving the instruction corresponding to user input associated with launching the stub associated with the application, retry installing the application.
[0177] Example 32. A computer program product as described in any one of Examples 27 to 31, wherein an instruction causing one or more processors to download a stub associated with an application further causes one or more processors to: send an authentication request from a second computing device logged into the same user account as the computing device; verify that the request is intended for the computing device; and, in response to successfully verifying that the authentication request was sent from a second computing device logged into the same user account as the computing device and successfully verifying that the request is intended for the computing device, download a stub associated with the application from the computing system.
[0178] Example 33. A computer program product as described in any one of Examples 27 to 32, wherein an instruction causing one or more processors to receive a request to install an application on a computing device further causes one or more processors to: query a computing system in response to a queue of requests to install the application on the computing device; and, in response to the query to the computing system, receive a request to install the application from the computing system.
[0179] Example 34. A computer program product as described in any one of Examples 27 to 32, wherein an instruction causing one or more processors to receive a request to install an application at a computing device further causes one or more processors to: receive the request to install the application from a second computing device via a direct wireless connection between the computing device and the second computing device.
[0180] Example 35. A computer program product as described in any one of Examples 27 to 34, wherein an instruction causing one or more processors to download a stub associated with the application from a computing system based on insufficient available storage space on the computing device to install the application further causes one or more processors to: determine that the computing device does not have sufficient available storage space to install the application; and, in response to determining that the computing device does not have sufficient available storage space to install the application, download a stub associated with the application from the computing system.
[0181] Example 36. An apparatus comprising: means for receiving a request to install an application on a first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; means for downloading a stub associated with the application from a computing system in response to receiving the request and based on the first computing device not having sufficient available storage space to install the application; and means for installing the stub associated with the application.
[0182] Example 37. The device as described in Example 36 further includes: a component for re-attempting to install the application after installing a stub associated with the application.
[0183] Example 38. The device as described in Example 37, wherein the component for re-attempting to install the application further includes: a component for downloading the application from the computing system based on the computing device having sufficient available storage space to install the application; and a component for installing the application.
[0184] Example 39. The device as described in Example 38, wherein the component for downloading an application from the computing system further includes: a component for determining that the computing device cannot successfully download the application from the computing system; and a component for scheduling the download of the application at a later time in response to determining that the computing device cannot successfully download the application from the computing system.
[0185] Example 40. The device as described in any one of Examples 37 to 39, wherein the component for re-attempting to install the application further comprises: a component for receiving an instruction corresponding to user input associated with launching the application; and a component for re-attempting to install the application in response to receiving the instruction corresponding to user input associated with launching the application.
[0186] Example 41. The device of any one of Examples 36 to 40, wherein the component for downloading the stub associated with the application further comprises: a component for authentication that the authentication request is sent by a second computing device logged into the same user account as the computing device; a component for verifying that the request is intended for the computing device; and a component for downloading the stub associated with the application from the computing system in response to successfully authenticating that the request was sent by a second computing device logged into the same user account as the computing device and successfully verifying that the request is intended for the computing device.
[0187] Example 42. The device as described in any one of Examples 36 to 41, wherein the component for receiving a request to install an application at a computing device further comprises: a component for querying a computing system for a queue of requests to install an application at a computing device; and a component for receiving a request to install an application from the computing system in response to the query to the computing system.
[0188] Example 43. The device as described in any one of Examples 36 to 41, wherein the component for receiving a request to install an application at a computing device further comprises: a component for receiving a request to install an application from a second computing device via a direct wireless connection between the computing device and the second computing device.
[0189] Example 44. The device as described in any one of Examples 36 to 43, wherein the component for downloading a stub associated with the application from the computing system based on insufficient available storage space of the computing device to install the application further comprises: a component for determining that the computing device does not have sufficient available storage space to install the application; and a component for downloading a stub associated with the application from the computing system in response to determining that the computing device does not have sufficient available storage space to install the application.
[0190] Example 45. A method comprising: receiving a request to download an application from a computing device by one or more processors of a computing system; and in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, sending a stub associated with the application to the computing device for installation on the computing device.
[0191] Example 46. The method of Example 45, wherein sending a stub associated with the application to the computing device for installation on the computing device based on insufficient available storage space for installing the application further includes: determining by one or more processors that the computing device does not have sufficient available storage space for installing the application; and in response to determining that the computing device does not have sufficient available storage space for installing the application, sending a stub associated with the application to the computing device for installation on the computing device by one or more processors.
[0192] Example 47. The method of any one of Examples 45 and 46 further includes: receiving a subsequent request from a computing device by one or more processors to download an application; in response to receiving the subsequent request, determining by one or more processors that the computing device has sufficient available storage space to install the application; and in response to determining that the computing device has sufficient available storage space to install the application, sending the application to the computing device for installation on the computing device by one or more processors.
[0193] Example 48. The method of Example 47, wherein sending an application to a computing device for installation on the computing device further comprises: determining by one or more processors that the computing device cannot successfully download the application from the computing system; and in response to determining that the computing device cannot successfully download the application from the computing system, scheduling by one or more processors to send the application to the computing device at a later time.
[0194] Example 49. The method of any one of Examples 45 to 48 further includes: receiving, by one or more processors, a request for installing an application on the computing device from a second computing device logged into the same user account as the computing device; and forwarding the request to the computing device by one or more processors.
[0195] Example 50. The method of Example 49, wherein forwarding a request for installing an application on a computing device to the computing device further comprises: determining, by one or more processors, that the computing system cannot forward the request to the computing device; in response to determining that the computing system cannot forward the request to the computing device, queuing the request at the computing system by one or more processors; after queuing the request, receiving from the computing device a query for the queued request for installing the application at the computing device by one or more processors; and in response to receiving the query, forwarding the queued request to the computing device by one or more processors.
[0196] Example 51. The method of any one of Examples 45 to 50, further comprising: receiving, by one or more processors, a second request for the computing device to install a second application from a second computing device logged into the same user account as the computing device; determining, by one or more processors, that the computing system is unable to forward the second request to the computing device; in response to determining that the computing system is unable to forward the second request to the computing device, queuing the second request at the computing system by one or more processors; determining, by one or more processors, that the queued second request has not been forwarded to the computing device within a specified time period; and in response to determining that the queued second request has not been forwarded to the computing device within the specified time period, sending an indication to the second computing device that the second request has failed.
[0197] Example 52. A computing system comprising: a memory storing instructions; and one or more processors executing the instructions to: receive a request to download an application from a computing device; and in response to receiving the request and based on the computing device not having sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0198] Example 53. A computing system as described in Example 52, wherein, in order to send a stub associated with an application to the computing device for installation on the computing device based on the computing device not having sufficient available storage space to install the application, one or more processors are further configured to: determine that the computing device does not have sufficient available storage space to install the application; and, in response to determining that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0199] Example 54. A computing system as described in any one of Examples 52 and 53, wherein one or more processors are further configured to: receive a subsequent request from a computing device to download an application; in response to receiving the subsequent request, determine that the computing device has sufficient available storage space to install the application; and in response to determining that the computing device has sufficient available storage space to install the application, send the application to the computing device for installation on the computing device.
[0200] Example 55. A computing system as described in Example 54, wherein, in order to send an application to a computing device for installation on the computing device, one or more processors are further configured to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule the sending of the application to the computing device at a later time.
[0201] Example 56. A computing system as described in any one of Examples 52 to 55, wherein one or more processors are further configured to: receive a request from a second computing device logged into the same user account as the computing device for installing an application on the computing device; and forward the request to the computing device.
[0202] Example 57. A computing system as described in Example 56, wherein, in order to forward a request for installing an application to a computing device, one or more processors are further configured to: determine that the computing system cannot forward the request to the computing device; in response to determining that the computing system cannot forward the request to the computing device, queue the request at the computing system; after queuing the request, receive from the computing device a query for the queued request for installing the application at the computing device; and in response to receiving the query, forward the queued request to the computing device.
[0203] Example 58. A computing system as described in any one of Examples 52 to 57, wherein one or more processors are further configured to: receive a second request from a second computing device logged into the same user account as the computing device for the computing device to install a second application; determine that the computing system is unable to forward the second request to the computing device; in response to determining that the computing system is unable to forward the second request to the computing device, queue the second request at the computing system; determine that the queued second request has not been forwarded to the computing device within a specified time period; and in response to determining that the queued second request has not been forwarded to the computing device within the specified time period, send an indication to the second computing device that the second request has failed.
[0204] Example 59. A computer-readable storage medium storing instructions that, when executed, cause one or more processors of a computing system to: receive a request from a computing device to download an application; and, in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0205] Example 60. A computer-readable storage medium as described in Example 59, wherein an instruction causing one or more processors to send a stub associated with the application to the computing device for installation on the computing device based on the computing device not having sufficient available storage space to install the application further causes one or more processors to: determine that the computing device does not have sufficient available storage space to install the application; and, in response to determining that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0206] Example 61. A computer-readable storage medium as described in any one of Examples 59 and 60, wherein the instructions further cause one or more processors to: receive a subsequent request from a computing device to download an application; in response to receiving the subsequent request, determine that the computing device has sufficient available storage space to install the application; and in response to determining that the computing device has sufficient available storage space to install the application, send the application to the computing device for installation on the computing device.
[0207] Example 62. A computer-readable storage medium as described in Example 61, wherein instructions causing one or more processors to send an application to a computing device for use at the computing device further cause one or more processors to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule to send the application to the computing device at a later time.
[0208] Example 63. A computer-readable storage medium as described in any one of Examples 59 to 62, wherein the instructions further cause one or more processors to: receive a request from a second computing device logged into the same user account as the computing device for installing an application on the computing device; and forward the request to the computing device.
[0209] Example 64. A computer-readable storage medium as described in Example 63, wherein an instruction causing one or more processors to forward a request for installing an application on a computing device to the computing device further causes one or more processors to: determine that the computing system cannot forward the request to the computing device; in response to determining that the computing system cannot forward the request to the computing device, queue the request at the computing system; after queuing the request, receive from the computing device a query for the queued request for installing the application at the computing device; and in response to receiving the query, forward the queued request to the computing device.
[0210] Example 65. A computer-readable storage medium as described in any one of Examples 59 to 64, wherein the instructions further cause one or more processors to: receive a second request from a second computing device logged into the same user account as the computing device for the computing device to install a second application; determine that the computing system is unable to forward the second request to the computing device; in response to determining that the computing system is unable to forward the second request to the computing device, queue the second request at the computing system; determine that the queued second request has not been forwarded to the computing device within a specified time period; and in response to determining that the queued second request has not been forwarded to the computing device within the specified time period, send an indication to the second computing device that the second request has failed.
[0211] Example 66. A computer program product containing stored instructions that, when executed, cause one or more processors of a computing system to: receive a request from a computing device to download an application; and, in response to receiving the request and based on the premise that the computing device does not have sufficient available storage space to install the application, send a stub associated with the application to the computing device for installation on the computing device.
[0212] Example 67. A computer program product as described in Example 66, wherein an instruction causing one or more processors to send a stub associated with the application to the computing device for installation on the computing device based on insufficient available storage space for installing the application further causes one or more processors to: determine that the computing device does not have sufficient available storage space for installing the application; and, in response to determining that the computing device does not have sufficient available storage space for installing the application, send a stub associated with the application to the computing device for installation on the computing device.
[0213] Example 68. A computer program product as described in any one of Examples 66 and 67, wherein the instructions further cause one or more processors to: receive a subsequent request from a computing device to download an application; in response to receiving the subsequent request, determine that the computing device has sufficient available storage space to install the application; and in response to determining that the computing device has sufficient available storage space to install the application, send the application to the computing device for installation on the computing device.
[0214] Example 69. A computer program product as described in Example 68, wherein instructions causing one or more processors to send an application to a computing device for use at the computing device further cause one or more processors to: determine that the computing device cannot successfully download the application from the computing system; and, in response to determining that the computing device cannot successfully download the application from the computing system, schedule to send the application to the computing device at a later time.
[0215] Example 70. A computer program product as described in any one of Examples 66 to 69, wherein the instructions further cause one or more processors to: receive a request from a second computing device logged into the same user account as the computing device for installing an application on the computing device; and forward the request to the computing device.
[0216] Example 71. A computer program product as described in Example 70, wherein an instruction causing one or more processors to forward a request for installing an application on a computing device to the computing device further causes one or more processors to: determine that the computing system cannot forward the request to the computing device; in response to determining that the computing system cannot forward the request to the computing device, queue the request at the computing system; after queuing the request, receive from the computing device a query for the queued request for installing the application at the computing device; and in response to receiving the query, forward the queued request to the computing device.
[0217] Example 72. A computer program product as described in any one of Examples 66 to 71, wherein the instructions further cause one or more processors to: receive a second request from a second computing device logged into the same user account as the computing device for the computing device to install a second application; determine that the computing system is unable to forward the second request to the computing device; in response to determining that the computing system is unable to forward the second request to the computing device, queue the second request at the computing system; determine that the queued second request has not been forwarded to the computing device within a specified time period; and in response to determining that the queued second request has not been forwarded to the computing device within the specified time period, send an indication to the second computing device that the second request has failed.
[0218] Example 73. An apparatus comprising: a component for receiving a request to download an application from a computing device; and a component for sending a stub associated with the application to the computing device for installation on the computing device in response to receiving the request and based on the computing device not having sufficient available storage space to install the application.
[0219] Example 74. The device as described in Example 73, wherein the component for sending a stub associated with an application to the computing device for installation on the computing device based on insufficient available storage space for installing the application further includes: a component for determining that the computing device does not have sufficient available storage space for installing the application; and a component for sending a stub associated with an application to the computing device for installation on the computing device in response to determining that the computing device does not have sufficient available storage space for installing the application.
[0220] Example 75. The device as described in any one of Examples 73 and 74, further comprising: means for receiving a subsequent request from a computing device to download an application; means for determining, in response to receiving the subsequent request, that the computing device has sufficient available storage space to install the application; and means for sending the application to the computing device for installation on the computing device in response to determining that the computing device has sufficient available storage space to install the application.
[0221] Example 76. The device as described in Example 75, wherein the component for sending an application to a computing device for installation on the computing device further includes: a component for determining that the computing device cannot successfully download the application from the computing system; and a component for scheduling the sending of the application to the computing device at a later time in response to determining that the computing device cannot successfully download the application from the computing system.
[0222] Example 77. The device as described in any one of Examples 73 to 76 further includes: a component for receiving a request from a second computing device logged into the same user account as the computing device for the computing device to install an application; and a component for forwarding the request to the computing device.
[0223] Example 78. The device as described in Example 77, wherein the means for forwarding a request for installing an application on a computing device to the computing device further includes: means for determining that the computing system cannot forward the request to the computing device; means for queuing the request at the computing system in response to determining that the computing system cannot forward the request to the computing device; means for receiving from the computing device a query for the queued request for installing the application at the computing device after queuing the request; and means for forwarding the queued request to the computing device in response to receiving the query.
[0224] Example 79. The device of any one of Examples 73 to 78, further comprising: means for receiving a second request from a second computing device logged into the same user account as the computing device for the computing device to install a second application; means for determining that the computing system is unable to forward the second request to the computing device; means for queuing the second request at the computing system in response to determining that the computing system is unable to forward the second request to the computing device; means for determining that the queued second request has not been forwarded to the computing device within a specified time period; and means for sending an indication to the second computing device that the second request has failed in response to determining that the queued second request has not been forwarded to the computing device within the specified time period.
[0225] In one or more examples, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functionality may be stored as one or more instructions or code on or transmitted over a computer-readable medium and executed by a hardware-based processing unit. A computer-readable medium may include a computer-readable storage medium corresponding to: a tangible medium, such as a data storage medium; or a communication medium, including, for example, any medium that facilitates the transfer of a computer program from one place to another according to a communication protocol. In this way, a computer-readable medium may generally correspond to (1) a non-transitory tangible computer-readable storage medium or (2) a communication medium such as a signal or carrier wave. A data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[0226] By way of example, and not limitation, such computer-readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that is accessible by a computer. Furthermore, any connection is appropriately referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but rather refer to non-transient tangible storage media. As used herein, disks and optical discs include compact discs (CDs), laser discs, optical discs, digital universal discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0227] Instructions can be executed by one or more processors such as digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), or other equivalent integrated or discrete logic circuit systems. Therefore, as used herein, the term "processor" can refer to any of the foregoing structures or any other structure suitable for implementing the techniques described herein. Furthermore, in some aspects, the functionality described herein can be provided within dedicated hardware and / or software modules. Additionally, the techniques can be fully implemented in one or more circuit or logic elements.
[0228] The techniques disclosed herein can be implemented in a wide variety of devices or apparatuses, including wireless handheld devices, integrated circuits (ICs), or IC sets (e.g., chip sets). Various components, modules, or units are described in this disclosure to emphasize functional aspects of a device configured to perform the disclosed techniques, but these various components, modules, or units are not necessarily required to be implemented by different hardware units. Rather, as described above, various units may be combined within hardware units or provided by a collection of interoperable hardware units including one or more processors as described above, combined with suitable software and / or firmware.
[0229] It should be recognized that, depending on the example, certain actions or events of any of the techniques described herein may be performed in a different order, or may be added, combined, or omitted entirely (e.g., not all described actions or events are necessary for the practice of the technique). Furthermore, in some examples, actions or events may be performed concurrently, for example, through multithreading, interrupt handling, or multiple processors, rather than sequentially.
[0230] In some examples, computer-readable storage media include non-transitory media. The term "non-transitory" indicates that the storage medium is not embodied in a carrier wave or propagating signal. In some examples, non-transitory storage media may store data that can change over time (e.g., in RAM or cache).
[0231] Various embodiments have been described. These and other embodiments are within the scope of the appended claims.
Claims
1. A method comprising: A request to install an application on the first computing device is received by one or more processors of the first computing device, wherein the request is sent by a second computing device logged into the same user account as the first computing device; In response to receiving the request and based on the fact that the first computing device does not have sufficient available storage space to install the application, the one or more processors download the stub associated with the application from the computing system; as well as The stub associated with the application is installed by the first computing device.
2. The method of claim 1, further comprising: After the stub associated with the application is installed, the one or more processors re-attempt to install the application.
3. The method of claim 2, wherein re-attempting to install the application further comprises: Based on the fact that the first computing device has sufficient available storage space to install the application, the application is downloaded from the computing system by the one or more processors; as well as The application is installed by one or more processors.
4. The method of claim 3, wherein downloading the application from the computing system further comprises: The one or more processors determine that the first computing device cannot successfully download the application from the computing system; as well as In response to determining that the first computing device cannot successfully download the application from the computing system, the one or more processors may schedule the download of the application at a later time.
5. The method of any one of claims 2 to 4, wherein re-attempting to install the application further comprises: The one or more processors receive and initiate an instruction corresponding to user input associated with the stub of the application; as well as In response to receiving the instruction corresponding to the user input associated with launching the stub associated with the application, the one or more processors re-attempt to install the application.
6. The method of any one of claims 1 to 5, wherein downloading the stub associated with the application further comprises: The request for authentication by the one or more processors is sent by the second computing device, which is logged into the same user account as the first computing device; The request is verified by the one or more processors to be intended for the first computing device; as well as In response to successfully authenticating that the request was sent by a second computing device logged into the same user account as the first computing device and successfully verifying that the request was intended for the first computing device, the one or more processors download the stub associated with the application from the computing system.
7. The method of any one of claims 1 to 6, wherein receiving the request to install the application on the first computing device further comprises: The one or more processors query the computing system in response to the queued requests to install applications on the first computing device; as well as In response to a query to the computing system, the one or more processors receive the request to install the application from the computing system.
8. The method of any one of claims 1 to 7, wherein receiving the request to install the application on the first computing device further comprises: The request to install the application is received by one or more processors from the second computing device via a direct wireless connection between the first computing device and the second computing device.
9. The method of any one of claims 1 to 8, wherein downloading the stub associated with the application from the computing system based on the first computing device not having sufficient available storage space to install the application further comprises: The one or more processors determine that the first computing device does not have sufficient available storage space to install the application; as well as In response to determining that the first computing device does not have sufficient available storage space to install the application, the one or more processors download the stub associated with the application from the computing system.
10. A computing device, comprising: The memory stores instructions; as well as One or more processors, the one or more processors executing the instructions to: Receive a request to install an application on the computing device, wherein the request is sent by a second computing device logged into the same user account as the computing device; In response to receiving the request and based on the fact that the computing device does not have sufficient available storage space to install the application, a stub associated with the application is downloaded from the computing system; as well as Install the stub associated with the application.
11. The computing device of claim 10, wherein the one or more processors are further configured to: After installing the stub associated with the application, retry installing the application.
12. An apparatus comprising components for performing the method as described in any one of claims 1 to 9.
13. A computer program product comprising instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform the method as described in any one of claims 1 to 9.
14. A computer-readable storage medium storing instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform the method as described in any one of claims 1 to 9.
15. A method comprising: One or more processors of the computing system receive a request to download an application from the computing device; as well as In response to receiving the request and based on the fact that the computing device does not have sufficient available storage space to install the application, the one or more processors send a stub associated with the application to the computing device for installation on the computing device.