Application Lifecycle Management

Add App to Catalog (Code Example)

// Get the sppkg file
var fileContent = $REST.Web().getFileByServerRelativeUrl("/sites/dev/siteassets/pkgs/demo-webpart.sppkg").content().execute(function(data) {
    // Add the app file
    var appFile = $REST.Web().TenantAppCatalog().add("demo-webpart.sppkg", true, content).executeAndWait();

    // Get the context for the app catalog, this is required since we are doing a cross site-collection request
    $REST.ContextInfo.getWeb("/sites/appcatalog").execute(function(ctx) {
        // Get the app
        $REST.Web("/sites/appcatalog", { requestDigest: ctx.GetContextWebInformation.FormDigestValue }).TenantAppCatalog().AvailableApps()
            .query({ Filter: "Title eq 'demo-webpart-client-side-solution'" }).execute(function (apps) {
                // Get the app
                var app = apps.results[0];
                if(app == null) { return; }

                // Deploy the app
                app.deploy().execute(function (response) {
                    // App is deployed
                    console.log("The app has been deployed.");
                }, true)
        });
    });
});

Tenant App Catalog

The tenant app catalog is available from the ‘Web’ property.

  • add(overwrite: boolean, url: string, content: ArrayBuffer):File
    • Method to add an app to the catalog
  • AvailableApps(): TenantApps
    • List available packages from tenant app catalog
  • AvailableApps(‘guid’): TenantApp
    • Returns an available package from the tenant app catalog
  • getById(‘guid’): TenantApp
    • Returns an available package from the tenant app catalog
  • SiteCollectionAppCatalogsSites: any
    • Need to find the documentation for this property

Tenant Apps

  • getById(‘guid’): TenantApp
    • Returns an available package from the tenant app catalog

Tenant App

Properties

  • AppCatalogVersion: string
    • The app version.
  • CanUpgrade: boolean
    • Flag indicating an upgrade is available.;
  • CurrentVersionDeployed: boolean
    • Flag indicating if the current version is deployed.
  • Deployed: boolean
    • Flag indicating if the app is deployed.
  • ID: string
    • The app id.
  • InstalledVersion: string
    • The installed version.
  • IsClientSideSolution: boolean
    • Flag indicating if this is a client-side solution.
  • Title: string
    • The app title.

Methods

  • deploy()
    • Enable solution to be available to install to specific sites. This API is designed to be executed in the context of the tenant app catalog site.
  • install()
    • Install a solution package with specific identifier from tenant app catalog to the site based on URL context. This REST call can be executed in the context of the site where the install operation should happen.
  • remove()
    • Remove the solution package from the tenant app catalog. This API is designed to be executed in the context of the tenant app catalog site.
  • retract()
    • Retract solution to be available from the sites. This API is designed to be executed in the context of the tenant app catalog site.
  • uninstall()
    • Uninstall a solution package from the site. This REST call can be executed in the context of the site where the uninstall operation should happen.
  • upgrade()
    • Upgrade a solution package from the site to a newer version available in the tenant app catalog. This REST call can be executed in the context of the site where the upgrade operation should happen.