IP Library Granted Patent US 10,846,074
Granted Patent B2
US 10,846,074 · App. 14/275,890 · Granted Nov 24, 2020

Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client

Inventors: Griffin Dorman (San Francisco, CA); Eric Vandenberg (Mountain View, CA); Florian Jourda (San Fransicso, CA); Kunal Parmar (San Jose, CA); Dave Sawyer (Mountain View, CA); Benjamin Campbell Smith (Mountain View, CA)
Assignee: Box, Inc.
G06F8/65G06F9/445G06F16/178H04L63/123H04L67/10H04W4/60H04L63/0823H04L63/166
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,846,074
App. No.
14/275,890
Granted
Nov 24, 2020
Kind
B2
Abstract

Systems and methods to automatically upgrade, or update a synchronization client to a cloud-based platform are provided. The automatic upgrading can be provided to a personal or an enterprise-level synchronization client. The synchronization client is implemented in a manner that is silent, secure and fault tolerant. In one embodiment, the disclosed technology includes an executable process to download the update, verify the contents, and apply the update. The contents can be verified by checking the certificate on any binary. The systems and methods further include identification and handling of items to be ignored by the synchronization client for synchronization with a cloud-based platform. In some embodiments, files and folders which typically should not be synchronized are identified and removed from the synchronization process in an effective manner.

Claims (45)

1. A computer-implemented method of facilitating upgrades to a synchronization client in a cloud-based environment, the method comprising:

checking, by a synchronization executable component of the synchronization client, a file to determine a number of previous unsuccessful attempts to update the synchronization client, wherein the synchronization client executes on a client device and the synchronization executable component enables synchronization of one or more items stored locally on the client device with the cloud-based environment;

checking, by the synchronization executable component of the synchronization client, for available updates of the synchronization client on the cloud-based platform;

upon verifying from the file that the number of previous unsuccessful attempts to install the available updates of the synchronization client is less than a threshold limit:

storing, by the synchronization executable component of the synchronization client, the updates of the synchronization client on the client device;

launching, by the synchronization executable component of the synchronization client, an update component of the synchronization client, the update component enables updating of at least one of the synchronization executable component or the update component of the synchronization client;

verifying, by the update component of the synchronization client, the updates of the synchronization client, wherein verifying the updates includes verifying a hash;

installing, by the update component of the synchronization client on the client device, the updates of the synchronization client; and

in response to determining that the number of previous unsuccessful attempts to install the available updates of the synchronization client equals or exceeds the threshold limit, discontinuing, by the update component of the synchronization client, attempts to install the available updates of the synchronization client, continue checking, by the synchronization executable of the synchronization client, for available updates of the synchronization client on the cloud-based platform, and, when a new update of the synchronization client is available, storing, by the synchronization executable of the synchronization client, the new update of the synchronization client on the electronic device, launching, by the synchronization executable of the synchronization client, the update component, verifying, by the update component of the synchronization client, the new update of the synchronization client, installing, by the update component of the synchronization client on the client device, the new update of the synchronization client, and in response to detection of an error condition impacting the new update of the synchronization client, restoring, by the update component of the synchronization client, the synchronization client to a functional state without interruption of the synchronization executable of the synchronization client by the error condition, and incrementing, by the update component of the synchronization client, the number of previous unsuccessful attempts to update the synchronization client in the file.

2. The computer implemented method of claim 1 , wherein the storing the updates includes downloading the updates using a secure connection.

3. The computer implemented method of claim 1 , wherein the installing the updates includes unpacking binary files from the stored updates.

4. The computer implemented method of claim 1 , wherein the installing the updates occurs for a subset of the users of the synchronization client.

5. The computer implemented method of claim 1 , wherein the checking for updates is performed by a version checker, the storing the updates and the verifying the updates is performed by a downloader, the installing the updates is performed by an installer.

6. The computer implemented method of claim 1 , wherein if the installing the updates fails, reverting to a previous version of the synchronization client.

7. The computer implemented method of claim 1 , wherein if the installing the updates succeeds, the synchronization client is automatically launched and any temporary stored files are deleted.

8. The computer implemented method of claim 1 , wherein if the installing the updates succeeds, a notification to the cloud-based environment within a preset amount of time.

9. A non-transitory machine readable storage medium encoded with instructions for performing a method of facilitating upgrades to a synchronization client in a cloud-based environment, the instructions configured to:

checking, by a synchronization executable component of the synchronization client, a file to determine a number of previous unsuccessful attempts to update the synchronization client, wherein the synchronization client executes on a client device and the synchronization executable component enables synchronization of one or more items stored locally on the client device with the cloud-based environment;

checking, by the synchronization executable component of the synchronization client, for available updates of the synchronization client on the cloud-based platform;

upon verifying from the file that the number of previous unsuccessful attempts to install the available updates of the synchronization client is less than a threshold limit:

storing, by the synchronization executable component of the synchronization client, the updates of the synchronization client on the client device;

launching, by the synchronization executable component of the synchronization client, an update component of the synchronization client, the update component enables updating of at least one of the synchronization executable component or the update component of the synchronization client;

verifying, by the update component of the synchronization client, the updates of the synchronization client, wherein verifying the updates includes verifying a hash;

installing, by the update component of the synchronization client on the client device, the updates of the synchronization client; and

in response to determining that the number of previous unsuccessful attempts to install the available updates of the synchronization client equals or exceeds the threshold limit, discontinuing, by the update component of the synchronization client, attempts to install the available updates of the synchronization client, continue checking, by the synchronization executable of the synchronization client, for available updates of the synchronization client on the cloud-based platform, and, when a new update of the synchronization client is available, storing, by the synchronization executable of the synchronization client, the new update of the synchronization client on the electronic device, launching, by the synchronization executable of the synchronization client, the update component, verifying, by the update component of the synchronization client, the new update of the synchronization client, installing, by the update component of the synchronization client on the client device, the new update of the synchronization client, and in response to detection of an error condition impacting the new update of the synchronization client, restoring, by the update component of the synchronization client, the synchronization client to a functional state without interruption of the synchronization executable of the synchronization client by the error condition, and incrementing, by the update component of the synchronization client, the number of previous unsuccessful attempts to update the synchronization client in the file.

10. The non-transitory machine readable storage medium of claim 9 , wherein the instructions to store the updates include instructions to download the updates using a secure connection.

11. The non-transitory machine readable storage medium of claim 9 , wherein the instructions to install the updates include instructions to unpack binary files from the stored updates.

12. A system comprising:

a processor; and

a memory coupled with and readable by the processor and storing therein a set of instructions which, when executed by the processor, causes the processor to facilitate upgrades to a synchronization client in a cloud-based environment by:

checking, by a synchronization executable component of the synchronization client, a file to determine a number of previous unsuccessful attempts to update the synchronization client, wherein the synchronization client executes on a client device and the synchronization executable component enables synchronization of one or more items stored locally on the client device with the cloud-based environment;

checking, by the synchronization executable component of the synchronization client, for available updates of the synchronization client on the cloud-based platform;

upon verifying from the file that the number of previous unsuccessful attempts to install the available updates of the synchronization client is less than a threshold limit:

storing, by the synchronization executable component of the synchronization client, the updates of the synchronization client on the client device;

launching, by the synchronization executable component of the synchronization client, an update component of the synchronization client, the update component enables updating of at least one of the synchronization executable component or the update component of the synchronization client;

verifying, by the update component of the synchronization client, the updates of the synchronization client, wherein verifying the updates includes verifying a hash;

installing, by the update component of the synchronization client on the client device, the updates of the synchronization client; and

in response to determining that the number of previous unsuccessful attempts to install the available updates of the synchronization client equals or exceeds the threshold limit, discontinuing, by the update component of the synchronization client, attempts to install the available updates of the synchronization client, continue checking, by the synchronization executable of the synchronization client, for available updates of the synchronization client on the cloud-based platform, and, when a new update of the synchronization client is available, storing, by the synchronization executable of the synchronization client, the new update of the synchronization client on the electronic device, launching, by the synchronization executable of the synchronization client, the update component, verifying, by the update component of the synchronization client, the new update of the synchronization client, installing, by the update component of the synchronization client on the client device, the new update of the synchronization client, and in response to detection of an error condition impacting the new update of the synchronization client, restoring, by the update component of the synchronization client, the synchronization client to a functional state without interruption of the synchronization executable of the synchronization client by the error condition, and incrementing, by the update component of the synchronization client, the number of previous unsuccessful attempts to update the synchronization client in the file.

13. The system of claim 12 , wherein the storing the updates includes downloading the updates using a secure connection.

14. The system of claim 12 , wherein the installing the updates includes unpacking binary files from the stored updates.

15. The system of claim 12 , wherein the installing the updates occurs for a subset of the users of the synchronization client.

16. The system of claim 12 , wherein the checking for updates is performed by a version checker, the storing the updates and the verifying the updates is performed by a downloader, the installing the updates is performed by an installer.

17. The system of claim 12 , wherein if the installing the updates fails, reverting to a previous version of the synchronization client.

18. The system of claim 12 , wherein if the installing the updates succeeds, the synchronization client is automatically launched and any temporary stored files are deleted.

19. The system of claim 12 , wherein if the installing the updates succeeds, a notification to the cloud-based environment within a preset amount of time.

Assignments (5)
SECURITY INTEREST Recorded Jul 26, 2023
From: BOX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 064389/0686 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2018
From: DORMAN, GRIFFIN; VANDENBERG, ERIC; PARMAR, KUNAL; SAWYER, DAVE; SMITH, BENJAMIN CAMPBELL
To: BOX, INC.
Reel/Frame 045527/0641 →
RELEASE OF SECURITY INTEREST Recorded Dec 8, 2015
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: BOX, INC.
Reel/Frame 037237/0503 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER FROM 14308038 AND REPLACE WITH 14304038 PREVIOUSLY RECORDED AT REEL: 034590 FRAME: 0250. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 30, 2014
From: BOX, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 034769/0809 →
PATENT SECURITY AGREEMENT Recorded Dec 9, 2014
From: BOX, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 034590/0250 →
Continuity (2)
Provisional Application 61822170 · May 10, 2013
Related Publication 20150339113A1 · Nov 26, 2015