Gerenciamento de aplicativos corporativos

Este artigo discute um dos principais recursos dos recursos do MDM (Mobile Gerenciamento de Dispositivos) do Windows: a capacidade de gerenciar o ciclo de vida dos aplicativos em todos os dispositivos Windows. Isso inclui aplicativos Store e não Store, que podem ser gerenciados nativamente por meio do MDM.

Usando o Windows MDM para gerenciar ciclos de vida do aplicativo, os administradores podem implantar e gerenciar atualizações, remover aplicativos desatualizados ou não utilizados e garantir que todos os dispositivos tenham os aplicativos necessários instalados para atender às necessidades da organização. Esse recurso simplifica o processo de gerenciamento de aplicativos e economiza tempo e esforço para profissionais de TI.

Metas de gerenciamento de aplicativos

O Windows oferece a capacidade de os servidores de gerenciamento:

  • Instalar aplicativos diretamente do Microsoft Store para Empresas
  • Implantar aplicativos e licenças offline Store
  • Implantar aplicativos LOB (linha de negócios) (aplicativos que não são da Loja)
  • Inventário de todos os aplicativos para um usuário (aplicativos Store e não Store)
  • Inventário de todos os aplicativos para um dispositivo (aplicativos Store e não Store)
  • Desinstalar todos os aplicativos para um usuário (aplicativos Store e não Store)
  • Provisionar aplicativos para que eles sejam instalados para todos os usuários de um dispositivo que executa edições da área de trabalho do Windows (Home, Pro, Enterprise e Education)
  • Remover o aplicativo provisionado no dispositivo que executa edições da área de trabalho do Windows

Aplicativos de inventário

O Windows permite que você inventário todos os aplicativos implantados em um usuário e inventário de todos os aplicativos para todos os usuários de um dispositivo Windows. O CSP (provedor de serviços de configuração) EnterpriseModernAppManagement inventaria aplicativos empacotados e não inclui aplicativos Win32 tradicionais instalados via MSI ou executáveis. Quando os aplicativos são inventariados, eles são separados com base nas seguintes classificações de aplicativo:

  • Repositório: aplicativos adquiridos da Microsoft Store, diretamente ou entregues com a empresa da Loja para Empresas.
  • nonStore: aplicativos que não foram adquiridos da Microsoft Store.
  • Sistema: aplicativos que fazem parte do sistema operacional e não podem ser desinstalados. Essa classificação é somente leitura e só pode ser inventariada.

Cada aplicativo é identificado por um nome de família de pacote e um ou mais nomes completos do pacote, e os aplicativos são agrupados com base em sua origem. O CSP EnterpriseModernAppManagement exibe essas classificações como nós.

O inventário pode ser executado recursivamente em qualquer nível do nó AppManagement por meio do nome completo do pacote. Você também pode optar por inventar atributos específicos. O inventário é específico para o nome completo do pacote e lista pacotes empacotados e pacotes de recursos conforme aplicável no nome da família de pacotes.

Para obter mais informações sobre cada nó, confira as descrições detalhadas fornecidas no CSP EnterpriseModernAppManagement.

Inventário de aplicativos

Você pode usar o CSP EnterpriseModernAppManagement para consultar todos os aplicativos instalados para um usuário ou dispositivo. A consulta retorna todos os aplicativos, mesmo que eles tenham sido instalados usando MDM ou outros métodos. O inventário pode ser executado no nível do usuário ou do dispositivo. O inventário no nível do dispositivo retorna informações para todos os usuários do dispositivo.

Fazer um inventário completo de um dispositivo pode ser intensivo em recursos com base no hardware e no número de aplicativos instalados. Os dados retornados também podem ser grandes. Talvez você queira dividir essas solicitações para reduzir o impacto aos clientes e ao tráfego de rede.

  • Consulta de exemplo para todos os aplicativos no dispositivo.

    <!-- Get all apps under AppManagement -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    
  • Consulta de exemplo para um aplicativo específico para um usuário.

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

Armazenar inventário de licença

Você pode usar o CSP EnterpriseModernAppManagement para consultar todas as licenças de aplicativo instaladas para um usuário ou dispositivo. A consulta retornará todas as licenças de aplicativo, evento se elas forem instaladas por meio de MDM ou outros métodos. O inventário pode ser executado no nível do usuário ou do dispositivo. O inventário no nível do dispositivo retorna informações para todos os usuários do dispositivo.

Para obter descrições detalhadas de cada nó, consulte EnterpriseModernAppManagement CSP.

Observação

O LicenseID no CSP é a ID de conteúdo da licença.

  • Aqui está um exemplo de uma consulta para todas as licenças de aplicativo em um dispositivo.

    <!-- 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>
    
  • Aqui está um exemplo de uma consulta para todas as licenças de aplicativo para um usuário.

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

Habilitar o dispositivo para instalar aplicativos que não são da Loja

Há dois tipos básicos de aplicativos que você pode implantar:

  • Armazene aplicativos.
  • Aplicativos assinados pela Empresa.

Para implantar aplicativos assinados pela empresa, você deve habilitar uma configuração no dispositivo para permitir aplicativos confiáveis. Os aplicativos podem ser assinados por uma raiz aprovada pela Microsoft (como o Symantec), uma raiz implantada pela empresa ou aplicativos que são autoassinados. Esta seção aborda as etapas para configurar o dispositivo para implantação de aplicativos que não são armazenados.

Desbloquear o dispositivo para aplicativos que não são da Loja

Para implantar aplicativos que não são da Microsoft Store, você deve configurar a política ApplicationManagement/AllowAllTrustedApps . Essa política permite a instalação de aplicativos que não são da Store no dispositivo se houver uma cadeia para um certificado no dispositivo. O aplicativo pode ser assinado com um certificado raiz no dispositivo (como o Symantec Enterprise), um certificado raiz de propriedade da empresa ou um certificado de confiança par implantado no dispositivo. Para obter mais informações sobre como implantar a licença de usuário, consulte Implantar uma licença offline em um usuário.

A política AllowAllTrustedApps permite a instalação de aplicativos confiáveis por um certificado no Pessoas confiável no dispositivo ou um certificado raiz na Raiz Confiável do dispositivo. A política não é configurada por padrão, o que significa que somente aplicativos da Microsoft Store podem ser instalados. Se o servidor de gerenciamento definir implicitamente o valor como desativado, a configuração será desabilitada no painel de configurações do dispositivo.

Veja um exemplo:

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

Desbloquear o dispositivo para o modo de desenvolvedor

O desenvolvimento de aplicativos em dispositivos Windows não requer mais uma licença especial. Você pode habilitar a depuração e a implantação de aplicativos não empacotados usando a política ApplicationManagement/AllowDeveloperUnlock no CSP da política.

A política AllowDeveloperUnlock habilita o modo de desenvolvimento no dispositivo. O AllowDeveloperUnlock não está configurado por padrão, o que significa que apenas aplicativos da Microsoft Store podem ser instalados. Se o servidor de gerenciamento definir explicitamente o valor como desativado, a configuração será desabilitada no painel de configurações do dispositivo.

A implantação de aplicativos em dispositivos Windows exige que haja uma cadeia para um certificado no dispositivo. O aplicativo pode ser assinado com um certificado raiz no dispositivo (como o Symantec Enterprise), um certificado raiz de propriedade da empresa ou um certificado de confiança par implantado no dispositivo.

Veja um exemplo.

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

Instale aplicativos

Você pode instalar aplicativos em um usuário específico ou para todos os usuários de um dispositivo. Os aplicativos são instalados diretamente da Microsoft Store. Ou, eles são instalados a partir de um local de host, como um disco local, caminho UNC ou localização HTTPS. Use o nó AppInstallation do CSP EnterpriseModernAppManagement para instalar aplicativos.

Implantar aplicativos no usuário da Loja

Para implantar um aplicativo em um usuário diretamente da Microsoft Store, o servidor de gerenciamento executa um comando Adicionar e Exec no nó AppInstallation do CSP EnterpriseModernAppManagement. Esse recurso só tem suporte no contexto do usuário e não tem suporte no contexto do dispositivo.

Se você comprou um aplicativo da Loja para Empresas e o aplicativo é especificado para uma licença online, o aplicativo e a licença devem ser adquiridos diretamente da Microsoft Store.

Aqui estão os requisitos para este cenário:

  • O aplicativo é atribuído a um usuário Microsoft Entra identidade na Loja para Empresas. Você pode atribuir diretamente na Loja para Empresas ou por meio de um servidor de gerenciamento.
  • O dispositivo requer conectividade com a Microsoft Store.
  • Os serviços da Microsoft Store devem estar habilitados no dispositivo. A interface do usuário da Microsoft Store pode ser desabilitada pelo administrador corporativo.
  • O usuário deve entrar com sua identidade Microsoft Entra.

Veja um exemplo:

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

Aqui estão as alterações da versão anterior:

  1. A {CatID} referência deve ser atualizada para {ProductID}. Esse valor é adquirido como parte da ferramenta de gerenciamento da Store for Business.
  2. O valor para sinalizadores pode ser 0 ou 1.
    • 0: a ferramenta de gerenciamento chama de volta para a sincronização Store for Business para atribuir a um usuário um assento de um aplicativo.
    • 1: A ferramenta de gerenciamento não chama de volta para a sincronização Store for Business para atribuir a um usuário um assento de um aplicativo. O CSP declara um assento se um estiver disponível.
  3. O skuid é um novo parâmetro que é necessário. Esse valor é adquirido como parte da sincronização da ferramenta Store for Business para gerenciamento.

Implantar uma licença offline em um usuário

Se você comprou um aplicativo da Store for Business, a licença de aplicativo deve ser implantada no dispositivo. A licença de aplicativo só precisa ser implantada como parte da instalação inicial do aplicativo. Durante uma atualização, apenas o aplicativo é implantado no usuário.

No SyncML, você precisa especificar as seguintes informações no Exec comando:

  • ID da licença – essa ID é especificada no LocURI. A ID da licença offline é chamada de "ID de conteúdo" no arquivo de licença. Você pode recuperar essas informações do download de licença codificada base64 da Loja para Empresas.
  • Conteúdo de licença – esse conteúdo é especificado na seção de dados. O Conteúdo da Licença é o blob codificado base64 da licença.

Aqui está um exemplo de uma instalação de licença offline.

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

Implantar aplicativos em um usuário de um local hospedado

Se você comprou um aplicativo da Loja para Empresas e o aplicativo é especificado para uma licença offline ou o aplicativo é um aplicativo que não é da Store, o aplicativo deve ser implantado a partir de um local hospedado.

Aqui estão os requisitos para este cenário:

  • O local do aplicativo pode ser um sistema de arquivos local (C:\StagedApps\app1.appx), um caminho UNC (\\server\share\app1.apx) ou um local HTTPS (https://contoso.com/app1.appx).
  • O usuário deve ter permissão para acessar o local do conteúdo. Para HTTPs, você pode usar autenticação de servidor ou autenticação de certificado usando um certificado associado ao registro. Há suporte para locais HTTP, mas não recomendados devido à falta de requisitos de autenticação.
  • O dispositivo não precisa ter conectividade com a Microsoft Store, os serviços de armazenamento ou fazer com que a interface do usuário da Microsoft Store seja habilitada.
  • O usuário deve estar conectado, mas a associação com Microsoft Entra identidade não é necessária.

Observação

Você deve desbloquear o dispositivo para implantar aplicativos que não são de armazenamento ou deve implantar a licença de aplicativo antes de implantar os aplicativos offline. Para obter detalhes, consulte Implantar uma licença offline em um usuário.

O comando Adicionar para o nome da família de pacotes é necessário para garantir a remoção adequada do aplicativo em unenrollment.

  • Aqui está um exemplo de uma instalação de aplicativo de linha de negócios.

    <!-- 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>
    
  • Aqui está um exemplo de uma instalação de aplicativo com dependências.

    <!-- 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>
    
  • Aqui está um exemplo de uma instalação de aplicativo com dependências e pacotes opcionais.

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

Provisionar aplicativos para todos os usuários de um dispositivo

O provisionamento permite que você stage o aplicativo para o dispositivo e todos os usuários do dispositivo podem ter o aplicativo registrado na próxima entrada. Esse recurso só tem suporte para o aplicativo comprado na Store for Business e o aplicativo é especificado para uma licença offline ou o aplicativo é um aplicativo que não é da Store. O aplicativo deve ser oferecido de um local hospedado. O aplicativo é instalado como um sistema local. Para instalar em um compartilhamento de arquivos local, o "sistema local" do dispositivo deve ter acesso ao compartilhamento.

Aqui estão os requisitos para este cenário:

  • O local do aplicativo pode ser o sistema de arquivos local (C:\StagedApps\app1.appx), um caminho UNC (\\server\share\app1.apx) ou um local HTTPS (https://contoso.com/app1.appx\)
  • O usuário deve ter permissão para acessar o local do conteúdo. Para HTTPs, você pode usar autenticação de servidor ou autenticação de certificado usando um certificado associado ao registro. Há suporte para locais HTTP, mas não recomendados devido à falta de requisitos de autenticação.
  • O dispositivo não precisa ter conectividade com a Microsoft Store ou os serviços de armazenamento habilitados.
  • O dispositivo não precisa de nenhuma identidade Microsoft Entra ou associação de domínio.
  • Para o aplicativo nonStore, seu dispositivo deve ser desbloqueado.
  • Para aplicativos offline da Store, as licenças necessárias devem ser implantadas antes de implantar os aplicativos.

Para provisionar o aplicativo para todos os usuários de um dispositivo de um local hospedado, o servidor de gerenciamento executa um comando Add e Exec no nó AppInstallation no contexto do dispositivo. O comando Adicionar para o nome da família de pacotes é necessário para garantir a remoção adequada do aplicativo em unenrollment.

Observação

Quando você remover o aplicativo provisionado, ele não o removerá dos usuários que já instalaram o aplicativo.

  • Aqui está um exemplo de instalação do aplicativo:

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

    O comando HostedInstall Exec contém um nó Data que requer um XML inserido. Aqui estão os requisitos para os dados XML:

    • O nó do aplicativo tem um parâmetro necessário, PackageURI, que pode ser um local de arquivo local, UNC ou local HTTPS.
    • As dependências podem ser especificadas se necessário para serem instaladas com o pacote. Isso é opcional.

    O parâmetro DeploymentOptions só está disponível no contexto do usuário.

  • Aqui está um exemplo de instalação de aplicativo com dependências.

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

Obter status de instalações de aplicativo

Quando uma instalação de aplicativo é concluída, uma notificação do Windows é enviada. Você também pode consultar o status de usar o nó AppInstallation. Aqui está a lista de informações que você pode obter de volta na consulta:

  • Status – indica o status da instalação do aplicativo.
    • NOT_INSTALLED (0) – O nó foi adicionado, mas a execução não foi concluída.
    • INSTALAÇÃO (1) – A execução foi iniciada, mas a implantação não foi concluída. Se a implantação for concluída independentemente do sucesso, esse valor será atualizado.
    • FALHA (2) – Falha na instalação. Os detalhes do erro podem ser encontrados em LastError e LastErrorDescription.
    • INSTALADO (3) – Depois que uma instalação for bem-sucedida, esse nó será limpo. Se a ação limpo up não tiver sido concluída, esse estado poderá aparecer brevemente.
  • LastError – O último erro relatado pelo servidor de implantação do aplicativo.
  • LastErrorDescription – Descreve o último erro relatado pelo servidor de implantação do aplicativo.
  • Status – Um inteiro que indica o progresso da instalação do aplicativo. Em casos de um local HTTPS, este status mostra o progresso estimado do download. O status não está disponível para provisionamento e é usado apenas para instalações baseadas no usuário. Para provisionamento, o valor é sempre 0.

Quando um aplicativo é instalado com êxito, o nó é limpo e não está mais presente. O status do aplicativo pode ser relatado no nó AppManagement.

  • Aqui está um exemplo de uma consulta para uma instalação de aplicativo específica.

    <!-- 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>
    
  • Aqui está um exemplo de uma consulta para todas as instalações do aplicativo.

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

Alerta para conclusão da instalação

As instalações do aplicativo podem levar algum tempo para serem concluídas. Então, eles terminaram de forma assíncrona. Quando o comando Exec é concluído, o cliente envia uma notificação para o servidor de gerenciamento com um status, seja uma falha ou êxito.

Aqui está um exemplo de alerta.

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

Para instalação baseada no usuário, use o ./User caminho e, para provisionamento de aplicativos, use o ./Device caminho.

O valor do campo Dados de 0 (zero) indica êxito. Caso contrário, é um código de erro. Se houver uma falha, você poderá obter mais detalhes do nó AppInstallation.

Observação

No momento, o alerta para a instalação do aplicativo Store não está disponível.

Desinstalar seus aplicativos

Você pode desinstalar aplicativos de usuários de dispositivos Windows. Para desinstalar um aplicativo, exclua-o do nó AppManagement do CSP. No nó AppManagement, os pacotes são organizados com base em sua origem de acordo com os seguintes nós:

  • AppStore – Esses aplicativos são para a Microsoft Store. Os aplicativos podem ser instalados diretamente na loja ou entregues à empresa na Loja para Empresas.
  • nonStore – Esses aplicativos que não foram adquiridos da Microsoft Store.
  • Sistema – Esses aplicativos fazem parte do sistema operacional. Não é possível desinstalar esses aplicativos.

Para desinstalar um aplicativo, exclua-o no nó de origem, nome da família do pacote e nome completo do pacote. Para desinstalar um XAP, use a ID do produto no lugar do nome da família do pacote e do nome completo do pacote.

Aqui está um exemplo para desinstalar todas as versões de um aplicativo para um usuário.

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

-Aqui está um exemplo para desinstalar uma versão específica do aplicativo para um usuário.

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

Aplicativos provisionados removidos de um dispositivo

Você pode remover aplicativos provisionados de um dispositivo para uma versão específica ou para todas as versões de uma família de pacotes. Quando um aplicativo provisionado é removido, ele não está disponível para usuários futuros para o dispositivo. Os usuários conectados que têm o aplicativo registrado para eles continuam tendo acesso ao aplicativo. Se você quiser remover o aplicativo para esses usuários, você deve desinstalar explicitamente o aplicativo para esses usuários.

Observação

Você só pode remover um aplicativo que tenha um valor de inventário IsProvisioned = 1.

A remoção do aplicativo provisionado ocorre no contexto do dispositivo.

  • Aqui está um exemplo para remover um aplicativo provisionado de um dispositivo.

    <!- 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>
    
  • Aqui está um exemplo para remover uma versão específica de um aplicativo provisionado de um dispositivo:

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

Remover uma licença de aplicativo da loja

Você pode remover licenças de aplicativo de um dispositivo por aplicativo com base na ID do conteúdo.

  • Aqui está um exemplo para remover uma licença de aplicativo para um usuário.

    <!-- 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>
    
  • Aqui está um exemplo para remover uma licença de aplicativo para um pacote provisionado (contexto do dispositivo).

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

Alerta para desinstalação de aplicativo

A desinstalação de um aplicativo pode levar algum tempo para ser concluída. Portanto, a desinstalação é executada de forma assíncrona. Quando o comando Exec é concluído, o cliente envia uma notificação para o servidor de gerenciamento com um status, seja uma falha ou êxito.

Para desinstalação baseada no usuário, use ./User no LocURI e, para provisionamento, use ./Device no LocURI.

Veja um exemplo. Há apenas uma desinstalação para aplicativos hospedados e de armazenamento.

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

Atualizar seus apps

Os aplicativos instalados em um dispositivo podem ser atualizados usando o servidor de gerenciamento. Os aplicativos podem ser atualizados diretamente da loja ou instalados em um local hospedado.

Atualizar aplicativos diretamente da loja

Para atualizar um aplicativo da Microsoft Store, o dispositivo requer contato com os serviços da loja.

  • Aqui está um exemplo de uma verificação de atualização.

    <!- Initiate a update scan for a user-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI>
           </Target>
        </Item>
    </Exec>
    
  • Aqui está um exemplo de um status marcar.

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

Atualizar aplicativos de um local hospedado

A atualização de um aplicativo existente segue o mesmo processo de uma instalação inicial. Para obter mais informações, consulte Implantar aplicativos em um usuário de um local hospedado.

Atualizar aplicativos provisionados

Um aplicativo provisionado é atualizado automaticamente quando uma atualização de aplicativo é enviada ao usuário. Você também pode atualizar um aplicativo provisionado usando o mesmo processo que um provisionamento inicial. Para obter mais informações sobre provisionamento inicial, consulte Provisionar aplicativos para todos os usuários de um dispositivo.

Impedir que o aplicativo seja atualizado automaticamente

Você pode impedir que aplicativos específicos sejam atualizados automaticamente. Esse recurso permite ativar atualizações automáticas para aplicativos, com aplicativos específicos excluídos conforme definido pelo administrador de TI.

Desativar atualizações só se aplica a atualizações da Microsoft Store no nível do dispositivo. Esse recurso não está disponível em um nível de usuário. Você ainda pode atualizar um aplicativo se os pacotes offline forem enviados por push do local de instalação hospedado.

Veja um exemplo.

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

Mais cenários de gerenciamento de aplicativos

As subseções a seguir fornecem informações sobre mais configurações de configurações.

Habilitar dados compartilhados do aplicativo de usuário

O aplicativo Universal do Windows pode compartilhar dados do aplicativo entre os usuários do dispositivo. A capacidade de compartilhar dados pode ser definida em um nível familiar de pacote ou por dispositivo.

Observação

Isso só é aplicável a dispositivos multiusuários.

A política ApplicationManagement/AllowSharedUserAppData permite ou desabilita pacotes de aplicativos para compartilhar dados entre pacotes de aplicativos quando há vários usuários. Se você habilitar essa política, os aplicativos poderão compartilhar dados entre pacotes em sua família de pacotes. Os dados podem ser compartilhados por meio da pasta ShareLocal para a família de pacotes e o computador local. Essa pasta está disponível por meio da API do Windows.Storage.

Se você desabilitar essa política, os aplicativos não poderão compartilhar dados do aplicativo de usuário entre vários usuários. No entanto, os dados compartilhados pré-escritos persistem. Para limpo dados compartilhados pré-escritos, use DISM (/Get-ProvisionedAppxPackage para detectar se há dados compartilhados e /Remove-SharedAppxData removê-los).

Os valores válidos são 0 (off, valor padrão) e 1 (ativado).

Veja um exemplo.

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