Gestione di app aziendali

Questo articolo illustra una delle funzionalità principali delle funzionalità di Windows Mobile Gestione dispositivi (MDM): la possibilità di gestire il ciclo di vita delle app in tutti i dispositivi Windows. Sono incluse app dello Store e non dello Store, che possono essere gestite in modo nativo tramite MDM.

Usando Windows MDM per gestire i cicli di vita delle app, gli amministratori possono distribuire e gestire gli aggiornamenti, rimuovere app obsolete o inutilizzate e assicurarsi che in tutti i dispositivi siano installate le app necessarie per soddisfare le esigenze dell'organizzazione. Questa funzionalità semplifica il processo di gestione delle app e consente ai professionisti IT di risparmiare tempo e fatica.

Obiettivi di gestione delle applicazioni

Windows offre la possibilità per i server di gestione di:

  • Installare le app direttamente dal Microsoft Store per le aziende
  • Distribuire app e licenze dello Store offline
  • Distribuire app line-of-business (LOB) (app non dello Store)
  • Inventario di tutte le app per un utente (app dello Store e non dello Store)
  • Inventario di tutte le app per un dispositivo (app dello Store e non dello Store)
  • Disinstallare tutte le app per un utente (app dello Store e non dello Store)
  • Effettuare il provisioning delle app in modo che vengano installate per tutti gli utenti di un dispositivo che esegue edizioni desktop di Windows (Home, Pro, Enterprise ed Education)
  • Rimuovere l'app di cui è stato effettuato il provisioning nel dispositivo che esegue le edizioni desktop di Windows

App di inventario

Windows consente di inventariare tutte le app distribuite a un utente e di inventariare tutte le app per tutti gli utenti di un dispositivo Windows. Il provider del servizio di configurazione EnterpriseModernAppManagement (CSP) inventaria le app in pacchetto e non include le app Win32 tradizionali installate tramite MSI o eseguibili. Quando le app vengono inventariate, vengono separate in base alle classificazioni delle app seguenti:

  • Store: app acquistate da Microsoft Store, direttamente o recapitate con l'azienda dallo Store per le aziende.
  • nonStore: app non acquisite da Microsoft Store.
  • Sistema: app che fanno parte del sistema operativo e non possono essere disinstallate. Questa classificazione è di sola lettura e può essere inventariata solo.

Ogni app è identificata da un nome di famiglia di pacchetti e da uno o più nomi completi del pacchetto e le app vengono raggruppate in base alla loro origine. Il provider di servizi di configurazione EnterpriseModernAppManagement visualizza queste classificazioni come nodi.

L'inventario può essere eseguito in modo ricorsivo a qualsiasi livello dal nodo AppManagement tramite il nome completo del pacchetto. È anche possibile scegliere di inventariare solo attributi specifici. L'inventario è specifico per il nome completo del pacchetto e gli elenchi in bundle e i pacchetti di risorse, come applicabile nel nome della famiglia di pacchetti.

Per altre informazioni su ogni nodo, vedere le descrizioni dettagliate fornite nel provider di servizi di configurazione EnterpriseModernAppManagement.

Inventario delle app

È possibile usare il provider di servizi di configurazione EnterpriseModernAppManagement per eseguire query per tutte le app installate per un utente o un dispositivo. La query restituisce tutte le app, anche se sono state installate usando MDM o altri metodi. L'inventario può essere eseguito a livello di utente o dispositivo. L'inventario a livello di dispositivo restituisce informazioni per tutti gli utenti nel dispositivo.

L'esecuzione di un inventario completo di un dispositivo può richiedere molte risorse in base all'hardware e al numero di app installate. Anche i dati restituiti possono essere di grandi dimensioni. È possibile suddividere in blocchi queste richieste per ridurre l'impatto sui client e sul traffico di rete.

  • Query di esempio per tutte le app nel dispositivo.

    <!-- Get all apps under AppManagement -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    
  • Query di esempio per un'app specifica per un utente.

    <!-- 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 delle licenze dello Store

È possibile usare il provider di servizi di configurazione EnterpriseModernAppManagement per eseguire una query per tutte le licenze dell'app installate per un utente o un dispositivo. La query restituisce tutte le licenze dell'app, evento se sono state installate tramite MDM o altri metodi. L'inventario può essere eseguito a livello di utente o dispositivo. L'inventario a livello di dispositivo restituisce informazioni per tutti gli utenti nel dispositivo.

Per descrizioni dettagliate di ogni nodo, vedere EnterpriseModernAppManagement CSP.

Nota

LicenseID nel CSP è l'ID contenuto per la licenza.

  • Ecco un esempio di query per tutte le licenze dell'app in 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>
    
  • Ecco un esempio di query per tutte le licenze dell'app per un utente.

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

Abilitare il dispositivo per installare app non nello Store

Esistono due tipi di app di base che è possibile distribuire:

  • App dello Store.
  • App firmate dall'organizzazione.

Per distribuire app firmate dall'organizzazione, è necessario abilitare un'impostazione nel dispositivo per consentire app attendibili. Le app possono essere firmate da una radice approvata da Microsoft (ad esempio Symantec), da una radice distribuita dall'organizzazione o da app autofirmate. Questa sezione illustra i passaggi per configurare il dispositivo per la distribuzione di app non nello Store.

Sbloccare il dispositivo per le app non dello Store

Per distribuire app non provenienti da Microsoft Store, è necessario configurare i criteri ApplicationManagement/AllowAllTrustedApps . Questo criterio consente l'installazione di app non dello Store nel dispositivo se è presente una catena a un certificato nel dispositivo. L'app può essere firmata con un certificato radice nel dispositivo (ad esempio Symantec Enterprise), un certificato radice di proprietà dell'organizzazione o un certificato di trust peer distribuito nel dispositivo. Per altre informazioni sulla distribuzione della licenza utente, vedere Distribuire una licenza offline a un utente.

Il criterio AllowAllTrustedApps consente l'installazione di app considerate attendibili da un certificato nel Persone attendibile nel dispositivo o da un certificato radice nella radice attendibile del dispositivo. Il criterio non è configurato per impostazione predefinita, il che significa che è possibile installare solo le app di Microsoft Store. Se il server di gestione imposta in modo implicito il valore su off, l'impostazione viene disabilitata nel pannello delle impostazioni del dispositivo.

Ecco un esempio:

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

Sbloccare il dispositivo per la modalità sviluppatore

Lo sviluppo di app nei dispositivi Windows non richiede più una licenza speciale. È possibile abilitare il debug e la distribuzione di app non in pacchetto usando i criteri ApplicationManagement/AllowDeveloperUnlock in Policy CSP.

I criteri AllowDeveloperUnlock abilitano la modalità di sviluppo nel dispositivo. AllowDeveloperUnlock non è configurato per impostazione predefinita, il che significa che è possibile installare solo le app di Microsoft Store. Se il server di gestione imposta in modo esplicito il valore su off, l'impostazione viene disabilitata nel pannello delle impostazioni del dispositivo.

Per la distribuzione di app nei dispositivi Windows è necessaria una catena per un certificato nel dispositivo. L'app può essere firmata con un certificato radice nel dispositivo (ad esempio Symantec Enterprise), un certificato radice di proprietà dell'organizzazione o un certificato di trust peer distribuito nel dispositivo.

Ecco un esempio.

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

Installazione delle app

È possibile installare le app per un utente specifico o per tutti gli utenti di un dispositivo. Le app vengono installate direttamente da Microsoft Store. In alternativa, vengono installati da un percorso host, ad esempio un disco locale, un percorso UNC o un percorso HTTPS. Usare il nodo AppInstallation del provider di servizi di configurazione EnterpriseModernAppManagement per installare le app.

Distribuire app all'utente dallo Store

Per distribuire un'app a un utente direttamente da Microsoft Store, il server di gestione esegue un comando Add ed Exec nel nodo AppInstallation del provider di servizi di configurazione EnterpriseModernAppManagement. Questa funzionalità è supportata solo nel contesto utente e non nel contesto del dispositivo.

Se hai acquistato un'app dallo Store per le aziende e l'app è specificata per una licenza online, l'app e la licenza devono essere acquistate direttamente da Microsoft Store.

Ecco i requisiti per questo scenario:

  • L'app viene assegnata a un utente Microsoft Entra'identità nello Store per le aziende. È possibile assegnare direttamente nello Store per le aziende o tramite un server di gestione.
  • Il dispositivo richiede la connettività a Microsoft Store.
  • I servizi di Microsoft Store devono essere abilitati nel dispositivo. L'interfaccia utente per Microsoft Store può essere disabilitata dall'amministratore dell'organizzazione.
  • L'utente deve essere connesso con l'identità Microsoft Entra.

Ecco un esempio:

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

Di seguito sono riportate le modifiche apportate alla versione precedente:

  1. Il {CatID} riferimento deve essere aggiornato a {ProductID}. Questo valore viene acquisito come parte dello strumento di gestione dello Store per le aziende.
  2. Il valore per i flag può essere 0 o 1.
    • 0: lo strumento di gestione richiama la sincronizzazione store per le aziende per assegnare a un utente una sede di un'applicazione.
    • 1: lo strumento di gestione non richiama la sincronizzazione store per le aziende per assegnare a un utente un posto a sedere di un'applicazione. Il CSP richiede un posto se disponibile.
  3. skuid è un nuovo parametro obbligatorio. Questo valore viene acquisito come parte della sincronizzazione dello strumento da Store per le aziende a strumento di gestione.

Distribuire una licenza offline a un utente

Se hai acquistato un'app dallo Store per le aziende, la licenza dell'app deve essere distribuita nel dispositivo. La licenza dell'app deve essere distribuita solo come parte dell'installazione iniziale dell'app. Durante un aggiornamento, solo l'app viene distribuita all'utente.

In SyncML è necessario specificare le informazioni seguenti nel Exec comando :

  • ID licenza: questo ID viene specificato in LocURI. L'ID licenza per la licenza offline viene definito "ID contenuto" nel file di licenza. È possibile recuperare queste informazioni dal download della licenza con codifica Base64 dallo Store per le aziende.
  • Contenuto licenza: questo contenuto viene specificato nella sezione dei dati. Il contenuto della licenza è il BLOB con codifica Base64 della licenza.

Ecco un esempio di installazione di licenze 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>

Distribuire app a un utente da una posizione ospitata

Se hai acquistato un'app dallo Store per le aziende e l'app è specificata per una licenza offline o l'app è un'app non dello Store, l'app deve essere distribuita da una posizione ospitata.

Ecco i requisiti per questo scenario:

  • Il percorso dell'app può essere un sistema di file locale (C:\StagedApps\app1.appx), un percorso UNC (\\server\share\app1.apx) o un percorso HTTPS (https://contoso.com/app1.appx).
  • L'utente deve disporre dell'autorizzazione per accedere al percorso del contenuto. Per i provider di servizi di registrazione hardware, è possibile usare l'autenticazione server o l'autenticazione del certificato usando un certificato associato alla registrazione. I percorsi HTTP sono supportati, ma non consigliati a causa della mancanza di requisiti di autenticazione.
  • Il dispositivo non deve avere connettività a Microsoft Store, ai servizi di archiviazione o all'interfaccia utente di Microsoft Store.
  • L'utente deve essere connesso, ma l'associazione con Microsoft Entra'identità non è necessaria.

Nota

È necessario sbloccare il dispositivo per distribuire app non Store oppure distribuire la licenza dell'app prima di distribuire le app offline. Per informazioni dettagliate, vedere Distribuire una licenza offline a un utente.

Il comando Aggiungi per il nome della famiglia di pacchetti è necessario per garantire la corretta rimozione dell'app al momento dell'annullamento della registrazione.

  • Ecco un esempio di installazione di app line-of-business.

    <!-- 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>
    
  • Ecco un esempio di installazione di un'app con dipendenze.

    <!-- 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>
    
  • Ecco un esempio di installazione di un'app con dipendenze e pacchetti facoltativi.

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

Effettuare il provisioning di app per tutti gli utenti di un dispositivo

Il provisioning consente di inviare l'app al dispositivo e tutti gli utenti del dispositivo possono avere l'app registrata al successivo accesso. Questa funzionalità è supportata solo per l'app acquistata dallo Store per le aziende e l'app viene specificata per una licenza offline oppure l'app non è un'app dello Store. L'app deve essere offerta da una posizione ospitata. L'app viene installata come sistema locale. Per eseguire l'installazione in una condivisione file locale, il "sistema locale" del dispositivo deve avere accesso alla condivisione.

Ecco i requisiti per questo scenario:

  • Il percorso dell'app può essere il sistema di file locali (C:\StagedApps\app1.appx), un percorso UNC (\\server\condivisione\app1.apx) o un percorso HTTPS (https://contoso.com/app1.appx\)
  • L'utente deve disporre dell'autorizzazione per accedere al percorso del contenuto. Per i provider di servizi di registrazione hardware, è possibile usare l'autenticazione server o l'autenticazione del certificato usando un certificato associato alla registrazione. I percorsi HTTP sono supportati, ma non consigliati a causa della mancanza di requisiti di autenticazione.
  • Il dispositivo non deve avere la connettività a Microsoft Store o i servizi dello store abilitati.
  • Il dispositivo non necessita di identità Microsoft Entra o appartenenza a un dominio.
  • Per l'app nonStore, il dispositivo deve essere sbloccato.
  • Per le app offline dello Store, le licenze necessarie devono essere distribuite prima di distribuire le app.

Per effettuare il provisioning dell'app per tutti gli utenti di un dispositivo da una posizione ospitata, il server di gestione esegue un comando Add ed Exec nel nodo AppInstallation nel contesto del dispositivo. Il comando Aggiungi per il nome della famiglia di pacchetti è necessario per garantire la corretta rimozione dell'app al momento dell'annullamento della registrazione.

Nota

Quando si rimuove l'app di cui è stato effettuato il provisioning, l'app non verrà rimossa dagli utenti che hanno già installato l'app.

  • Ecco un esempio di installazione dell'app:

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

    Il comando HostedInstall Exec contiene un nodo Dati che richiede un xml incorporato. Ecco i requisiti per il codice XML dei dati:

    • Il nodo dell'applicazione ha un parametro obbligatorio, PackageURI, che può essere un percorso di file locale, un percorso UNC o HTTPS.
    • Se necessario, è possibile specificare le dipendenze con il pacchetto. Si tratta di un'operazione facoltativa.

    Il parametro DeploymentOptions è disponibile solo nel contesto utente.

  • Ecco un esempio di installazione dell'app con dipendenze.

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

Ottenere lo stato delle installazioni delle app

Al termine dell'installazione di un'app, viene inviata una notifica di Windows. È anche possibile eseguire query sullo stato di usando il nodo AppInstallation. Ecco l'elenco di informazioni che è possibile recuperare nella query:

  • Stato: indica lo stato dell'installazione dell'app.
    • NOT_INSTALLED (0): il nodo è stato aggiunto, ma l'esecuzione non è stata completata.
    • INSTALLING (1): l'esecuzione è stata avviata, ma la distribuzione non è stata completata. Se la distribuzione viene completata indipendentemente dall'esito positivo, questo valore viene aggiornato.
    • FAILED (2) - Installazione non riuscita. I dettagli dell'errore sono disponibili in LastError e LastErrorDescription.
    • INSTALLED (3) - Dopo aver completato l'installazione, questo nodo viene pulito. Se l'azione di pulizia non è stata completata, questo stato può essere visualizzato brevemente.
  • LastError: ultimo errore segnalato dal server di distribuzione dell'app.
  • LastErrorDescription: descrive l'ultimo errore segnalato dal server di distribuzione dell'app.
  • Stato: numero intero che indica lo stato di avanzamento dell'installazione dell'app. Nei casi di una posizione HTTPS, questo stato mostra lo stato di avanzamento del download stimato. Lo stato non è disponibile per il provisioning e viene usato solo per le installazioni basate sull'utente. Per il provisioning, il valore è sempre 0.

Quando un'app viene installata correttamente, il nodo viene pulito e non è più presente. Lo stato dell'app può essere segnalato nel nodo AppManagement.

  • Ecco un esempio di query per un'installazione di app specifica.

    <!-- 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>
    
  • Ecco un esempio di query per tutte le installazioni di app.

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

Avviso per il completamento dell'installazione

Il completamento delle installazioni delle applicazioni può richiedere del tempo. Quindi, vengono eseguite in modo asincrono. Al termine del comando Exec, il client invia una notifica al server di gestione con uno stato, indipendentemente dal fatto che si tratti di un errore o di un esito positivo.

Ecco un esempio di avviso.

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

Per l'installazione basata sull'utente, usare il percorso e per il ./User provisioning delle app, usare il ./Device percorso.

Il valore del campo Dati pari a 0 (zero) indica l'esito positivo. In caso contrario, si tratta di un codice di errore. In caso di errore, è possibile ottenere altri dettagli dal nodo AppInstallation.

Nota

Al momento, l'avviso per l'installazione dell'app nello Store non è disponibile.

Disinstallare le app

È possibile disinstallare le app dagli utenti dai dispositivi Windows. Per disinstallare un'app, eliminarla dal nodo AppManagement del CSP. All'interno del nodo AppManagement, i pacchetti sono organizzati in base alla loro origine in base ai nodi seguenti:

  • AppStore: queste app sono per Microsoft Store. Le app possono essere installate direttamente dallo Store o recapitate all'azienda dallo Store per le aziende.
  • nonStore: queste app non sono state acquisite da Microsoft Store.
  • Sistema: queste app fanno parte del sistema operativo. Non è possibile disinstallare queste app.

Per disinstallare un'app, eliminarla nel nodo di origine, nel nome della famiglia di pacchetti e nel nome completo del pacchetto. Per disinstallare un XAP, usare l'ID prodotto al posto del nome della famiglia di pacchetti e del nome completo del pacchetto.

Ecco un esempio per disinstallare tutte le versioni di un'app per un utente.

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

-Ecco un esempio per la disinstallazione di una versione specifica dell'app per un utente.

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

Rimozione delle app di cui è stato effettuato il provisioning da un dispositivo

È possibile rimuovere le app di cui è stato effettuato il provisioning da un dispositivo per una versione specifica o per tutte le versioni di una famiglia di pacchetti. Quando un'app di cui è stato effettuato il provisioning viene rimossa, non è disponibile per gli utenti futuri per il dispositivo. Gli utenti connessi che hanno registrato l'app continuano ad avere accesso all'app. Se si vuole rimuovere l'app per tali utenti, è necessario disinstallare in modo esplicito l'app per tali utenti.

Nota

È possibile rimuovere solo un'app con un valore di inventario IsProvisioned = 1.

La rimozione dell'app di cui è stato effettuato il provisioning si verifica nel contesto del dispositivo.

  • Ecco un esempio per rimuovere un'app di cui è stato effettuato il provisioning da 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>
    
  • Ecco un esempio per rimuovere una versione specifica di un'app di cui è stato effettuato il provisioning da 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>
    

Rimuovere una licenza dell'app dello Store

È possibile rimuovere le licenze dell'app da un dispositivo per app in base all'ID contenuto.

  • Ecco un esempio per rimuovere una licenza dell'app per un utente.

    <!-- 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>
    
  • Ecco un esempio per rimuovere una licenza dell'app per un pacchetto di cui è stato effettuato il provisioning (contesto del 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>
    

Avviso per la disinstallazione dell'app

Il completamento della disinstallazione di un'app può richiedere del tempo. Di conseguenza, la disinstallazione viene eseguita in modo asincrono. Al termine del comando Exec, il client invia una notifica al server di gestione con uno stato, indipendentemente dal fatto che si tratti di un errore o di un esito positivo.

Per la disinstallazione basata sull'utente, usare ./User in LocURI e, per il provisioning, usare ./Device in LocURI.

Ecco un esempio. È disponibile una sola disinstallazione per le app ospitate e archiviate.

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

Aggiorna le tue app

Le app installate in un dispositivo possono essere aggiornate usando il server di gestione. Le app possono essere aggiornate direttamente dallo store o installate da una posizione ospitata.

Aggiornare le app direttamente dallo Store

Per aggiornare un'app da Microsoft Store, il dispositivo richiede il contatto con i servizi dello Store.

  • Di seguito è riportato un esempio di analisi degli aggiornamenti.

    <!- Initiate a update scan for a user-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI>
           </Target>
        </Item>
    </Exec>
    
  • Ecco un esempio di controllo dello stato.

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

Aggiornare le app da una posizione ospitata

L'aggiornamento di un'app esistente segue lo stesso processo di un'installazione iniziale. Per altre informazioni, vedere Distribuire app a un utente da una posizione ospitata.

Aggiornare le app di cui è stato effettuato il provisioning

Un'app di cui è stato effettuato il provisioning viene aggiornata automaticamente quando viene inviato un aggiornamento dell'app all'utente. È anche possibile aggiornare un'app di cui è stato effettuato il provisioning usando lo stesso processo di un provisioning iniziale. Per altre informazioni sul provisioning iniziale, vedere Effettuare il provisioning di app per tutti gli utenti di un dispositivo.

Impedisci aggiornamenti automatici dell'app

È possibile impedire l'aggiornamento automatico di app specifiche. Questa funzionalità consente di attivare gli aggiornamenti automatici per le app, con app specifiche escluse come definito dall'amministratore IT.

La disattivazione degli aggiornamenti si applica solo agli aggiornamenti da Microsoft Store a livello di dispositivo. Questa funzionalità non è disponibile a livello di utente. È comunque possibile aggiornare un'app se i pacchetti offline vengono sottoposti a push dal percorso di installazione ospitata.

Ecco un esempio.

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

Altri scenari di gestione delle app

Le sottosezioni seguenti forniscono informazioni su altre configurazioni delle impostazioni.

Abilitare i dati dell'app utente condiviso

L'app di Windows universale può condividere i dati dell'applicazione tra gli utenti del dispositivo. La possibilità di condividere i dati può essere impostata a livello di famiglia di pacchetti o per dispositivo.

Nota

Questa opzione è applicabile solo ai dispositivi con più utenti.

Il criterio ApplicationManagement/AllowSharedUserAppData consente o disabilita i pacchetti dell'app di condividere i dati tra i pacchetti dell'app quando sono presenti più utenti. Se si abilita questo criterio, le applicazioni possono condividere i dati tra i pacchetti nella famiglia di pacchetti. I dati possono essere condivisi tramite la cartella ShareLocal per la famiglia di pacchetti e il computer locale. Questa cartella è disponibile tramite l'API Windows.Storage.

Se si disabilita questo criterio, le applicazioni non possono condividere i dati dell'applicazione utente tra più utenti. Tuttavia, i dati condivisi prescritti vengono mantenuti. Per pulire i dati condivisi prescritti, usare Gestione e manutenzione immagini distribuzione (/Get-ProvisionedAppxPackage per rilevare se sono presenti dati condivisi e /Remove-SharedAppxData rimuoverli).

I valori validi sono 0 (off, valore predefinito) e 1 (on).

Ecco un esempio.

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