次の方法で共有


エンタープライズ アプリの管理

この記事では、Windows の Mobile デバイス管理 (MDM) 機能の主な機能の 1 つである、すべての Windows デバイスでアプリのライフサイクルを管理する機能について説明します。 これには、MDM を使用してネイティブに管理できるストア アプリと非ストア アプリの両方が含まれます。

Windows MDM を使用してアプリのライフサイクルを管理することで、管理者は更新プログラムの展開と管理、古いアプリまたは未使用のアプリの削除、およびすべてのデバイスに、organizationのニーズを満たすために必要なアプリがインストールされていることを確認できます。 この機能により、アプリ管理プロセスが合理化され、IT プロフェッショナルの時間と労力が節約されます。

アプリケーション管理の目標

Windows では、管理サーバーで次の機能を利用できます。

  • オフライン ストア アプリとライセンスを展開する
  • 基幹業務 (LOB) アプリ (ストア以外のアプリ) を展開する
  • ユーザーのすべてのアプリのインベントリ (ストア アプリと非ストア アプリ)
  • デバイスのすべてのアプリのインベントリ (ストア アプリとストア以外のアプリ)
  • ユーザーのすべてのアプリをアンインストールする (ストア アプリと非ストア アプリ)
  • Windows デスクトップ エディション (ホーム、Pro、Enterprise、Education) を実行しているデバイスのすべてのユーザーにアプリをインストールするようにアプリをプロビジョニングする
  • Windows デスクトップ エディションを実行しているデバイスでプロビジョニングされたアプリを削除する

インベントリ アプリ

Windows を使用すると、ユーザーに展開されたすべてのアプリをインベントリし、Windows デバイスのすべてのユーザーのすべてのアプリをインベントリできます。 EnterpriseModernAppManagement 構成サービス プロバイダー (CSP) では、パッケージ化されたアプリがインベントリされ、MSI または実行可能ファイルを介してインストールされた従来の Win32 アプリは含まれません。 アプリがインベントリされると、次のアプリ分類に基づいて分離されます。

  • ストア: Microsoft Store から取得したアプリ。
  • nonStore: Microsoft Store から取得されなかったアプリ。
  • システム: オペレーティング システムの一部であり、アンインストールできないアプリ。 この分類は読み取り専用であり、インベントリのみ可能です。

各アプリは、1 つのパッケージ ファミリ名と 1 つ以上のパッケージフルネームで識別され、アプリは配信元に基づいてグループ化されます。 EnterpriseModernAppManagement CSP では、これらの分類がノードとして表示されます。

インベントリは、パッケージのフル ネームを介して AppManagement ノードから任意のレベルで再帰的に実行できます。 特定の属性のみをインベントリすることもできます。 インベントリはパッケージの完全な名前に固有であり、パッケージ ファミリ名の下に該当するバンドルおよびリソース パックが一覧表示されます。

各ノードの詳細については、 EnterpriseModernAppManagement CSP に記載されている詳細な説明を参照してください。

アプリ インベントリ

EnterpriseModernAppManagement CSP を使用して、ユーザーまたはデバイス用にインストールされているすべてのアプリを照会できます。 このクエリは、MDM やその他の方法を使用してインストールされた場合でも、すべてのアプリを返します。 インベントリは、ユーザー レベルまたはデバイス レベルで実行できます。 デバイス レベルのインベントリは、デバイス上のすべてのユーザーの情報を返します。

デバイスの完全なインベントリを実行すると、インストールされているハードウェアとアプリの数に基づいてリソースを集中的に消費する可能性があります。 返されるデータは大きくなる場合もあります。 これらの要求をチャンクして、クライアントとネットワーク トラフィックへの影響を軽減することができます。

  • デバイス上のすべてのアプリのクエリの例。

    <!-- Get all apps under AppManagement -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    
  • ユーザーの特定のアプリのクエリの例。

    <!-- Get all information of a specific app for a user -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    

ライセンス インベントリを格納する

EnterpriseModernAppManagement CSP を使用して、ユーザーまたはデバイスにインストールされているすべてのアプリ ライセンスを照会できます。 このクエリは、MDM またはその他の方法でインストールされたすべてのアプリ ライセンスを返します。 インベントリは、ユーザー レベルまたはデバイス レベルで実行できます。 デバイス レベルのインベントリは、デバイス上のすべてのユーザーの情報を返します。

各ノードの詳細については、「 EnterpriseModernAppManagement CSP」を参照してください。

CSP の LicenseID は、ライセンスのコンテンツ ID です。

  • デバイス上のすべてのアプリ ライセンスのクエリの例を次に示します。

    <!-- Get all app licenses for the device -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    
  • ユーザーのすべてのアプリ ライセンスのクエリの例を次に示します。

    <!-- Get a specific app license for a user -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    

デバイスでストア以外のアプリをインストールできるようにする

デプロイできるアプリには、次の 2 つの基本的な種類があります。

  • アプリを保存します。
  • エンタープライズ署名済みアプリ。

エンタープライズ署名済みアプリを展開するには、信頼できるアプリを許可する設定をデバイスで有効にする必要があります。 アプリは、Microsoft が承認したルート (Symantec など)、エンタープライズでデプロイされたルート、または自己署名されたアプリによって署名できます。 このセクションでは、非ストア アプリの展開用にデバイスを構成する手順について説明します。

ストア以外のアプリのデバイスのロックを解除する

Microsoft Store からではないアプリを展開するには、 ApplicationManagement/AllowAllTrustedApps ポリシーを構成する必要があります。 このポリシーでは、デバイス上に証明書へのチェーンがある場合に、デバイスにストア以外のアプリをインストールできます。 アプリは、デバイス上のルート証明書 (Symantec Enterprise など)、エンタープライズ所有のルート証明書、またはデバイスに展開されたピア信頼証明書で署名できます。 ユーザー ライセンスの展開の詳細については、「オフライン ライセンスをユーザーにデプロイする」を参照してください。

AllowAllTrustedApps ポリシーを使用すると、デバイス上の信頼されたPeopleの証明書によって信頼されているアプリ、またはデバイスの信頼されたルート内のルート証明書をインストールできます。 ポリシーは既定では構成されていません。つまり、Microsoft Store からのアプリのみをインストールできます。 管理サーバーが値を暗黙的に off に設定した場合、デバイスの設定パネルで設定が無効になります。

以下に例を示します。

<!-- Get policy (Default)-->
<Get>
<CmdID>1</CmdID>
<Item>
   <Target>
      <LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowAllTrustedApps?list=StructData</LocURI>
   </Target>
   </Item>
</Get>
<!-- Update policy -->
<Replace>
<CmdID>2</CmdID>
<Item>
   <Target>
      <LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowAllTrustedApps</LocURI>
   </Target>
   <Meta>
      <Format>int</Format>
      <Type>text/plain</Type>
   </Meta>
   <Data>1</Data>
</Item>
</Replace>

開発者モードでデバイスのロックを解除する

Windows デバイスでのアプリの開発に特別なライセンスが不要になった。 ポリシー CSP で ApplicationManagement/AllowDeveloperUnlock ポリシーを使用して、パッケージ化されていないアプリのデバッグと展開を有効にすることができます。

AllowDeveloperUnlock ポリシーを使用すると、デバイスで開発モードが有効になります。 AllowDeveloperUnlock は既定では構成されていません。これは、Microsoft Store アプリのみをインストールできることを意味します。 管理サーバーが値を明示的に off に設定した場合、デバイスの設定パネルで設定が無効になります。

Windows デバイスへのアプリの展開には、デバイス上の証明書へのチェーンが必要です。 アプリは、デバイス上のルート証明書 (Symantec Enterprise など)、エンタープライズ所有のルート証明書、またはデバイスに展開されたピア信頼証明書で署名できます。

次に例を示します。

<!-- Get policy (Default)-->
<Get>
  <CmdID>1</CmdID>
  <Item>
    <Target>
      <LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowDeveloperUnlock?list=StructData</LocURI>
    </Target>
  </Item>
</Get>
<!-- Update policy -->
<Replace>
  <CmdID>2</CmdID>
  <Item>
    <Target>
      <LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowDeveloperUnlock</LocURI>
    </Target>
    <Meta>
      <Format>int</Format>
      <Type>text/plain</Type>
    </Meta>
    <Data>1</Data>
  </Item>
</Replace>

アプリのインストール

アプリは、特定のユーザーまたはデバイスのすべてのユーザーにインストールできます。 アプリは Microsoft Store から直接インストールされます。 または、ローカル ディスク、UNC パス、HTTPS の場所など、ホストの場所からインストールされます。 EnterpriseModernAppManagement CSP の AppInstallation ノードを使用してアプリをインストールします。

ストアからユーザーにアプリを展開する

Microsoft Store から直接ユーザーにアプリをデプロイするには、管理サーバーが EnterpriseModernAppManagement CSP の AppInstallation ノードで Add and Exec コマンドを実行します。 この機能はユーザー コンテキストでのみサポートされ、デバイス コンテキストではサポートされません。

ビジネス向けストアからアプリを購入し、アプリがオンライン ライセンス用に指定されている場合は、アプリとライセンスを Microsoft Store から直接取得する必要があります。

ビジネス向け Microsoft Storeと教育機関向け Microsoft Storeは廃止されます。 詳細については、「2023 年 3 月 31 日に廃止されるビジネス向け Microsoft Storeと教育」を参照してください。

このシナリオの要件を次に示します。

  • アプリは、ビジネス向けストアのユーザー Microsoft Entra ID に割り当てられます。 ビジネス向けストアで、または管理サーバーを介して直接割り当てることができます。
  • デバイスには、Microsoft Store への接続が必要です。
  • Microsoft Store サービスは、デバイスで有効にする必要があります。 Microsoft Store の UI は、エンタープライズ管理者が無効にすることができます。
  • ユーザーは、Microsoft Entra ID を使用してサインインする必要があります。

以下に例を示します。

<Exec>
  <CmdID>1</CmdID>
  <Item>
    <Target>
      <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/StoreInstall</LocURI>
    </Target>
    <Meta>
      <Format xmlns="syncml:metinf">xml</Format>
    </Meta>
    <Data>
      <Application id="{ProductID}" flags="0" skuid=" " />
    </Data>
  </Item>
</Exec>

前のリリースからの変更を次に示します。

  1. {CatID}参照は、{ProductID}に更新する必要があります。 この値は、ビジネス向けストア管理ツールの一部として取得されます。
  2. フラグの値は、0 または 1 にすることができます。
    • 0: 管理ツールは、ストア for Business 同期に呼び戻して、ユーザーにアプリケーションのシートを割り当てます。
    • 1: 管理ツールは、ビジネス向けストア同期にコールバックして、ユーザーにアプリケーションのシートを割り当てません。 使用可能な場合、CSP はシートを要求します。
  3. skuidは、必要な新しいパラメーターです。 この値は、ビジネス向けストアから管理ツールへの同期の一部として取得されます。

オフライン ライセンスをユーザーに展開する

ビジネス向けストアからアプリを購入した場合は、アプリ ライセンスをデバイスに展開する必要があります。 アプリ ライセンスは、アプリの初期インストールの一部としてのみデプロイする必要があります。 更新中は、アプリのみがユーザーにデプロイされます。

SyncML では、 Exec コマンドで次の情報を指定する必要があります。

  • ライセンス ID - この ID は LocURI で指定されます。 オフライン ライセンスのライセンス ID は、ライセンス ファイルの "コンテンツ ID" と呼ばれます。 この情報は、ビジネス向けストアから Base 64 でエンコードされたライセンス ダウンロードから取得できます。
  • ライセンス コンテンツ - このコンテンツはデータ セクションで指定されます。 ライセンス コンテンツは、ライセンスの Base 64 でエンコードされた BLOB です。

オフライン ライセンスインストールの例を次に示します。

<Exec>
   <CmdID>1</CmdID>
   <Item>
      <Target>
         <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{LicenseID}/AddLicense</LocURI>
      </Target>
      <Meta>
         <Format xmlns="syncml:metinf">xml</Format>
      </Meta>
      <Data><License Content="{LicenseBlob}"></Data>
   </Item>
</Exec>

ホストされている場所からユーザーにアプリを展開する

ビジネス向けストアからアプリを購入し、アプリがオフライン ライセンスに指定されている場合、またはアプリがストア以外のアプリである場合は、アプリをホストされている場所から展開する必要があります。

このシナリオの要件を次に示します。

  • アプリの場所は、ローカル ファイル システム (C:\StagedApps\app1.appx)、UNC パス (\\server\share\app1.apx)、または HTTPS の場所 (https://contoso.com/app1.appx) のいずれかです。
  • ユーザーは、コンテンツの場所にアクセスするためのアクセス許可を持っている必要があります。 HTTP の場合は、登録に関連付けられている証明書を使用して、サーバー認証または証明書認証を使用できます。 HTTP の場所はサポートされていますが、認証要件がないため推奨されません。
  • デバイスは、Microsoft Store への接続、ストア サービス、または Microsoft Store UI を有効にする必要はありません。
  • ユーザーはログインする必要がありますが、Microsoft Entra ID との関連付けは必要ありません。

ストア以外のアプリを展開するには、デバイスのロックを解除するか、オフライン アプリを展開する前にアプリ ライセンスをデプロイする必要があります。 詳細については、「 オフライン ライセンスをユーザーにデプロイする」を参照してください。

登録解除時にアプリを適切に削除するには、パッケージ ファミリ名の [追加] コマンドが必要です。

  • 基幹業務アプリのインストールの例を次に示します。

    <!-- Add PackageFamilyName -->
    <Add>
       <CmdID>0</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}</LocURI>
          </Target>
       </Item>
    </Add>
    <!-- Install appx -->
    <Exec>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
          </Target>
          <Meta>
             <Format xmlns="syncml:metinf">xml</Format>
          </Meta>
          <Data><Application PackageUri="\\server\share\HelloWorld10.appx" /></Data>
       </Item>
    </Exec>
    
  • 依存関係を持つアプリのインストールの例を次に示します。

    <!-- Add PackageFamilyName -->
    <Add>
       <CmdID>0</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI>
          </Target>
       </Item>
    </Add>
    <!-- Install appx with deployment options and framework dependencies-->
    <Exec>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
          </Target>
          <Meta>
             <Format xmlns="syncml:metinf">xml</Format>
          </Meta>
          <Data>
             <Application PackageUri="\\server\share\HelloWorld10.appx" DeploymentOptions="0" >
                <Dependencies>
                          <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" />
                    <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx" />
                </Dependencies>
            </Application>
          </Data>
       </Item>
    </Exec>
    
  • 依存関係とオプションパッケージを含むアプリのインストールの例を次に示します。

    <!-- Add PackageFamilyName -->
    <Add>
       <CmdID>0</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI>
          </Target>
       </Item>
    </Add>
    <!-- Install appx with deployment options and framework dependencies-->
    <Exec>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
          </Target>
          <Meta>
             <Format xmlns="syncml:metinf">xml</Format>
          </Meta>
          <Data>
             <Application PackageUri="\\server\share\HelloWorld10.appx" DeploymentOptions="0" >
                <Dependencies>
                    <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" />
                    <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx" />
                </Dependencies>
                <OptionalPackages>
                    <Package PackageUri="\\server\share\OptionalPackage1.appx"
                             PackageFamilyName="/{PackageFamilyName}" />
                    <Package PackageUri="\\server2\share\OptionalPackage2.appx"
                             PackageFamilyName="/{PackageFamilyName}" />
                </OptionalPackages>
            </Application>
          </Data>
       </Item>
    </Exec>
    

デバイスのすべてのユーザーにアプリをプロビジョニングする

プロビジョニングを使用すると、アプリをデバイスにステージングすることができ、デバイスのすべてのユーザーは、次のサインイン時にアプリを登録できます。 この機能は、ビジネス向けストアから購入したアプリでのみサポートされており、アプリはオフライン ライセンスに指定されているか、アプリがストア以外のアプリです。 アプリは、ホストされている場所から提供する必要があります。 アプリはローカル システムとしてインストールされます。 ローカル ファイル共有にインストールするには、デバイスの "ローカル システム" が共有にアクセスできる必要があります。

このシナリオの要件を次に示します。

  • アプリの場所は、ローカル ファイル システム (C:\StagedApps\app1.appx)、UNC パス (\\server\share\app1.apx)、または HTTPS の場所 (https://contoso.com/app1.appx\) です。
  • ユーザーは、コンテンツの場所にアクセスするためのアクセス許可を持っている必要があります。 HTTP の場合は、登録に関連付けられている証明書を使用して、サーバー認証または証明書認証を使用できます。 HTTP の場所はサポートされていますが、認証要件がないため推奨されません。
  • デバイスは、Microsoft Store への接続を持っているか、サービスを保存する必要はありません。
  • デバイスには、Microsoft Entra ID またはドメイン メンバーシップは必要ありません。
  • 非ストア アプリの場合は、デバイスのロックを解除する必要があります。
  • Store オフライン アプリの場合は、アプリを展開する前に必要なライセンスをデプロイする必要があります。

ホストされている場所からデバイスのすべてのユーザーに対してアプリをプロビジョニングするために、管理サーバーはデバイス コンテキストの AppInstallation ノードで Add and Exec コマンドを実行します。 登録解除時にアプリを適切に削除するには、パッケージ ファミリ名の [追加] コマンドが必要です。

プロビジョニングされたアプリを削除しても、アプリが既にインストールされているユーザーからは削除されません。

  • アプリのインストールの例を次に示します。

    <!-- Add PackageFamilyName -->
    <Add>
        <CmdID>0</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI>
           </Target>
        </Item>
    </Add>
    <!-- Provision appx to device -->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
           </Target>
           <Meta>
              <Format xmlns="syncml:metinf">xml</Format>
           </Meta>
           <Data><Application PackageUri="\\server\share\HelloWorld10.appx" /></Data>
        </Item>
    </Exec>
    

    HostedInstall Exec コマンドには、埋め込み XML を必要とする Data ノードが含まれています。 データ XML の要件を次に示します。

    • アプリケーション ノードには、ローカル ファイルの場所、UNC、または HTTPS の場所を指定できる必要なパラメーター PackageURI があります。
    • 依存関係は、パッケージと共にインストールする必要がある場合に指定できます。 これは省略可能です。

    DeploymentOptions パラメーターは、ユーザー コンテキストでのみ使用できます。

  • 依存関係を持つアプリのインストールの例を次に示します。

    <!-- Add PackageFamilyName -->
    <Add>
        <CmdID>0</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName</LocURI>
           </Target>
        </Item>
    </Add>
    <!-- Provision appx with framework dependencies-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
           </Target>
           <Meta>
              <Format xmlns="syncml:metinf">xml</Format>
           </Meta>
           <Data>
              <Application PackageUri="\\server\share\HelloWorld10.appx" />
                 <Dependencies>
                          <Dependency PackageUri="\\server\share\HelloWorldFramework.appx" />
                    <Dependency PackageUri="\\server2\share\HelloMarsFramework.appx"/>
                 </Dependencies>
              </Application>
           </Data>
        </Item>
    </Exec>
    

アプリのインストールの状態を取得する

アプリのインストールが完了すると、Windows 通知が送信されます。 AppInstallation ノードを使用して の状態を照会することもできます。 クエリで取得できる情報の一覧を次に示します。

  • [状態] - アプリのインストールの状態を示します。
    • NOT_INSTALLED (0) - ノードが追加されましたが、実行は完了していません。
    • INSTALLING (1) - 実行は開始されましたが、デプロイは完了していません。 成功に関係なくデプロイが完了した場合、この値は更新されます。
    • FAILED (2) - インストールに失敗しました。 エラーの詳細は、LastError と LastErrorDescription にあります。
    • INSTALLED (3) - インストールが成功すると、このノードがクリーンアップされます。 クリーンアップ アクションが完了していない場合は、この状態が短時間表示されることがあります。
  • LastError - アプリデプロイ サーバーによって報告された最後のエラー。
  • LastErrorDescription - アプリのデプロイ サーバーによって報告された最後のエラーについて説明します。
  • 状態 - アプリのインストールの進行状況を示す整数。 HTTPS の場所の場合、この状態は推定ダウンロードの進行状況を示します。 状態はプロビジョニングには使用できません。また、ユーザー ベースのインストールでのみ使用されます。 プロビジョニングの場合、値は常に 0 です。

アプリが正常にインストールされると、ノードはクリーンアップされ、存在しなくなります。 アプリの状態は、 AppManagement ノードで報告できます。

  • 特定のアプリのインストールに対するクエリの例を次に示します。

    <!-- Get all app status under AppInstallation for a specific app-->
    <Get>
        <CmdID>2</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}?list=StructData</LocURI>
           </Target>
        </Item>
    </Get>
    
  • すべてのアプリ インストールのクエリの例を次に示します。

    <!-- Get all app status under AppInstallation-->
    <Get>
        <CmdID>2</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation?list=StructData</LocURI>
           </Target>
        </Item>
    </Get>
    

インストールの完了に関するアラート

アプリケーションのインストールが完了するまでに時間がかかる場合があります。 そのため、非同期的に実行されます。 Exec コマンドが完了すると、クライアントは、エラーか成功かに関係なく、状態の通知を管理サーバーに送信します。

アラートの例を次に示します。

<Alert>
    <CmdID>4</CmdID>
    <Data>1226</Data>
        <Item>
            <Source>
                <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/{PackageFamilyName}/HostedInstall</LocURI>
            </Source>
            <Meta>
                <Type xmlns="syncml:metinf">Reversed-Domain-Name:com.microsoft.mdm.EnterpriseHostedAppInstall.result</Type>
                <Format xmlns="syncml:metinf">int</Format>
            </Meta>
            <Data>0</Data>
        </Item>
</Alert>

ユーザー ベースのインストールの場合は、 ./User パスを使用し、アプリのプロビジョニングには、 ./Device パスを使用します。

データ フィールドの値 0 (ゼロ) は成功を示します。 それ以外の場合はエラー コードです。 エラーが発生した場合は、AppInstallation ノードから詳細を取得できます。

現時点では、ストア アプリのインストールに関するアラートは使用できません。

アプリをアンインストールする

Windows デバイスからユーザーからアプリをアンインストールできます。 アプリをアンインストールするには、CSP の AppManagement ノードからアプリを削除します。 AppManagement ノード内では、次のノードに従って、パッケージが配信元に基づいて編成されます。

  • AppStore - これらのアプリは Microsoft Store 用です。 アプリは、ストアから直接インストールすることも、ビジネス向けストアから企業に配信することもできます。
  • nonStore - Microsoft Store から取得されなかったこれらのアプリ。
  • システム - これらのアプリは OS の一部です。 これらのアプリをアンインストールすることはできません。

アプリをアンインストールするには、配信元ノード、パッケージ ファミリ名、パッケージのフル ネームでアプリを削除します。 XAP をアンインストールするには、パッケージ ファミリ名とパッケージのフル ネームの代わりに製品 ID を使用します。

ユーザーのすべてのバージョンのアプリをアンインストールする例を次に示します。

<!-- Uninstall App for a Package Family-->
<Delete>
   <CmdID>1</CmdID>
   <Item>
      <Target>
         <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}</LocURI>
      </Target>
   </Item>
</Delete>

-ユーザーの特定のバージョンのアプリをアンインストールする例を次に示します。

<!-- Uninstall App for a specific package full name-->
<Delete>
   <CmdID>1</CmdID>
   <Item>
      <Target>
         <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/{PackageFullName}</LocURI>
      </Target>
   </Item>
</Delete>

プロビジョニングされたアプリをデバイスから削除しました

特定のバージョンまたはパッケージ ファミリのすべてのバージョンについて、プロビジョニングされたアプリをデバイスから削除できます。 プロビジョニングされたアプリが削除されると、デバイスの将来のユーザーは使用できません。 アプリが登録されているログイン ユーザーは、引き続きアプリにアクセスできます。 これらのユーザーのアプリを削除する場合は、それらのユーザーのアプリを明示的にアンインストールする必要があります。

インベントリ値 IsProvisioned = 1 のアプリのみを削除できます。

プロビジョニングされたアプリの削除は、デバイス コンテキストで行われます。

  • プロビジョニングされたアプリをデバイスから削除する例を次に示します。

    <!- Remove Provisioned App for a Package Family-->
    <Delete>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}</LocURI>
           </Target>
        </Item>
    </Delete>
    
  • プロビジョニングされたアプリの特定のバージョンをデバイスから削除する例を次に示します。

    <!-- Remove Provisioned App for a specific package full name-->
    <Delete>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/{PackageFullName}</LocURI>
           </Target>
        </Item>
    </Delete>
    

ストア アプリ ライセンスを削除する

コンテンツ ID に基づいて、アプリごとにデバイスからアプリ ライセンスを削除できます。

  • ユーザーのアプリ ライセンスを削除する例を次に示します。

    <!-- Remove App License for a User-->
    <Delete>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}</LocURI>
           </Target>
        </Item>
    </Delete>
    
  • プロビジョニングされたパッケージ (デバイス コンテキスト) のアプリ ライセンスを削除する例を次に示します。

    <!-- Remove App License for a provisioned package (device) -->
    <Delete>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppLicenses/StoreLicenses/{license id}</LocURI>
           </Target>
        </Item>
    </Delete>
    

アプリのアンインストールに関するアラート

アプリのアンインストールが完了するまでに時間がかかる場合があります。 そのため、アンインストールは非同期的に実行されます。 Exec コマンドが完了すると、クライアントは、エラーか成功かに関係なく、状態の通知を管理サーバーに送信します。

ユーザー ベースのアンインストールの場合は、LocURI で ./User を使用し、プロビジョニングには LocURI で ./Device を使用します。

次に例を示します。 ホストされているアプリとストア アプリのアンインストールは 1 つだけです。

<Alert>
    <Data>1226</Data>
    <Item>
        <Source>
            <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/{PackageFamilyName}</LocURI>
        </Source>
        <Meta>
            <Type xmlns="syncml:metinf">Reversed-Domain-Name:com.microsoft.mdm.EnterpriseAppUninstall.result</Type>
            <Format xmlns="syncml:metinf">int</Format>
        </Meta>
        <Data>0</Data>
    </Item>
</Alert>

アプリの更新

デバイスにインストールされているアプリは、管理サーバーを使用して更新できます。 アプリは、ストアから直接更新することも、ホストされている場所からインストールすることもできます。

ストアからアプリを直接更新する

Microsoft Store からアプリを更新するには、デバイスでストア サービスに接続する必要があります。

  • 更新スキャンの例を次に示します。

    <!- Initiate a update scan for a user-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI>
           </Target>
        </Item>
    </Exec>
    
  • 状態チェックの例を次に示します。

    <!- Get last error related to the update scan-->
    <Get>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/LastScanError</LocURI>
           </Target>
        </Item>
    </Get>
    

ホストされている場所からアプリを更新する

既存のアプリの更新は、初期インストールと同じプロセスに従います。 詳細については、「 ホストされている場所からユーザーにアプリをデプロイする」を参照してください。

プロビジョニングされたアプリを更新する

プロビジョニングされたアプリは、アプリの更新がユーザーに送信されると自動的に更新されます。 また、初期プロビジョニングと同じプロセスを使用して、プロビジョニングされたアプリを更新することもできます。 初期プロビジョニングの詳細については、「 デバイスのすべてのユーザーにアプリをプロビジョニングする」を参照してください。

アプリの自動更新を禁止する

特定のアプリが自動的に更新されないようにすることができます。 この機能を使用すると、IT 管理者が定義した特定のアプリを除外して、アプリの自動更新を有効にすることができます。

更新プログラムをオフにすると、デバイス レベルの Microsoft Store からの更新プログラムにのみ適用されます。 この機能は、ユーザー レベルでは使用できません。 オフライン パッケージがホストされているインストール場所からプッシュされている場合でも、アプリを更新できます。

次に例を示します。

<!- Prevent app from being automatically updated-->
<Replace>
   <CmdID>1</CmdID>
   <Item>
      <Target>
         <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/AppStore/{PackageFamilyName}/DoNotUpdate</LocURI>
         </Target>
      <Meta>
         <Format xmlns="syncml:metinf">int</Format>
         <Type xmlns="syncml:metinf">text/plain</Type>
      </Meta>
      <Data>1</Data></Item>
</Replace>

その他のアプリ管理シナリオ

次のサブセクションでは、その他の設定構成に関する情報を提供します。

共有ユーザー アプリ データを有効にする

ユニバーサル Windows アプリは、デバイスのユーザー間でアプリケーション データを共有できます。 データを共有する機能は、パッケージ ファミリ レベルまたはデバイスごとに設定できます。

これは、マルチユーザー デバイスにのみ適用されます。

ApplicationManagement/AllowSharedUserAppData ポリシーでは、複数のユーザーが存在するアプリ パッケージ間でデータを共有するアプリ パッケージを有効または無効にします。 このポリシーを有効にすると、アプリケーションはパッケージ ファミリ内のパッケージ間でデータを共有できます。 データは、そのパッケージ ファミリとローカル コンピューターの ShareLocal フォルダーを介して共有できます。 このフォルダーは、Windows.Storage API を使用して使用できます。

このポリシーを無効にした場合、アプリケーションは複数のユーザー間でユーザー アプリケーション データを共有できません。 ただし、事前に書き込まれた共有データは保持されます。 事前に書き込まれた共有データをクリーンするには、DISM (/Get-ProvisionedAppxPackageを使用して共有データがあるかどうかを検出し、削除/Remove-SharedAppxData)。

有効な値は、0 (オフ、既定値) と 1 (オン) です。

次に例を示します。

<!-- Get policy (Default)-->
<Get>
   <CmdID>1</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/Policy/Result/ApplicationManagement/AllowSharedUserAppData?list=StructData</LocURI>
      </Target>
   </Item>
</Get>
<!-- Update policy -->
<Replace>
   <CmdID>2</CmdID>
   <Item>
      <Target>
         <LocURI>./Vendor/MSFT/Policy/Config/ApplicationManagement/AllowSharedUserAppData</LocURI>
      </Target>
   <Meta>
      <Format>int</Format>
      <Type>text/plain</Type>
   </Meta>
   <Data>1</Data>
   </Item>
</Replace>