Administración de aplicaciones de empresa

En este artículo se describe una de las características clave de las funcionalidades de Windows Mobile Administración de dispositivos (MDM): la capacidad de administrar el ciclo de vida de las aplicaciones en todos los dispositivos Windows. Esto incluye aplicaciones de la Tienda y que no son de la Tienda, que se pueden administrar de forma nativa a través de MDM.

Al usar MDM de Windows para administrar los ciclos de vida de las aplicaciones, los administradores pueden implementar y administrar actualizaciones, quitar aplicaciones obsoletas o no usadas y asegurarse de que todos los dispositivos tengan instaladas las aplicaciones necesarias para satisfacer las necesidades de la organización. Esta característica simplifica el proceso de administración de aplicaciones y ahorra tiempo y esfuerzo para los profesionales de TI.

Objetivos de administración de aplicaciones

Windows ofrece la posibilidad de que los servidores de administración:

  • Instalar aplicaciones directamente desde el Microsoft Store para Empresas
  • Implementación de licencias y aplicaciones de la Tienda sin conexión
  • Implementación de aplicaciones de línea de negocio (LOB) (aplicaciones que no son de la Tienda)
  • Inventario de todas las aplicaciones para un usuario (Aplicaciones de la Tienda y que no son de la Tienda)
  • Inventario de todas las aplicaciones de un dispositivo (Aplicaciones de la Tienda y que no son de la Tienda)
  • Desinstalación de todas las aplicaciones para un usuario (aplicaciones de la Tienda y que no son de la Tienda)
  • Aprovisionar aplicaciones para que estén instaladas para todos los usuarios de un dispositivo que ejecuta ediciones de escritorio de Windows (Home, Pro, Enterprise y Education)
  • Quitar la aplicación aprovisionada en el dispositivo que ejecuta ediciones de escritorio de Windows

Aplicaciones de inventario

Windows te permite hacer un inventario de todas las aplicaciones implementadas en un usuario e inventariar todas las aplicaciones para todos los usuarios de un dispositivo Windows. El proveedor de servicios de configuración (CSP) EnterpriseModernAppManagement incluye inventarios de aplicaciones empaquetadas y no incluye las aplicaciones win32 tradicionales instaladas a través de MSI o ejecutables. Cuando se inventarie las aplicaciones, se separan en función de las siguientes clasificaciones de aplicaciones:

  • Tienda: aplicaciones que se han adquirido desde Microsoft Store, ya sea directamente o entregadas con la empresa desde la Tienda para empresas.
  • nonStore: aplicaciones que no se adquirieron de Microsoft Store.
  • Sistema: aplicaciones que forman parte del sistema operativo y no se pueden desinstalar. Esta clasificación es de solo lectura y solo se puede inventariar.

Cada aplicación se identifica mediante un nombre de familia de paquete y uno o varios nombres completos de paquete, y las aplicaciones se agrupan en función de su origen. El CSP EnterpriseModernAppManagement muestra estas clasificaciones como nodos.

El inventario se puede ejecutar de forma recursiva en cualquier nivel desde el nodo AppManagement mediante el nombre completo del paquete. También puede elegir inventariar solo atributos específicos. El inventario es específico del nombre completo del paquete y enumera los paquetes agrupados y de recursos según corresponda en el nombre de la familia del paquete.

Para obtener más información sobre cada nodo, vea las descripciones detalladas proporcionadas en el CSP enterpriseModernAppManagement.

Inventario de aplicaciones

Puede usar el CSP EnterpriseModernAppManagement para consultar todas las aplicaciones instaladas para un usuario o dispositivo. La consulta devuelve todas las aplicaciones, incluso si se instalaron mediante MDM u otros métodos. El inventario se puede ejecutar en el nivel de usuario o dispositivo. El inventario en el nivel de dispositivo devuelve información para todos los usuarios del dispositivo.

Hacer un inventario completo de un dispositivo puede hacer un uso intensivo de recursos en función del hardware y el número de aplicaciones instaladas. Los datos devueltos también pueden ser grandes. Es posible que desee fragmentar estas solicitudes para reducir el impacto en los clientes y el tráfico de red.

  • Consulta de ejemplo para todas las aplicaciones del 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 ejemplo para una aplicación específica para un usuario.

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

Inventario de licencias de la tienda

Puede usar el CSP EnterpriseModernAppManagement para consultar todas las licencias de aplicación instaladas para un usuario o dispositivo. La consulta devuelve todas las licencias de aplicación, evento si se instalaron a través de MDM u otros métodos. El inventario se puede ejecutar en el nivel de usuario o dispositivo. El inventario en el nivel de dispositivo devuelve información para todos los usuarios del dispositivo.

Para obtener descripciones detalladas de cada nodo, consulte EnterpriseModernAppManagement CSP.

Nota

LicenseID en el CSP es el identificador de contenido de la licencia.

  • Este es un ejemplo de una consulta para todas las licencias de aplicación en un 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>
    
  • Este es un ejemplo de una consulta para todas las licencias de aplicación para un usuario.

    <!-- 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 el dispositivo para instalar aplicaciones que no son de la Tienda

Hay dos tipos básicos de aplicaciones que puede implementar:

  • Almacenar aplicaciones.
  • Aplicaciones firmadas por la empresa.

Para implementar aplicaciones firmadas por la empresa, debe habilitar una configuración en el dispositivo para permitir aplicaciones de confianza. Las aplicaciones pueden estar firmadas por una raíz aprobada por Microsoft (como Symantec), una raíz implementada por la empresa o aplicaciones autofirmadas. En esta sección se describen los pasos para configurar el dispositivo para la implementación de aplicaciones que no son de la tienda.

Desbloquear el dispositivo para aplicaciones que no son de la Tienda

Para implementar aplicaciones que no son de Microsoft Store, debe configurar la directiva ApplicationManagement/AllowAllTrustedApps . Esta directiva permite la instalación de aplicaciones que no son de la Tienda en el dispositivo si hay una cadena en un certificado en el dispositivo. La aplicación se puede firmar con un certificado raíz en el dispositivo (como Symantec Enterprise), un certificado raíz propiedad de la empresa o un certificado de confianza del mismo nivel implementado en el dispositivo. Para obtener más información sobre la implementación de la licencia de usuario, consulte Implementación de una licencia sin conexión para un usuario.

La directiva AllowAllTrustedApps permite la instalación de aplicaciones de confianza para un certificado en el Personas de confianza en el dispositivo o un certificado raíz en la raíz de confianza del dispositivo. La directiva no está configurada de forma predeterminada, lo que significa que solo se pueden instalar aplicaciones de Microsoft Store. Si el servidor de administración establece implícitamente el valor en off, la configuración se deshabilita en el panel de configuración del dispositivo.

A continuación te mostramos un ejemplo:

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

Desbloqueo del dispositivo para el modo de desarrollador

El desarrollo de aplicaciones en dispositivos Windows ya no requiere una licencia especial. Puede habilitar la depuración y la implementación de aplicaciones no empaquetadas mediante la directiva ApplicationManagement/AllowDeveloperUnlock en CSP de directiva.

La directiva AllowDeveloperUnlock habilita el modo de desarrollo en el dispositivo. AllowDeveloperUnlock no está configurado de forma predeterminada, lo que significa que solo se pueden instalar aplicaciones de Microsoft Store. Si el servidor de administración establece explícitamente el valor en desactivado, la configuración se deshabilita en el panel de configuración del dispositivo.

La implementación de aplicaciones en dispositivos Windows requiere que haya una cadena en un certificado en el dispositivo. La aplicación se puede firmar con un certificado raíz en el dispositivo (como Symantec Enterprise), un certificado raíz propiedad de la empresa o un certificado de confianza del mismo nivel implementado en el dispositivo.

A continuación te mostramos un ejemplo.

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

Instalar aplicaciones

Puede instalar aplicaciones para un usuario específico o para todos los usuarios de un dispositivo. Las aplicaciones se instalan directamente desde Microsoft Store. O bien, se instalan desde una ubicación de host, como un disco local, una ruta de acceso UNC o una ubicación HTTPS. Use el nodo AppInstallation del CSP EnterpriseModernAppManagement para instalar aplicaciones.

Implementación de aplicaciones para el usuario desde la Tienda

Para implementar una aplicación en un usuario directamente desde Microsoft Store, el servidor de administración ejecuta un comando Add and Exec en el nodo AppInstallation del CSP EnterpriseModernAppManagement. Esta característica solo se admite en el contexto de usuario y no se admite en el contexto del dispositivo.

Si compraste una aplicación en la Tienda para empresas y la aplicación se especifica para una licencia en línea, la aplicación y la licencia deben adquirirse directamente en Microsoft Store.

Estos son los requisitos de este escenario:

  • La aplicación se asigna a un usuario Microsoft Entra identidad en la Tienda para empresas. Puede asignar directamente en la Tienda para empresas o a través de un servidor de administración.
  • El dispositivo requiere conectividad con Microsoft Store.
  • Los servicios de Microsoft Store deben estar habilitados en el dispositivo. El administrador de la empresa puede deshabilitar la interfaz de usuario de Microsoft Store.
  • El usuario debe iniciar sesión con su identidad de Microsoft Entra.

A continuación te mostramos un ejemplo:

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

Estos son los cambios de la versión anterior:

  1. La {CatID} referencia debe actualizarse a {ProductID}. Este valor se adquiere como parte de la herramienta de administración de la Tienda para empresas.
  2. El valor de las marcas puede ser 0 o 1.
    • 0: La herramienta de administración vuelve a llamar a la sincronización de la Tienda para empresas para asignar a un usuario un asiento de una aplicación.
    • 1: La herramienta de administración no vuelve a llamar a la sincronización de la Tienda para empresas para asignar a un usuario un asiento de una aplicación. El CSP reclama un asiento si hay uno disponible.
  3. skuid es un nuevo parámetro necesario. Este valor se adquiere como parte de la sincronización de herramientas de administración de la Tienda para empresas.

Implementación de una licencia sin conexión en un usuario

Si compraste una aplicación en la Tienda para empresas, la licencia de la aplicación debe implementarse en el dispositivo. La licencia de la aplicación solo debe implementarse como parte de la instalación inicial de la aplicación. Durante una actualización, solo la aplicación se implementa en el usuario.

En SyncML, debe especificar la siguiente información en el Exec comando:

  • Id. de licencia: este identificador se especifica en LocURI. El id. de licencia de la licencia sin conexión se conoce como "Id. de contenido" en el archivo de licencia. Puede recuperar esta información de la descarga de licencia codificada en Base64 de la Tienda para empresas.
  • Contenido de licencia: este contenido se especifica en la sección de datos. El contenido de la licencia es el blob codificado en Base64 de la licencia.

Este es un ejemplo de instalación de licencia sin conexión.

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

Implementación de aplicaciones en un usuario desde una ubicación hospedada

Si compraste una aplicación en la Tienda para empresas y la aplicación se especifica para una licencia sin conexión o la aplicación es una aplicación que no es de la Tienda, la aplicación debe implementarse desde una ubicación hospedada.

Estos son los requisitos de este escenario:

  • La ubicación de la aplicación puede ser un sistema de archivos local (C:\StagedApps\app1.appx), una ruta de acceso UNC (\\server\share\app1.apx) o una ubicación HTTPS (https://contoso.com/app1.appx).
  • El usuario debe tener permiso para acceder a la ubicación del contenido. En el caso de los HTTP, puede usar la autenticación de servidor o la autenticación de certificado mediante un certificado asociado a la inscripción. Se admiten ubicaciones HTTP, pero no se recomiendan debido a la falta de requisitos de autenticación.
  • No es necesario que el dispositivo tenga conectividad con Microsoft Store, servicios de tienda o que la interfaz de usuario de Microsoft Store esté habilitada.
  • El usuario debe iniciar sesión, pero no se requiere la asociación con Microsoft Entra identidad.

Nota

Debe desbloquear el dispositivo para implementar aplicaciones que no son de Almacén o debe implementar la licencia de la aplicación antes de implementar las aplicaciones sin conexión. Para obtener más información, consulte Implementación de una licencia sin conexión para un usuario.

El comando Agregar del nombre de familia del paquete es necesario para garantizar la eliminación adecuada de la aplicación en la anulación de la inscripción.

  • Este es un ejemplo de instalación de aplicaciones de línea de negocio.

    <!-- 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>
    
  • Este es un ejemplo de instalación de una aplicación con dependencias.

    <!-- 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>
    
  • Este es un ejemplo de instalación de una aplicación con dependencias y paquetes opcionales.

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

Aprovisionamiento de aplicaciones para todos los usuarios de un dispositivo

El aprovisionamiento le permite almacenar provisionalmente la aplicación en el dispositivo y todos los usuarios del dispositivo pueden tener la aplicación registrada en su siguiente inicio de sesión. Esta característica solo se admite para la aplicación comprada en la Tienda para empresas y la aplicación se especifica para una licencia sin conexión o la aplicación es una aplicación que no es de la Tienda. La aplicación se debe ofrecer desde una ubicación hospedada. La aplicación se instala como un sistema local. Para instalar en un recurso compartido de archivos local, el "sistema local" del dispositivo debe tener acceso al recurso compartido.

Estos son los requisitos de este escenario:

  • La ubicación de la aplicación puede ser el sistema de archivos local (C:\StagedApps\app1.appx), una ruta de acceso UNC (\\server\share\app1.apx) o una ubicación HTTPS (https://contoso.com/app1.appx\)
  • El usuario debe tener permiso para acceder a la ubicación del contenido. En el caso de los HTTP, puede usar la autenticación de servidor o la autenticación de certificado mediante un certificado asociado a la inscripción. Se admiten ubicaciones HTTP, pero no se recomiendan debido a la falta de requisitos de autenticación.
  • El dispositivo no necesita tener conectividad con Microsoft Store ni servicios de tienda habilitados.
  • El dispositivo no necesita ninguna Microsoft Entra identidad o pertenencia a dominio.
  • En el caso de la aplicación que no es de almacén, el dispositivo debe estar desbloqueado.
  • En el caso de las aplicaciones sin conexión de la Tienda, las licencias necesarias deben implementarse antes de implementar las aplicaciones.

Para aprovisionar la aplicación para todos los usuarios de un dispositivo desde una ubicación hospedada, el servidor de administración ejecuta un comando Add and Exec en el nodo AppInstallation en el contexto del dispositivo. El comando Agregar del nombre de familia del paquete es necesario para garantizar la eliminación adecuada de la aplicación en la anulación de la inscripción.

Nota

Al quitar la aplicación aprovisionada, no la quitará de los usuarios que ya instalaron la aplicación.

  • Este es un ejemplo de instalación de aplicaciones:

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

    El comando HostedInstall Exec contiene un nodo Data que requiere un XML incrustado. Estos son los requisitos para el XML de datos:

    • El nodo de aplicación tiene un parámetro necesario, PackageURI, que puede ser una ubicación de archivo local, unc o una ubicación HTTPS.
    • Se pueden especificar dependencias si es necesario instalarlas con el paquete. Esto es opcional.

    El parámetro DeploymentOptions solo está disponible en el contexto del usuario.

  • Este es un ejemplo de instalación de aplicaciones con dependencias.

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

Obtención del estado de las instalaciones de aplicaciones

Cuando se completa una instalación de la aplicación, se envía una notificación de Windows. También puede consultar el estado de mediante el nodo AppInstallation. Esta es la lista de información que puede obtener de vuelta en la consulta:

  • Estado: indica el estado de la instalación de la aplicación.
    • NOT_INSTALLED (0): se agregó el nodo, pero no se completó la ejecución.
    • INSTALACIÓN (1): se ha iniciado la ejecución, pero la implementación no se ha completado. Si la implementación se completa independientemente del éxito, este valor se actualiza.
    • ERROR (2): error de instalación. Los detalles del error se pueden encontrar en LastError y LastErrorDescription.
    • INSTALADO (3): una vez que una instalación se realiza correctamente, se limpia este nodo. Si la acción de limpieza no se ha completado, este estado puede aparecer brevemente.
  • LastError: el último error notificado por el servidor de implementación de aplicaciones.
  • LastErrorDescription: describe el último error notificado por el servidor de implementación de aplicaciones.
  • Estado: entero que indica el progreso de la instalación de la aplicación. En los casos de una ubicación HTTPS, este estado muestra el progreso estimado de la descarga. El estado no está disponible para el aprovisionamiento y solo se usa para instalaciones basadas en el usuario. Para el aprovisionamiento, el valor siempre es 0.

Cuando una aplicación se instala correctamente, el nodo se limpia y ya no está presente. El estado de la aplicación se puede notificar en el nodo AppManagement.

  • Este es un ejemplo de una consulta para una instalación de aplicación 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>
    
  • Este es un ejemplo de una consulta para todas las instalaciones de aplicaciones.

    <!-- 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 la finalización de la instalación

Las instalaciones de la aplicación pueden tardar algún tiempo en completarse. Por lo tanto, se realizan de forma asincrónica. Cuando se completa el comando Exec, el cliente envía una notificación al servidor de administración con un estado, ya sea un error o un éxito.

Este es un ejemplo de una 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 la instalación basada en el usuario, use la ./User ruta de acceso y, para el aprovisionamiento de aplicaciones, use la ./Device ruta de acceso.

El valor del campo Datos de 0 (cero) indica que se ha realizado correctamente. De lo contrario, es un código de error. Si se produce un error, puede obtener más detalles del nodo AppInstallation.

Nota

En este momento, la alerta para la instalación de aplicaciones de la Tienda no está disponible.

Desinstalación de las aplicaciones

Puede desinstalar aplicaciones de usuarios de dispositivos Windows. Para desinstalar una aplicación, la elimina del nodo AppManagement del CSP. Dentro del nodo AppManagement, los paquetes se organizan en función de su origen según los nodos siguientes:

  • AppStore: estas aplicaciones son para Microsoft Store. Las aplicaciones se pueden instalar directamente desde la tienda o entregarse a la empresa desde la Tienda para empresas.
  • nonStore: estas aplicaciones que no se adquirieron de Microsoft Store.
  • Sistema: estas aplicaciones forman parte del sistema operativo. No puede desinstalar estas aplicaciones.

Para desinstalar una aplicación, elimínela en el nodo de origen, el nombre de la familia del paquete y el nombre completo del paquete. Para desinstalar un XAP, use el identificador de producto en lugar del nombre de familia del paquete y el nombre completo del paquete.

Este es un ejemplo para desinstalar todas las versiones de una aplicación para un usuario.

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

-Este es un ejemplo para desinstalar una versión específica de la aplicación para un usuario.

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

Se han quitado las aplicaciones aprovisionadas de un dispositivo

Puede quitar las aplicaciones aprovisionadas de un dispositivo para una versión específica o para todas las versiones de una familia de paquetes. Cuando se quita una aplicación aprovisionada, no está disponible para los usuarios futuros del dispositivo. Los usuarios que han iniciado sesión que tienen la aplicación registrada en ellos siguen teniendo acceso a la aplicación. Si desea quitar la aplicación para esos usuarios, debe desinstalar explícitamente la aplicación para esos usuarios.

Nota

Solo puede quitar una aplicación que tenga un valor de inventario IsProvisioned = 1.

La eliminación de la aplicación aprovisionada se produce en el contexto del dispositivo.

  • Este es un ejemplo para quitar una aplicación aprovisionada de un 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>
    
  • Este es un ejemplo para quitar una versión específica de una aplicación aprovisionada de un 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>
    

Eliminación de una licencia de aplicación de tienda

Puede quitar licencias de aplicación de un dispositivo por aplicación en función del identificador de contenido.

  • Este es un ejemplo para quitar una licencia de aplicación para un usuario.

    <!-- 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>
    
  • Este es un ejemplo para quitar una licencia de aplicación para un paquete aprovisionado (contexto de 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 de desinstalación de aplicaciones

La desinstalación de una aplicación puede tardar algún tiempo en completarse. Por lo tanto, la desinstalación se ejecuta de forma asincrónica. Cuando se completa el comando Exec, el cliente envía una notificación al servidor de administración con un estado, ya sea un error o un éxito.

Para la desinstalación basada en el usuario, use ./User en LocURI y, para el aprovisionamiento, use ./Device en LocURI.

A continuación te mostramos un ejemplo. Solo hay una desinstalación para aplicaciones hospedadas y de la tienda.

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

Actualizar las aplicaciones

Las aplicaciones instaladas en un dispositivo se pueden actualizar mediante el servidor de administración. Las aplicaciones se pueden actualizar directamente desde la tienda o instalarse desde una ubicación hospedada.

Actualización de aplicaciones directamente desde la tienda

Para actualizar una aplicación desde Microsoft Store, el dispositivo requiere contacto con los servicios de la tienda.

  • Este es un ejemplo de un examen de actualizaciones.

    <!- Initiate a update scan for a user-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI>
           </Target>
        </Item>
    </Exec>
    
  • Este es un ejemplo de una comprobación de estado.

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

Actualización de aplicaciones desde una ubicación hospedada

La actualización de una aplicación existente sigue el mismo proceso que una instalación inicial. Para obtener más información, consulte Implementación de aplicaciones en un usuario desde una ubicación hospedada.

Actualización de aplicaciones aprovisionadas

Una aplicación aprovisionada se actualiza automáticamente cuando se envía una actualización de la aplicación al usuario. También puede actualizar una aplicación aprovisionada mediante el mismo proceso que un aprovisionamiento inicial. Para obtener más información sobre el aprovisionamiento inicial, consulte Aprovisionamiento de aplicaciones para todos los usuarios de un dispositivo.

Impedir que la aplicación realice actualizaciones automáticas

Puede evitar que aplicaciones específicas se actualicen automáticamente. Esta característica le permite activar las actualizaciones automáticas de las aplicaciones, con aplicaciones específicas excluidas según lo definido por el administrador de TI.

Desactivar las actualizaciones solo se aplica a las actualizaciones de Microsoft Store en el nivel de dispositivo. Esta característica no está disponible en el nivel de usuario. Todavía puede actualizar una aplicación si los paquetes sin conexión se insertan desde la ubicación de instalación hospedada.

A continuación te mostramos un ejemplo.

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

Más escenarios de administración de aplicaciones

En las subsecciones siguientes se proporciona información sobre más configuraciones de configuración.

Habilitación de datos de aplicaciones de usuario compartidos

La aplicación universal de Windows puede compartir datos de la aplicación entre los usuarios del dispositivo. La capacidad de compartir datos se puede establecer en un nivel de familia de paquetes o por dispositivo.

Nota

Esto solo se aplica a dispositivos multiusuario.

La directiva ApplicationManagement/AllowSharedUserAppData habilita o deshabilita los paquetes de aplicaciones para compartir datos entre paquetes de aplicaciones cuando hay varios usuarios. Si habilita esta directiva, las aplicaciones pueden compartir datos entre paquetes de su familia de paquetes. Los datos se pueden compartir a través de la carpeta ShareLocal para esa familia de paquetes y la máquina local. Esta carpeta está disponible a través de la API Windows.Storage.

Si deshabilita esta directiva, las aplicaciones no pueden compartir datos de aplicaciones de usuario entre varios usuarios. Sin embargo, los datos compartidos preescritos persisten. Para limpiar los datos compartidos preescritos, use DISM (/Get-ProvisionedAppxPackage para detectar si hay datos compartidos y /Remove-SharedAppxData quitarlos).

Los valores válidos son 0 (desactivado, valor predeterminado) y 1 (activado).

A continuación te mostramos un ejemplo.

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