Administración de aplicaciones de empresa

En este artículo se describe una de las características clave de administración de dispositivos móviles (MDM) de Windows 10. Administra el ciclo de vida de las aplicaciones en todo Windows. Es la capacidad de administrar aplicaciones de la Tienda y que no son de la Tienda como parte de las funcionalidades nativas de MDM. Lo nuevo en Windows 10 es la capacidad de realizar un inventario de todas las aplicaciones.

Objetivos de administración de aplicaciones

Windows 10 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 Windows 10 para ediciones de escritorio (Inicio, Pro, Empresa y Educación)
  • Quitar la aplicación aprovisionada en el dispositivo que ejecuta Windows 10 para las ediciones de escritorio

Inventario de las aplicaciones

Windows 10 permite hacer un inventario de todas las aplicaciones implementadas en un usuario e inventariar todas las aplicaciones de todos los usuarios de un dispositivo en Windows 10 para las ediciones de escritorio. 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 proceden de la Tienda Microsoft. Las aplicaciones se pueden instalar directamente desde la Tienda o entregarse con la empresa desde la Tienda para empresas
  • nonStore: aplicaciones que no se adquirieron de la Tienda Microsoft.
  • Sistema: aplicaciones que forman parte del sistema operativo. No se pueden desinstalar estas aplicaciones. Esta clasificación es de solo lectura y solo se puede inventariar.

Estas clasificaciones se representan como nodos en el CSP EnterpriseModernAppManagement.

La siguiente información muestra el CSP EnterpriseModernAppManagement en un formato de árbol:

./Device/Vendor/MSFT
or
./User/Vendor/MSFT
EnterpriseAppManagement
----AppManagement
--------UpdateScan
--------LastScanError
--------AppInventoryResults
--------AppInventoryQuery
--------RemovePackage
--------AppStore
----------PackageFamilyName
------------PackageFullName
--------------Name
--------------Version
--------------Publisher
--------------Architecture
--------------InstallLocation
--------------IsFramework
--------------IsBundle
--------------InstallDate
--------------ResourceID
--------------RequiresReinstall
--------------PackageStatus
--------------Users
--------------IsProvisioned
--------------IsStub
------------DoNotUpdate
------------AppSettingPolicy
--------------SettingValue
------------MaintainProcessorArchitectureOnUpdate
------------NonRemovable
----------ReleaseManagement
------------ReleaseManagementKey
--------------ChannelId
--------------ReleaseId
--------------EffectiveRelease
-----------------ChannelId
-----------------ReleaseId
--------nonStore
----------PackageFamilyName
------------PackageFullName
--------------Name
--------------Version
--------------Publisher
--------------Architecture
--------------InstallLocation
--------------IsFramework
--------------IsBundle
--------------InstallDate
--------------ResourceID
--------------RequiresReinstall
--------------PackageStatus
--------------Users
--------------IsProvisioned
--------------IsStub
------------DoNotUpdate
------------AppSettingPolicy
--------------SettingValue
------------MaintainProcessorArchitectureOnUpdate
------------NonRemoveable
--------System
----------PackageFamilyName
------------PackageFullName
--------------Name
--------------Version
--------------Publisher
--------------Architecture
--------------InstallLocation
--------------IsFramework
--------------IsBundle
--------------InstallDate
--------------ResourceID
--------------RequiresReinstall
--------------PackageStatus
--------------Users
--------------IsProvisioned
--------------IsStub
------------DoNotUpdate
------------AppSettingPolicy
--------------SettingValue
------------MaintainProcessorArchitectureOnUpdate
------------NonRemoveable
----AppInstallation
--------PackageFamilyName
----------StoreInstall
----------HostedInstall
----------LastError
----------LastErrorDesc
----------Status
----------ProgressStatus
----AppLicenses
--------StoreLicenses
----------LicenseID
------------LicenseCategory
------------LicenseUsage
------------RequesterID
------------AddLicense
------------GetLicenseFromStore

Cada aplicación muestra un nombre de familia de paquetes y nombres completos de paquete de 1 n para las aplicaciones instaladas. Las aplicaciones se clasifican en función de su origen (Store, nonStore, System).

El inventario se puede ejecutar de forma recursiva en cualquier nivel desde el nodo AppManagement a través del nombre completo del paquete. El inventario también se puede ejecutar solo para un atributo de inventario específico.

El inventario es específico del nombre completo del paquete y enumera paquetes y paquetes de recursos agrupados según corresponda en el nombre de familia del paquete.

Estos son los nodos de cada nombre completo del paquete:

  • Nombre
  • Versión
  • Publicador
  • Arquitectura
  • Installlocation
  • IsFramework
  • IsBundle
  • InstallDate
  • ResourceID
  • RequiresReinstall
  • PackageStatus
  • Usuarios
  • IsProvisioned

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

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 devolverá información para todos los usuarios del dispositivo.

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

Este es un ejemplo de una consulta 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>

Este es un ejemplo de una consulta 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 devolverá información para todos los usuarios del dispositivo.

Estos son los nodos de cada identificador de licencia:

  • LicenseCategory
  • LicenseUsage
  • RequestedID

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: aplicaciones de la Tienda y 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 Microsoft aprobada (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 habilita las aplicaciones de instalación que son de confianza para un certificado en el Personas de confianza del 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 las aplicaciones de Microsoft Store. Si el servidor de administración establece implícitamente el valor en desactivado, la configuración se deshabilita en el panel de configuración del dispositivo.

Para obtener más información sobre la directiva AllowAllTrustedApps, consulte CSP de directiva.

A continuación se muestran algunos ejemplos.

<!-- 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 Windows 10 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 Microsoft aplicaciones de la Tienda. 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 para Windows 10 para las ediciones de escritorio 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.

Para obtener más información sobre la directiva AllowDeveloperUnlock, consulte CSP de directiva.

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>

Instalación de las aplicaciones

Puede instalar aplicaciones para un usuario específico o para todos los usuarios de un dispositivo. Las aplicaciones se instalan directamente desde la Tienda Microsoft. 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 la Tienda Microsoft.

Estos son los requisitos de este escenario:

  • La aplicación se asigna a una identidad de Azure Active Directory (Azure AD) de usuario 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.
  • Microsoft los servicios de la Tienda 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 Azure AD.

A continuación se muestran algunos ejemplos.

<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 referencia "{CatID}" 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"

    Cuando se usa "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. Cuando se usa "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 reclamará un puesto 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 comando Exec:

  • Id. de licencia: este identificador se especifica en LocURI. El identificador 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 la Tienda Microsoft, los servicios de tienda o que la interfaz de usuario de la Tienda Microsoft esté habilitada.
  • El usuario debe iniciar sesión, pero no es necesario asociarse con la identidad de Azure AD.

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.
  • No es necesario que el dispositivo tenga conectividad con la Tienda Microsoft o los servicios de tienda habilitados.
  • El dispositivo no necesita ninguna identidad o pertenencia a dominio de Azure AD.
  • 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.

Nota

Esto solo se admite en Windows 10 para las ediciones de escritorio.

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

Nota

Esto solo se admite en Windows 10 para las ediciones de escritorio.

<!-- 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.
    • FAILED (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 ruta de acceso ./User y, para aprovisionar aplicaciones, use la ruta de acceso ./Device.

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 aún no está disponible.

Desinstalación de las aplicaciones

Puede desinstalar aplicaciones de usuarios de dispositivos Windows 10. 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 la 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 en la Tienda Microsoft.
  • Sistema: estas aplicaciones forman parte del sistema operativo. No se pueden 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 hayan iniciado sesión que tengan la aplicación registrada en ellos seguirán 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 AllowSharedUserAppData en CSP de directiva 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 escritos previamente se conservarán. Los datos compartidos escritos previamente limpios, use DISM ((/Get-ProvisionedAppxPackage para detectar si hay datos compartidos y /Remove-SharedAppxData para 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>