Управление корпоративными приложениями

В этой статье рассматривается одна из ключевых возможностей Windows Mobile Управление устройствами (MDM): возможность управления жизненным циклом приложений на всех устройствах Windows. Сюда входят приложения Магазина и приложения, не относящиеся к Store, которыми можно управлять в собственном коде с помощью MDM.

Используя Windows MDM для управления жизненным циклом приложений, администраторы могут развертывать обновления и управлять ими, удалять устаревшие или неиспользуемые приложения и обеспечивать установку на всех устройствах необходимых приложений в соответствии с потребностями организации. Эта функция упрощает процесс управления приложениями и экономит время и усилия для ИТ-специалистов.

Цели управления приложениями

Windows предоставляет серверам управления возможность:

  • Установка приложений непосредственно из Microsoft Store для бизнеса
  • Развертывание автономных приложений и лицензий Магазина
  • Развертывание бизнес-приложений (бизнес-приложений) (приложений, не относящихся к Store)
  • Инвентаризация всех приложений для пользователя (приложения Магазина и приложений, не относящихся к Store)
  • Инвентаризация всех приложений для устройства (приложения Магазина и приложений, не относящихся к Store)
  • Удаление всех приложений для пользователя (приложения Магазина и приложений, не относящихся к Store)
  • Подготовка приложений, чтобы они устанавливались для всех пользователей устройства под управлением классических выпусков Windows (Домашняя, Pro, Корпоративная и Для образовательных учреждений)
  • Удаление подготовленного приложения на устройстве под управлением классических выпусков Windows

Приложения инвентаризации

Windows позволяет выполнять инвентаризацию всех приложений, развернутых для пользователя, и инвентаризацию всех приложений для всех пользователей устройства Windows. Поставщик службы конфигурации EnterpriseModernAppManagement (CSP) выполняет инвентаризацию упакованных приложений и не включает традиционные приложения Win32, установленные через MSI или исполняемые файлы. При инвентаризации приложений они разделяются на основе следующих классификаций приложений:

  • Магазин: приложения, которые были приобретены из Microsoft Store напрямую или доставлены предприятием из Магазина для бизнеса.
  • nonStore: приложения, которые не были приобретены из Microsoft Store.
  • Система: приложения, которые являются частью операционной системы и не могут быть удалены. Эта классификация доступна только для чтения и может быть только инвентаризации.

Каждое приложение определяется одним именем семейства пакетов и одним или несколькими полными именами пакетов, а приложения группируются по их происхождению. Поставщик служб CSP EnterpriseModernAppManagement отображает эти классификации как узлы.

Инвентаризацию можно выполнять рекурсивно на любом уровне от узла AppManagement до полного имени пакета. Вы также можете выбрать инвентаризацию только определенных атрибутов. Инвентаризация относится к полному имени пакета и содержит список пакетов и пакетов ресурсов, как это применимо, под именем семейства пакетов.

Дополнительные сведения о каждом узле см. в подробных описаниях, представленных в поставщике CSP EnterpriseModernAppManagement.

Инвентаризация приложений

CSP EnterpriseModernAppManagement можно использовать для запроса всех приложений, установленных для пользователя или устройства. Запрос возвращает все приложения, даже если они были установлены с помощью 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>
    

Инвентаризация лицензий на хранение

CSP EnterpriseModernAppManagement можно использовать для запроса всех лицензий приложений, установленных для пользователя или устройства. Запрос возвращает все лицензии приложений, события, если они были установлены с помощью MDM или другими методами. Инвентаризация может выполняться на уровне пользователя или устройства. Инвентаризация на уровне устройства возвращает сведения для всех пользователей на устройстве.

Подробные описания каждого узла см. в разделе EnterpriseModernAppManagement CSP.

Примечание.

LicenseID в CSP — это идентификатор содержимого для лицензии.

  • Ниже приведен пример запроса для всех лицензий приложений на устройстве.

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

Включение устройства для установки приложений, отличных от Store

Существует два основных типа приложений, которые можно развернуть:

  • Приложения Магазина.
  • Корпоративные подписанные приложения.

Чтобы развернуть корпоративные подписанные приложения, необходимо включить параметр на устройстве, чтобы разрешить доверенные приложения. Приложения могут быть подписаны утвержденным корпорацией Майкрософт корневым каталогом (например, Symantec), корпоративным развернутым корневым каталогом или самозаверяющими приложениями. В этом разделе описаны действия по настройке устройства для развертывания приложений, отличных от магазина.

Разблокировка устройства для приложений, не относящихся к Store

Чтобы развернуть приложения, которые не из Microsoft Store, необходимо настроить политику ApplicationManagement/AllowAllTrustedApps . Эта политика разрешает установку приложений, не относящихся к Store, на устройстве, если на устройстве есть цепочка с сертификатом. Приложение может быть подписано корневым сертификатом на устройстве (например, Symantec Enterprise), корневым сертификатом предприятия или сертификатом однорангового доверия, развернутым на устройстве. Дополнительные сведения о развертывании пользовательской лицензии см. в разделе Развертывание автономной лицензии для пользователя.

Политика AllowAllTrustedApps позволяет устанавливать приложения, которым доверяет сертификат в доверенном Люди на устройстве или корневой сертификат в доверенном корневом каталоге устройства. Политика не настроена по умолчанию, что означает, что можно установить только приложения из 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 больше не требуется специальная лицензия. Вы можете включить отладку и развертывание непакуемых приложений с помощью политики ApplicationManagement/AllowDeveloperUnlock в поставщике CSP политики.

Политика 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. Используйте узел AppInstallation поставщика CSP EnterpriseModernAppManagement для установки приложений.

Развертывание приложений для пользователей из Магазина

Чтобы развернуть приложение для пользователя непосредственно из Microsoft Store, сервер управления выполняет команду Add and Exec в узле AppInstallation поставщика CSP EnterpriseModernAppManagement. Эта функция поддерживается только в контексте пользователя и не поддерживается в контексте устройства.

Если вы приобрели приложение в Магазине для бизнеса и оно указано для веб-лицензии, приложение и лицензия должны быть приобретены непосредственно в Microsoft Store.

Ниже приведены требования к этому сценарию.

  • Приложение назначается пользователю, Microsoft Entra удостоверение в Магазине для бизнеса. Вы можете назначить непосредственно в Store для бизнеса или через сервер управления.
  • Для устройства требуется подключение к Microsoft Store.
  • Службы Microsoft Store должны быть включены на устройстве. Пользовательский интерфейс microsoft Store может быть отключен администратором предприятия.
  • Пользователь должен войти со своим 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}. Это значение приобретается в рамках средства управления Store для бизнеса.
  2. Значение флагов может быть равно 0 или 1.
    • 0. Средство управления вызывает синхронизацию Store для бизнеса, чтобы назначить пользователю место приложения.
    • 1. Средство управления не вызывает обратно в синхронизацию Store для бизнеса, чтобы назначить пользователю место приложения. CSP претендует на место, если оно доступно.
  3. skuid это новый обязательный параметр. Это значение приобретается в рамках синхронизации средств управления из Магазина для бизнеса.

Развертывание автономной лицензии для пользователя

Если вы приобрели приложение в Магазине для бизнеса, лицензия на приложение должна быть развернута на устройстве. Лицензия приложения должна быть развернута только при начальной установке приложения. Во время обновления для пользователя развертывается только приложение.

В команде SyncML необходимо указать следующие сведения Exec :

  • Идентификатор лицензии. Этот идентификатор указан в LocURI. Идентификатор лицензии для автономной лицензии называется идентификатором содержимого в файле лицензии. Эти сведения можно получить из скачивания лицензии в кодировке Base64 из Магазина для бизнеса.
  • Содержимое лицензии. Это содержимое указывается в разделе данных. Содержимое лицензии — это большой двоичный объект в кодировке Base64 лицензии.

Ниже приведен пример автономной установки лицензий.

<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.
  • Пользователь должен войти в систему, но связь с Microsoft Entra удостоверением не требуется.

Примечание.

Необходимо разблокировать устройство для развертывания приложений, отличных отStore, или необходимо развернуть лицензию приложения перед развертыванием автономных приложений. Дополнительные сведения см. в разделе Развертывание автономной лицензии для пользователя.

Команда Add для имени семейства пакетов необходима, чтобы обеспечить надлежащее удаление приложения при отмене регистрации.

  • Ниже приведен пример установки бизнес-приложения.

    <!-- 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, устройство должно быть разблокировано.
  • Для автономных приложений Магазина перед развертыванием приложений необходимо развернуть необходимые лицензии.

Чтобы подготовить приложение для всех пользователей устройства из размещенного расположения, сервер управления выполняет команду Add и Exec в узле AppInstallation в контексте устройства. Команда Add для имени семейства пакетов необходима, чтобы обеспечить надлежащее удаление приложения при отмене регистрации.

Примечание.

При удалении подготовленного приложения оно не будет удалено из пользователей, которые уже установили приложение.

  • Ниже приведен пример установки приложения.

    <!-- 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.
    • INSTALL (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. Чтобы удалить приложение, удалите его из узла AppManagement поставщика служб CSP. В узле 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 клиент отправляет на сервер управления уведомление с состоянием, независимо от того, сбой или успех.

Для удаления на основе пользователя используйте ./User в LocURI, а для подготовки — ./Device в LocURI.

Вот пример. Существует только одно удаление для размещенных приложений и приложений магазина.

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

Обновление приложений из размещенного расположения

Обновление существующего приложения выполняется так же, как и начальная установка. Дополнительные сведения см. в статье Развертывание приложений для пользователя из размещенного расположения.

Обновление подготовленных приложений

Подготовленное приложение автоматически обновляется при отправке обновления приложения пользователю. Вы также можете обновить подготовленное приложение, используя тот же процесс, что и начальная подготовка. Дополнительные сведения о первоначальной подготовке см. в разделе Подготовка приложений для всех пользователей устройства.

Запрет автоматического обновления приложения

Вы можете запретить автоматическое обновление определенных приложений. Эта функция позволяет включить автоматическое обновление для приложений, при этом определенные приложения исключены, как определено ИТ-администратором.

Отключение обновлений применяется только к обновлениям из 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 для этого семейства пакетов и локального компьютера. Эта папка доступна через API Windows.Storage.

Если отключить эту политику, приложения не смогут совместно использовать данные приложения пользователей между несколькими пользователями. Однако предварительно созданные общие данные сохраняются. Чтобы очистить предварительно подписанные общие данные, используйте 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>