IP Library Granted Patent US 10,831,460
Granted Patent B2
US 10,831,460 · App. 16/166,877 · Granted Nov 10, 2020

System and method for extending the functionality of an application

Inventors: Adam Charles Cooper (Vancouver, CA); George Thucydides (North Vancouver, CA); Geoffrey Ross Mair (Vancouver, CA); Caleb Peter Buxton (Vancouver, CA)
Assignee: BMC Software, Inc.
G06F8/60G06F8/61G06F8/65G06F9/541
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,831,460
App. No.
16/166,877
Granted
Nov 10, 2020
Kind
B2
Abstract

A method of administering a computing system, including a plurality of computing devices. The method includes selecting an application for download to a computing device, prior to downloading the application, decompiling the application, searching for string patterns in the decompiled application, replacing the string patterns in the decompiled application with another string pattern, the another string pattern being configured to intercept at least one of a system event or an Application Programming Interface (API) call, and associating logic with the application. The logic is configured to interact with the application via the at least one system event or API call, the logic is configured to provide additional functions to the application, the logic is configured to be shared between the application and at least one other application, and the logic is stored separate from the application.

Claims (50)

1. A method, comprising:

selecting an application having an original application code for download to a computing device from a computing platform or an application datastore;

decompiling the selected application;

modifying the selected application to enable interaction with code of an application wrapper;

compiling an application package including the original application code of the selected application and the application wrapper code, wherein:

the application wrapper code includes code to add or modify a functionality of the selected application without requiring changes to the original application code, the functionality residing outside the application package or inside the application package, and

the application wrapper code controls interactions between one or more applications and the selected application through an Application Programming Interface (API); and

publishing the compiled application package as the selected application for downloading to the computing device, wherein at least some of the functionality resides outside the compiled application package and the functionality residing outside the compiled application package is modifiable without re-compiling the compiled application package.

2. The method of claim 1 , wherein the selected application is selected from a menu of applications.

3. The method of claim 1 , wherein the downloading is performed indirectly via an intermediate server.

4. The method of claim 1 , wherein the application wrapper code is configured to verify that the computing device is authorized to download the application.

5. The method of claim 1 , wherein the application wrapper code is configured to control storage of data associated with the selected application in the computing device.

6. The method of claim 5 , wherein the data is fetched by the selected application.

7. The method of claim 5 , wherein the data is generated by the selected application.

8. The method of claim 5 , wherein the controlling of the storage of data includes prohibiting storage of data associated with the selected application in the computing device.

9. The method of claim 8 , wherein the API is configured to at least one of cut, copy and paste data between or within the one or more applications, and

the application wrapper code is configured to interact with the API in order to control one of the cut, copy and paste data between or within the one or more applications.

10. The method of claim 9 , wherein

the API is configured to control file sharing between or within the one or more applications, and

the application wrapper code is configured to interact with the API in order to control file sharing between or within the one or more applications.

11. A computing system comprising:

a processor; and

code segments, that when executed by the processor:

select an application having an original application code for download to a computing device from a computing platform or an application datastore;

decompile the selected application;

modify the selected application to enable interaction with code of an application wrapper;

compile an application package including the original application code of the selected application and the application wrapper code, wherein:

the application wrapper code includes code to add or modify a functionality of the selected application without requiring changes to the original application code, the functionality residing outside the application package or inside the application package, and

the application wrapper code controls interactions between one or more applications and the selected application through an Application Programming Interface (API); and

publish the compiled application package as the selected application for downloading to the computing device, wherein at least some of the functionality resides outside the compiled application package and the functionality residing outside the compiled application package is modifiable without re-compiling the compiled application package.

12. The system of claim 11 , wherein the selected application is selected from a menu of applications.

13. The system of claim 11 , wherein the downloading is performed indirectly via an intermediate server.

14. The system of claim 11 , wherein the application wrapper code is configured to verify that the computing device is authorized to download the selected application.

15. The system of claim 11 , wherein the application wrapper code is configured to control storage of data associated with the selected application in the computing device.

16. The system of claim 11 , wherein the application wrapper code is configured to prohibit storage of data associated with the selected application in the computing device.

17. The system of claim 11 , wherein the application wrapper code is configured to control access to the API.

18. The system of claim 17 , wherein

the API is configured to at least one of cut, copy and paste data between or within the one or more applications, and

the application wrapper code is configured to interact with the API in order to control one of the cut, copy and paste data between or within the one or more applications.

19. The system of claim 17 , wherein

the API is configured to control file sharing between or within the one or more applications, and

the application wrapper code is configured to interact with the API in order to control file sharing between or within the one or more applications.

20. A non-transitory computer-readable storage medium having stored thereon computer executable program code which, when executed on a computer system, causes the computer system to perform steps comprising:

selecting an application having an original application code for download to a computing device from a computing platform or an application datastore;

decompiling the selected application;

modifying the selected application to enable interaction with code of an application wrapper;

compiling an application package including the original application code of the selected application and the application wrapper code, wherein

the application wrapper code includes code to add or modify a functionality of the selected application without requiring changes to the original application code, the functionality residing outside the application package or inside the application package, and

the application wrapper code controls interactions between one or more applications and the selected application through an Application Programming Interface (API); and

publishing the compiled application package as the selected application for downloading to the computing device, wherein at least some of the functionality resides outside the compiled application package and the functionality residing outside the compiled application package is modifiable without re-compiling the compiled application package.

Assignments (17)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Sep 10, 2019
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 050327/0634 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED ON REEL 047362 FRAME 0685. ASSIGNOR(S) HEREBY CONFIRMS THE NATURE OF CONVEYANCE WAS A COMPANY TO COMPANY ASSIGNMENT, NOT A COMPANY CHANGE OF NAME. Recorded Mar 7, 2019
From: PARTNERPEDIA SOLUTIONS INC.
To: BMC PARIS ACQUISITION ULC
Reel/Frame 048535/0744 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2019
From: BMC PARIS ACQUISITION ULC
To: BMC SOFTWARE ACQUISITION, L.L.C.
Reel/Frame 048533/0638 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE SHOULD BE COMPANY TO COMPANY PREVIOUSLY RECORDED AT REEL: 47362 FRAME: 711. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 7, 2019
From: BMC SOFTWARE ACQUISITION, L.L.C.
To: BMC SOFTWARE, INC.
Reel/Frame 048535/0889 →
CHANGE OF NAME Recorded Oct 31, 2018
From: PARTNERPEDIA SOLUTIONS INC.
To: BMC PARIS ACQUISITION ULC
Reel/Frame 047362/0685 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2018
From: COOPER, ADAM CHARLES; THUCYDIDES, GEORGE; MAIR, GEOFF ROSS; BUXTON, CALEB PETER
To: PARTNERPEDIA SOLUTIONS INC.
Reel/Frame 047362/0676 →
CHANGE OF NAME Recorded Oct 31, 2018
From: BMC SOFTWARE ACQUISITION, L.L.C.
To: BMC SOFTWARE, INC.
Reel/Frame 047362/0711 →