Table 1610 Office Add-in

App
Base Application
Namespace
Microsoft.CRM.Outlook
Versions
17-28

Fields, 10Keys, 1Procedures, 5Obsolete, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/CRM/Outlook/OfficeAddin.Table.al137 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.CRM.Outlook;

using System;
using System.Integration;

table 1610 "Office Add-in"
{
    Caption = 'Office Add-in';
    DataClassification = CustomerContent;
    DataPerCompany = false;
    ReplicateData = false;

    fields
    {
        field(1; "Application ID"; Guid)
        {
            Caption = 'Application ID';
            ToolTip = 'Specifies the application that is being added.';
        }
        field(2; Name; Text[50])
        {
            Caption = 'Name';
            ToolTip = 'Specifies the name of the add-in.';
        }
        field(3; Description; Text[250])
        {
            Caption = 'Description';
            ToolTip = 'Specifies a description of the record.';
        }
        field(5; Version; Text[20])
        {
            Caption = 'Version';
            ToolTip = 'Specifies the version of the record.';
        }
        field(6; "Manifest Codeunit"; Integer)
        {
            Caption = 'Manifest Codeunit';
            ToolTip = 'Specifies the codeunit where the Office add-in is defined for deployment.';
        }
        field(10; "Deployment Date"; Date)
        {
            Caption = 'Deployment Date';
        }
        field(12; "Default Manifest"; BLOB)
        {
            Caption = 'Default Manifest';
        }
        field(13; Manifest; BLOB)
        {
            Caption = 'Manifest';
        }
        field(14; Breaking; Boolean)
        {
            Caption = 'Breaking';
        }
        field(15; Deploy; Boolean)
        {
            Caption = 'Deploy';
            ToolTip = 'Specifies whether the add-in will be deployed.';
            Description = 'Specifies whether to deploy this add-in.';
            InitValue = true;
        }
    }

    keys
    {
        key(Key1; "Application ID")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    procedure GetAddins(): Boolean
    var
        AddinManifestManagement: Codeunit "Add-in Manifest Management";
    begin
        if IsEmpty() then
            AddinManifestManagement.CreateDefaultAddins(Rec);
        exit(FindSet());
    end;

    procedure GetDefaultManifestText() ManifestText: Text
    var
        ManifestInStream: InStream;
    begin
        CalcFields("Default Manifest");
        "Default Manifest".CreateInStream(ManifestInStream, TextEncoding::UTF8);
        ManifestInStream.Read(ManifestText);
    end;

    procedure SetDefaultManifestText(ManifestText: Text)
    var
        ManifestOutStream: OutStream;
    begin
        Clear("Default Manifest");
        "Default Manifest".CreateOutStream(ManifestOutStream, TextEncoding::UTF8);
        ManifestOutStream.WriteText(ManifestText);
    end;

    [Scope('OnPrem')]
    procedure IsBreakingChange(UserVersion: Text) IsBreaking: Boolean
    var
        Components: DotNet Array;
        UserComponents: DotNet Array;
        Separator: DotNet String;
        TempString: DotNet String;
        i: Integer;
    begin
        Separator := '.';
        TempString := UserVersion;
        UserComponents := TempString.Split(Separator.ToCharArray());
        TempString := Version;
        Components := TempString.Split(Separator.ToCharArray());

        if (Components.Length() < 3) or (UserComponents.Length() < 3) then begin
            Session.LogMessage('0000BOQ', StrSubstNo(VersionFormatMismatchTelemetryErr, UserVersion, Version), Verbosity::Error, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', OfficeManagement.GetOfficeAddinTelemetryCategory());
            exit(true);
        end;

        for i := 0 to 2 do
            IsBreaking := IsBreaking or (Format(UserComponents.GetValue(i)) <> Format(Components.GetValue(i)));
    end;

    var
        OfficeManagement: Codeunit "Office Management";
        VersionFormatMismatchTelemetryErr: Label 'The version numbers have an unexpected format. UserVersion: %1, Version: %2.', Locked = true;
}