IP Library Granted Patent US 10,922,065
Granted Patent B1
US 10,922,065 · App. 16/598,137 · Granted Feb 16, 2021

Methods and systems for identifying software product installation instances

Inventors: Duane Mulder (Ottawa, CA); Aaron Humphrey Pesa (Ottawa, CA)
Assignee: BlackBerry Limited
G06F8/61
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,922,065
App. No.
16/598,137
Granted
Feb 16, 2021
Kind
B1
Abstract

Methods and systems for identifying individual installation instances of a software product. A plurality of consecutive heartbeat messages is received from an installation instance. Each heartbeat message includes a respective identifier that was transmitted to the installation instance in response to a previous heartbeat message. In response to each heartbeat message, a unique identifier is generated. The unique identifier is linked, in a historical list of identifiers, to the respective identifier. The unique identifier is also transmitted to the installation instance to be used as the next identifier in the plurality of heartbeat messages.

Claims (61)

1. A computer-implemented method of identifying an installation instance of a software product, the method comprising:

receiving a plurality of consecutive heartbeat messages from the installation instance indicating that the installation instance is running, each particular heartbeat message of the plurality of heartbeat messages comprising a respective identifier transmitted to the installation instance in response to a previous heartbeat message in the plurality of heartbeat messages; and

in response to receiving each particular heartbeat message of the plurality of heartbeat messages:

generating a unique identifier;

linking, in a historical list of identifiers, the unique identifier to the respective identifier in the particular heartbeat message; and

transmitting the unique identifier to the installation instance to be used as the next identifier in the plurality of heartbeat messages.

2. The method of claim 1 , wherein linking, in the historical list of identifiers, the unique identifier to the respective identifier in the particular heartbeat message comprises appending the unique identifier to the historical list of identifiers.

3. The method of claim 1 , wherein the installation instance is a first installation instance, further comprising:

receiving a heartbeat message from a second installation instance of the software product indicating that the second installation instance is running, the heartbeat message comprising one of the unique identifiers transmitted to the first installation instance; and

in response to receiving the heartbeat message from a second installation instance:

generating a unique identifier for use as the identifier in a next heartbeat message from the second installation instance;

linking, in the historical list of identifiers, the unique identifier to the one of the unique identifiers transmitted to the first installation instance; and

transmitting the unique identifier to the second installation instance for use as the identifier in the next heartbeat message from the second installation instance.

4. The method of claim 3 , wherein one of the first installation instance and the second installation instance is installed on a device and the other installation instance is installed on a clone of the device.

5. The method of claim 3 , further comprising:

in response to receiving each particular heartbeat message of the plurality of heartbeat messages, prior to linking, in the historical list of identifiers, the unique identifier for transmission to the second installation instance to the one of the unique identifiers transmitted to the first installation instance:

determining that the respective identifier in the particular heartbeat message corresponds to an entry in the historical list of identifiers.

6. The method of claim 3 , further comprising:

in response to receiving each particular heartbeat message of the plurality of heartbeat messages, prior to linking, in the historical list of identifiers, the unique identifier for transmission to the second installation instance to the one of the unique identifiers transmitted to the first installation instance:

determining that the respective identifier in the particular heartbeat message does not correspond to an entry in the historical list of identifiers; and

generating a notification indicating a violation of a software license agreement.

7. The method of claim 1 , wherein each message of the plurality of heartbeat messages is received at a regular interval.

8. The method of claim 1 , further comprising associating each unique identifier with a timestamp.

9. The method of claim 8 , further comprising determining a software license violation based on the historical list of identifiers and the timestamps.

10. The method of claim 1 , further comprising:

generating a notification indicating the number of installation instances of the software product over a particular period of time.

11. A system for identifying an installation instance of a software product, the system comprising:

a memory;

a processor coupled with the memory, the processor configured to:

receive a plurality of consecutive heartbeat messages from the installation instance indicating that the installation instance is running, each particular heartbeat message of the plurality of heartbeat messages comprising a respective identifier transmitted to the installation instance in response to a previous heartbeat message in the plurality of heartbeat messages; and

in response to receiving each particular heartbeat message of the plurality of heartbeat messages:

generate a unique identifier;

link, in a historical list of identifiers, the unique identifier to the respective identifier in the particular heartbeat message; and

transmit the unique identifier to the installation instance to be used as the next identifier in the plurality of heartbeat messages.

12. The system of claim 11 , wherein the processor configured to link, in the historical list of identifiers, the unique identifier to the respective identifier in the particular heartbeat message comprises the processor configured to append the unique identifier to the historical list of identifiers.

13. The system of claim 11 , wherein the installation instance is a first installation instance, the processor further configured to:

receive a heartbeat message from a second installation instance of the software product indicating that the second installation instance is running, the heartbeat message comprising one of the unique identifiers transmitted to the first installation instance; and

in response to receiving the heartbeat message from a second installation instance:

generate a unique identifier for use as the identifier in a next heartbeat message from the second installation instance;

link, in the historical list of identifiers, the unique identifier to the one of the unique identifiers transmitted to the first installation instance; and

transmit the unique identifier to the second installation instance for use as the identifier in the next heartbeat message from the second installation instance.

14. The system of claim 13 , wherein one of the first installation instance and the second installation instance is installed on a device and the other installation instance is installed on a clone of the device.

15. The system of claim 13 , the processor further configure to:

in response to receiving each particular heartbeat message of the plurality of heartbeat messages, prior to linking, in the historical list of identifiers, the unique identifier for transmission to the second installation instance to the one of the unique identifiers transmitted to the first installation instance:

determine that the respective identifier in the particular heartbeat message corresponds to an entry in the historical list of identifiers.

16. The system of claim 13 , the processor further configured to:

in response to receiving each particular heartbeat message of the plurality of heartbeat messages, prior to linking, in the historical list of identifiers, the unique identifier for transmission to the second installation instance to the one of the unique identifiers transmitted to the first installation instance:

determine that the respective identifier in the particular heartbeat message does not correspond to an entry in the historical list of identifiers; and

generate a notification indicating a violation of a software license agreement.

17. The system of claim 11 , wherein each message of the plurality of heartbeat messages is received at a regular interval.

18. The system of claim 11 , the processor further configured to:

associate each unique identifier with a timestamp; and

determine a software license violation based on the historical list of identifiers and the timestamps.

19. The system of claim 11 , the processor further configured to:

generate a notification indicating the number of installation instances of the software product over a particular period of time.

20. A non-transitory computer-readable storage medium storing processor-executable instructions to identify an installation instance of a software product, wherein the processor-executable instructions, when executed by a processor, are to cause the processor to:

receive a plurality of consecutive heartbeat messages from the installation instance indicating that the installation instance is running, each particular heartbeat message of the plurality of heartbeat messages comprising a respective identifier transmitted to the installation instance in response to a previous heartbeat message in the plurality of heartbeat messages; and

in response to receiving each particular heartbeat message of the plurality of heartbeat messages:

generate a unique identifier;

link, in a historical list of identifiers, the unique identifier to the respective identifier in the particular heartbeat message; and

transmit the unique identifier to the installation instance to be used as the next identifier in the plurality of heartbeat messages.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2019
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO INC.
Reel/Frame 050799/0754 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2019
From: PESA, AARON HUMPHREY; MULDER, DUANE
To: QNX SOFTWARE SYSTEMS LTD.
Reel/Frame 050677/0624 →