企業應用程式管理

本文討論 Windows 行動裝置 裝置管理 (MDM) 功能的其中一個主要功能:在所有 Windows 裝置上管理應用程式生命週期的能力。 這包括可透過 MDM 以原生方式管理的市集和非市集應用程式。

透過使用 Windows MDM 來管理應用程式生命週期,系統管理員可以部署和管理更新、移除過期或未使用的應用程式,並確保所有裝置都已安裝必要的應用程式,以符合組織的需求。 此功能可簡化應用程式管理程式,併為IT專業人員節省時間和精力。

應用程式管理目標

Windows 可讓管理伺服器執行下列操作:

  • 直接從 商務用 Microsoft Store 安裝應用程式
  • 部署離線市集應用程式和授權
  • 將企業營運 (LOB 部署) 應用程式 (非市集應用程式)
  • 清查使用者 (市集和非市集應用程式的所有應用程式)
  • 清查裝置 (市集和非市集應用程式的所有應用程式)
  • 將使用者的所有應用程式卸載 (市集和非市集應用程式)
  • 布建應用程式,讓執行 Windows 傳統型版本之裝置的所有使用者 (家用版、專業版、企業版和教育版)
  • 拿掉執行 Windows 傳統型版本之裝置上布建的應用程式

清查應用程式

Windows 可讓您清查部署至使用者的所有應用程式,並清查 Windows 裝置所有使用者的所有應用程式。 EnterpriseModernAppManagement 設定服務提供者 (CSP) 清查封裝的應用程式,不包含透過 MSI 或可執行檔安裝的傳統 Win32 應用程式。 清查應用程式時,會根據下列應用程式分類加以分隔:

  • 市集:從 Microsoft Store 取得的應用程式,可以直接取得,或是從商務用市集與企業一起傳遞。
  • nonStore:不是從 Microsoft Store 取得的應用程式。
  • 系統:屬於操作系統且無法卸載的應用程式。 這個分類是只讀的,而且只能清查。

每個應用程式都是以一個套件系列名稱和一或多個套件完整名稱來識別,而且應用程式會根據其來源進行分組。 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 是授權的內容識別碼。

  • 以下是裝置上所有應用程式授權的查詢範例。

    <!-- 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>
    

讓裝置安裝非市集應用程式

您可以部署兩種基本類型的應用程式:

  • 市集應用程式。
  • 企業簽署的應用程式。

若要部署企業簽署的應用程式,您必須在裝置上啟用設定,以允許受信任的應用程式。 應用程式可以由 Microsoft 核准的根 (簽署,例如 Symantec) 、企業部署的根目錄或自我簽署的應用程式。 本節涵蓋為非市集應用程式部署設定裝置的步驟。

解除鎖定非市集應用程式的裝置

若要部署不是來自 Microsoft Store 的應用程式,您必須設定 ApplicationManagement/AllowAllTrustedApps 原則。 如果裝置上的憑證有鏈結,此原則允許在裝置上安裝非市集應用程式。 您可以使用裝置上的跟證書簽署應用程式 (例如 Symantec Enterprise) 、企業擁有的跟證書,或部署在裝置上的對等信任憑證。 如需部署使用者授權的詳細資訊,請 參閱將離線授權部署給使用者

AllowAllTrustedApps 原則可讓您安裝裝置上受信任 人員 中憑證所信任的應用程式,或裝置受信任根目錄中的跟證書。 默認不會設定原則,這表示只能安裝來自 Microsoft Store 的應用程式。 如果管理伺服器隱含地將值設定為關閉,則會在裝置的 [設定] 面板中停用設定。

以下是範例:

<!-- 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 應用程式。 如果管理伺服器明確地將值設為關閉,則會在裝置的 [設定] 面板中停用設定。

將應用程式部署至 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 和 Exec 命令。 此功能僅在用戶內容中受到支援,且在裝置內容中不受支援。

如果您從商務用市集購買應用程式,且已針對在線授權指定應用程式,則必須直接從 Microsoft Store 取得應用程式和授權。

以下是此案例的需求:

  • 應用程式會指派給商務用市集中 Microsoft Entra 身分識別的使用者。 您可以直接在商務用市集或透過管理伺服器指派。
  • 裝置需要連線到 Microsoft Store。
  • 必須在裝置上啟用 Microsoft Store 服務。 企業系統管理員可以停用 Microsoft Store 的 UI。
  • 用戶必須使用其 Microsoft Entra 身分識別登入。

以下是範例:

<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. flags 的值可以是 0 或 1。
    • 0:管理工具會回呼商務用市集同步處理,以將應用程式的基座指派給使用者。
    • 1:管理工具不會回呼至商務用市集同步處理,以將應用程式的基座指派給使用者。 如果有可用的基座,CSP 會宣告一個基座。
  3. skuid是必要的新參數。 此值是作為商務用市集管理工具同步處理的一部分取得。

將離線授權部署至使用者

如果您從商務用市集購買應用程式,則應用程式授權必須部署到裝置。 應用程式授權只需要部署為應用程式初始安裝的一部分。 在更新期間,只會將應用程式部署至使用者。

在 SyncML 中,您必須在 命令中 Exec 指定下列資訊:

  • 授權識別碼 - 此識別碼是在 LocURI 中指定。 離線授權的授權識別碼在授權檔案中稱為「內容識別碼」。 您可以從商務用市集下載的Base64編碼授權擷取這項資訊。
  • 授權內容 - 此內容是在資料區段中指定。 授權內容是授權的Base64編碼 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 身分識別建立關聯。

注意

您必須解除鎖定裝置以部署非Store 應用程式,或者必須先部署應用程式授權,才能部署離線應用程式。 如需詳細資訊, 請參閱將離線授權部署給使用者

需要套件系列名稱的 [新增] 命令,以確保在取消註冊時適當地移除應用程式。

  • 以下是企業營運應用程式安裝的範例。

    <!-- 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 身分識別或網域成員資格。
  • 針對非Store 應用程式,您的裝置必須解除鎖定。
  • 針對市集脫機應用程式,必須先部署必要的授權,才能部署應用程式。

若要從裝載位置為裝置的所有使用者布建應用程式,管理伺服器會在裝置內容的 AppInstallation 節點上執行 Add 和 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 的數據節點。 以下是資料 XML 的需求:

    • 應用程式節點具有必要的參數 PackageURI,它可以是本機檔案位置、UNC 或 HTTPS 位置。
    • 如有必要,可以指定相依性,以便與套件一起安裝。 這是選擇性的。

    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) - 已新增節點,但未完成執行。
    • 安裝 (1) - 執行已啟動,但部署尚未完成。 如果部署不論成功都完成,則會更新此值。
    • FAILED (2) - 安裝失敗。 您可以在 LastError 和 LastErrorDescription 下找到錯誤的詳細數據。
    • 已安裝 (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 取得。
  • 系統 - 這些應用程式是作業系統的一部分。 您無法卸載這些應用程式。

若要卸載應用程式,請在原始節點、套件系列名稱和套件完整名稱下刪除它。 若要卸載 XAP,請使用產品識別碼來取代套件系列名稱和套件完整名稱。

以下是為使用者卸載所有應用程式版本的範例。

<!-- 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>
    

拿掉市集應用程式授權

您可以根據內容識別碼,從每個應用程式的裝置移除應用程式授權。

  • 以下是移除使用者應用程式授權的範例。

    <!-- 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。

這裡提供一個範例。 託管和市集應用程式只有一個卸載。

<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>