Verwaltung von Unternehmens-Apps

In diesem Artikel wird eines der wichtigsten Features der Mobile Geräteverwaltung (MDM)-Funktionen von Windows erläutert: die Möglichkeit, den Lebenszyklus von Apps auf allen Windows-Geräten zu verwalten. Dies umfasst sowohl Store- als auch Nicht-Store-Apps, die nativ über MDM verwaltet werden können.

Mithilfe von Windows MDM zum Verwalten von App-Lebenszyklus können Administratoren Updates bereitstellen und verwalten, veraltete oder nicht verwendete Apps entfernen und sicherstellen, dass auf allen Geräten die erforderlichen Apps installiert sind, um die Anforderungen der organization zu erfüllen. Dieses Feature optimiert den App-Verwaltungsprozess und spart Zeit und Aufwand für IT-Experten.

Ziele der Anwendungsverwaltung

Windows bietet Verwaltungsservern folgende Möglichkeiten:

  • Installieren von Apps direkt aus dem Microsoft Store für Unternehmen
  • Bereitstellen von Offline-Store-Apps und -Lizenzen
  • Bereitstellen von branchenspezifischen Apps (Nicht-Store-Apps)
  • Inventarisieren aller Apps für einen Benutzer (Store- und Nicht-Store-Apps)
  • Inventarisieren aller Apps für ein Gerät (Store- und Nicht-Store-Apps)
  • Deinstallieren aller Apps für einen Benutzer (Store- und Nicht-Store-Apps)
  • Bereitstellen von Apps für alle Benutzer eines Geräts, auf dem Windows-Desktopeditionen (Home, Pro, Enterprise und Education) ausgeführt werden
  • Entfernen der bereitgestellten App auf dem Gerät, auf dem Windows-Desktopeditionen ausgeführt werden

Inventarisierungs-Apps

Mit Windows können Sie alle für einen Benutzer bereitgestellten Apps inventarisieren und alle Apps für alle Benutzer eines Windows-Geräts inventarisieren. Der EnterpriseModernAppManagement-Konfigurationsdienstanbieter (CSP) inventarisiert gepackte Apps und schließt keine herkömmlichen Win32-Apps ein, die über MSI oder ausführbare Dateien installiert werden. Wenn die Apps inventarisiert werden, werden sie basierend auf den folgenden App-Klassifizierungen getrennt:

  • Store: Apps, die aus dem Microsoft Store erworben wurden, entweder direkt oder mit dem Unternehmen aus dem Store für Unternehmen geliefert wurden.
  • nonStore: Apps, die nicht aus dem Microsoft Store erworben wurden.
  • System: Apps, die Teil des Betriebssystems sind und nicht deinstalliert werden können. Diese Klassifizierung ist schreibgeschützt und kann nur inventarisiert werden.

Jede App wird durch einen Paketfamiliennamen und einen oder mehrere vollständige Paketnamen identifiziert, und die Apps werden basierend auf ihrem Ursprung gruppiert. Der EnterpriseModernAppManagement-CSP zeigt diese Klassifizierungen als Knoten an.

Die Inventur kann auf jeder Ebene vom Knoten AppManagement über den vollständigen Paketnamen rekursiv ausgeführt werden. Sie können auch nur bestimmte Attribute inventarisieren. Der Bestand ist spezifisch für den vollständigen Paketnamen und listet gebündelte und Ressourcenpakete unter dem Paketfamiliennamen auf.

Weitere Informationen zu den einzelnen Knoten finden Sie in den ausführlichen Beschreibungen im EnterpriseModernAppManagement-CSP.

App-Bestand

Sie können den EnterpriseModernAppManagement-CSP verwenden, um alle Apps abzufragen, die für einen Benutzer oder ein Gerät installiert sind. Die Abfrage gibt alle Apps zurück, auch wenn sie mithilfe von MDM oder anderen Methoden installiert wurden. Die Inventur kann auf Benutzer- oder Geräteebene ausgeführt werden. Die Inventarisierung auf Geräteebene gibt Informationen für alle Benutzer auf dem Gerät zurück.

Eine vollständige Bestandsaufnahme eines Geräts kann basierend auf der Hardware und der Anzahl der installierten Apps ressourcenintensiv sein. Die zurückgegebenen Daten können auch groß sein. Sie können diese Anforderungen aufteilen, um die Auswirkungen auf Clients und Netzwerkdatenverkehr zu verringern.

  • Beispielabfrage für alle Apps auf dem Gerät.

    <!-- Get all apps under AppManagement -->
    <Get>
       <CmdID>1</CmdID>
       <Item>
          <Target>
             <LocURI>./Device/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement?list=StructData</LocURI>
          </Target>
       </Item>
    </Get>
    
  • Beispielabfrage für eine bestimmte App für einen Benutzer.

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

Speichern des Lizenzbestands

Sie können den EnterpriseModernAppManagement-CSP verwenden, um alle App-Lizenzen abzufragen, die für einen Benutzer oder ein Gerät installiert sind. Die Abfrage gibt alle App-Lizenzen zurück, das Ereignis, wenn sie über MDM oder andere Methoden installiert wurden. Die Inventur kann auf Benutzer- oder Geräteebene ausgeführt werden. Die Inventarisierung auf Geräteebene gibt Informationen für alle Benutzer auf dem Gerät zurück.

Ausführliche Beschreibungen der einzelnen Knoten finden Sie unter EnterpriseModernAppManagement CSP.

Hinweis

Die LicenseID im CSP ist die Inhalts-ID für die Lizenz.

  • Hier sehen Sie ein Beispiel für eine Abfrage für alle App-Lizenzen auf einem Gerät.

    <!-- 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>
    
  • Hier sehen Sie ein Beispiel für eine Abfrage für alle App-Lizenzen für einen Benutzer.

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

Aktivieren des Geräts für die Installation von Nicht-Store-Apps

Es gibt zwei grundlegende Arten von Apps, die Sie bereitstellen können:

  • Store-Apps.
  • Für Unternehmen signierte Apps.

Um vom Unternehmen signierte Apps bereitzustellen, müssen Sie eine Einstellung auf dem Gerät aktivieren, um vertrauenswürdige Apps zuzulassen. Die Apps können von einem von Microsoft genehmigten Stamm (z. B. Symantec), einem vom Unternehmen bereitgestellten Stamm oder selbstsignierten Apps signiert werden. In diesem Abschnitt werden die Schritte zum Konfigurieren des Geräts für die Bereitstellung von Apps außerhalb des Stores beschrieben.

Entsperren des Geräts für Nicht-Store-Apps

Um Apps bereitzustellen, die nicht aus dem Microsoft Store stammen, müssen Sie die Richtlinie ApplicationManagement/AllowAllTrustedApps konfigurieren. Diese Richtlinie ermöglicht die Installation von Nicht-Store-Apps auf dem Gerät, wenn eine Kette zu einem Zertifikat auf dem Gerät vorhanden ist. Die App kann mit einem Stammzertifikat auf dem Gerät (z. B. Symantec Enterprise), einem Unternehmensstammzertifikat oder einem auf dem Gerät bereitgestellten Peervertrauenszertifikat signiert werden. Weitere Informationen zum Bereitstellen einer Benutzerlizenz finden Sie unter Bereitstellen einer Offlinelizenz für einen Benutzer.

Die AllowAllTrustedApps-Richtlinie ermöglicht die Installation von Apps, denen ein Zertifikat im vertrauenswürdigen Personen auf dem Gerät oder ein Stammzertifikat im vertrauenswürdigen Stamm des Geräts als vertrauenswürdig eingestuft wird. Die Richtlinie ist nicht standardmäßig konfiguriert, was bedeutet, dass nur Apps aus dem Microsoft Store installiert werden können. Wenn der Verwaltungsserver den Wert implizit auf Off festlegt, wird die Einstellung im Einstellungsbereich auf dem Gerät deaktiviert.

Beispiel:

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

Entsperren des Geräts für den Entwicklermodus

Für die Entwicklung von Apps auf Windows-Geräten ist keine spezielle Lizenz mehr erforderlich. Sie können das Debuggen und die Bereitstellung von nicht gepackten Apps mithilfe der Richtlinie ApplicationManagement/AllowDeveloperUnlock im Richtlinien-CSP aktivieren.

Die AllowDeveloperUnlock-Richtlinie aktiviert den Entwicklungsmodus auf dem Gerät. AllowDeveloperUnlock ist standardmäßig nicht konfiguriert, was bedeutet, dass nur Microsoft Store-Apps installiert werden können. Wenn der Verwaltungsserver den Wert explizit auf Off festlegt, wird die Einstellung im Einstellungsbereich auf dem Gerät deaktiviert.

Die Bereitstellung von Apps auf Windows-Geräten erfordert, dass auf dem Gerät eine Kette zu einem Zertifikat vorhanden ist. Die App kann mit einem Stammzertifikat auf dem Gerät (z. B. Symantec Enterprise), einem Unternehmensstammzertifikat oder einem auf dem Gerät bereitgestellten Peervertrauenszertifikat signiert werden.

Beispiel:

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

Installieren von Apps

Sie können Apps für einen bestimmten Benutzer oder für alle Benutzer eines Geräts installieren. Apps werden direkt aus dem Microsoft Store installiert. Oder sie werden von einem Hostspeicherort wie einem lokalen Datenträger, unc-Pfad oder HTTPS-Speicherort installiert. Verwenden Sie den Knoten AppInstallation des EnterpriseModernAppManagement-CSP , um Apps zu installieren.

Bereitstellen von Apps für Benutzer aus dem Store

Um eine App direkt aus dem Microsoft Store für einen Benutzer bereitzustellen, führt der Verwaltungsserver den Befehl Add and Exec auf dem Knoten AppInstallation des EnterpriseModernAppManagement-CSP aus. Dieses Feature wird nur im Benutzerkontext und nicht im Gerätekontext unterstützt.

Wenn Sie eine App im Store für Unternehmen erworben haben und die App für eine Onlinelizenz angegeben ist, müssen die App und die Lizenz direkt aus dem Microsoft Store erworben werden.

Dies sind die Anforderungen für dieses Szenario:

  • Die App wird einem Benutzer Microsoft Entra Identität im Store für Unternehmen zugewiesen. Sie können die Zuweisung direkt im Store für Unternehmen oder über einen Verwaltungsserver durchführen.
  • Das Gerät erfordert eine Verbindung mit dem Microsoft Store.
  • Microsoft Store-Dienste müssen auf dem Gerät aktiviert sein. Die Benutzeroberfläche für den Microsoft Store kann vom Unternehmensadministrator deaktiviert werden.
  • Der Benutzer muss mit seiner Microsoft Entra Identität angemeldet sein.

Beispiel:

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

Dies sind die Änderungen gegenüber der vorherigen Version:

  1. Der {CatID} Verweis sollte auf {ProductID}aktualisiert werden. Dieser Wert wird als Teil des Store for Business-Verwaltungstools abgerufen.
  2. Der Wert für Flags kann 0 oder 1 sein.
    • 0: Das Verwaltungstool ruft an die Store für Unternehmen-Synchronisierung zurück, um einem Benutzer einen Sitz einer Anwendung zuzuweisen.
    • 1: Das Verwaltungstool ruft nicht an die Store für Unternehmen-Synchronisierung zurück, um einem Benutzer einen Sitz einer Anwendung zuzuweisen. Der CSP beansprucht einen Arbeitsplatz, sofern verfügbar.
  3. Ist skuid ein neuer Parameter, der erforderlich ist. Dieser Wert wird als Teil der Synchronisierung des Tools Store für Unternehmen mit dem Verwaltungstool abgerufen.

Bereitstellen einer Offlinelizenz für einen Benutzer

Wenn Sie eine App im Store für Unternehmen erworben haben, muss die App-Lizenz auf dem Gerät bereitgestellt werden. Die App-Lizenz muss nur im Rahmen der Erstinstallation der App bereitgestellt werden. Während eines Updates wird nur die App für den Benutzer bereitgestellt.

In SyncML müssen Sie die folgenden Informationen im Exec Befehl angeben:

  • Lizenz-ID: Diese ID wird im LocURI angegeben. Die Lizenz-ID für die Offlinelizenz wird in der Lizenzdatei als "Inhalts-ID" bezeichnet. Sie können diese Informationen aus dem Base64-codierten Lizenzdownload aus dem Store für Unternehmen abrufen.
  • Lizenzinhalt: Dieser Inhalt wird im Datenabschnitt angegeben. Der Lizenzinhalt ist das Base64-codierte Blob der Lizenz.

Hier sehen Sie ein Beispiel für eine Offlinelizenzinstallation.

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

Bereitstellen von Apps für einen Benutzer von einem gehosteten Standort aus

Wenn Sie eine App im Store für Unternehmen erworben haben und die App für eine Offlinelizenz angegeben ist oder es sich bei der App um eine Nicht-Store-App handelt, muss die App von einem gehosteten Speicherort bereitgestellt werden.

Dies sind die Anforderungen für dieses Szenario:

  • Der Speicherort der App kann ein lokales Dateisystem (C:\StagedApps\app1.appx), ein UNC-Pfad (\\server\share\app1.apx) oder ein HTTPS-Speicherort (https://contoso.com/app1.appx) sein.
  • Der Benutzer muss über die Berechtigung für den Zugriff auf den Inhaltsspeicherort verfügen. Für HTTPs können Sie die Serverauthentifizierung oder die Zertifikatauthentifizierung mithilfe eines Zertifikats verwenden, das der Registrierung zugeordnet ist. HTTP-Speicherorte werden unterstützt, aber aufgrund fehlender Authentifizierungsanforderungen nicht empfohlen.
  • Das Gerät muss keine Verbindung mit dem Microsoft Store, den Store-Diensten haben oder die Microsoft Store-Benutzeroberfläche aktiviert sein.
  • Der Benutzer muss angemeldet sein, aber eine Zuordnung mit Microsoft Entra Identität ist nicht erforderlich.

Hinweis

Sie müssen das Gerät entsperren, um NichtStore-Apps bereitzustellen, oder Sie müssen die App-Lizenz bereitstellen, bevor Sie die Offline-Apps bereitstellen. Weitere Informationen finden Sie unter Bereitstellen einer Offlinelizenz für einen Benutzer.

Der Befehl Hinzufügen für den Paketfamiliennamen ist erforderlich, um sicherzustellen, dass die App beim Aufheben der Registrierung ordnungsgemäß entfernt wird.

  • Hier sehen Sie ein Beispiel für eine Branchen-App-Installation.

    <!-- 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>
    
  • Hier sehen Sie ein Beispiel für eine App-Installation mit Abhängigkeiten.

    <!-- 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>
    
  • Hier sehen Sie ein Beispiel für eine App-Installation mit Abhängigkeiten und optionalen Paketen.

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

Bereitstellen von Apps für alle Benutzer eines Geräts

Mit der Bereitstellung können Sie die App auf dem Gerät bereitstellen, und alle Benutzer des Geräts können die App bei der nächsten Anmeldung registrieren lassen. Dieses Feature wird nur für Apps unterstützt, die im Store für Unternehmen erworben wurden, und die App wird für eine Offlinelizenz angegeben, oder die App ist eine Nicht-Store-App. Die App muss von einem gehosteten Standort aus angeboten werden. Die App wird als lokales System installiert. Zum Installieren auf einer lokalen Dateifreigabe muss das "lokale System" des Geräts Zugriff auf die Freigabe haben.

Dies sind die Anforderungen für dieses Szenario:

  • Der Speicherort der App kann das lokale Dateisystem (C:\StagedApps\app1.appx), ein UNC-Pfad (\\server\share\app1.apx) oder ein HTTPS-Speicherort (https://contoso.com/app1.appx\) sein.
  • Der Benutzer muss über die Berechtigung für den Zugriff auf den Inhaltsspeicherort verfügen. Für HTTPs können Sie die Serverauthentifizierung oder die Zertifikatauthentifizierung mithilfe eines Zertifikats verwenden, das der Registrierung zugeordnet ist. HTTP-Speicherorte werden unterstützt, aber aufgrund fehlender Authentifizierungsanforderungen nicht empfohlen.
  • Für das Gerät muss keine Verbindung mit dem Microsoft Store oder aktivierten Store-Diensten vorhanden sein.
  • Das Gerät benötigt keine Microsoft Entra Identität oder Domänenmitgliedschaft.
  • Bei nicht Store-Apps muss Ihr Gerät entsperrt sein.
  • Für Store-Offline-Apps müssen vor der Bereitstellung der Apps die erforderlichen Lizenzen bereitgestellt werden.

Um die App für alle Benutzer eines Geräts von einem gehosteten Standort aus bereitzustellen, führt der Verwaltungsserver den Befehl Add and Exec auf dem Knoten AppInstallation im Gerätekontext aus. Der Befehl Hinzufügen für den Paketfamiliennamen ist erforderlich, um sicherzustellen, dass die App beim Aufheben der Registrierung ordnungsgemäß entfernt wird.

Hinweis

Wenn Sie die bereitgestellte App entfernen, wird sie nicht von den Benutzern entfernt, die die App bereits installiert haben.

  • Hier sehen Sie ein Beispiel für die App-Installation:

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

    Der Befehl HostedInstall Exec enthält einen Datenknoten, der ein eingebettetes XML erfordert. Dies sind die Anforderungen für die Daten-XML:

    • Der Anwendungsknoten verfügt über den erforderlichen Parameter PackageURI, bei dem es sich um einen lokalen Dateispeicherort, einen UNC- oder HTTPS-Speicherort handeln kann.
    • Abhängigkeiten können angegeben werden, wenn dies erforderlich ist, um mit dem Paket installiert zu werden. Dies ist optional.

    Der Parameter DeploymentOptions ist nur im Benutzerkontext verfügbar.

  • Hier sehen Sie ein Beispiel für die App-Installation mit Abhängigkeiten.

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

Abrufen status von App-Installationen

Wenn eine App-Installation abgeschlossen ist, wird eine Windows-Benachrichtigung gesendet. Sie können auch die status des Knotens AppInstallation abfragen. Dies ist die Liste der Informationen, die Sie in der Abfrage abrufen können:

  • Status: Gibt die status der App-Installation an.
    • NOT_INSTALLED (0): Der Knoten wurde hinzugefügt, die Ausführung wurde jedoch nicht abgeschlossen.
    • INSTALLING (1): Die Ausführung wurde gestartet, die Bereitstellung wurde jedoch noch nicht abgeschlossen. Wenn die Bereitstellung unabhängig vom Erfolg abgeschlossen wird, wird dieser Wert aktualisiert.
    • FAILED (2): Fehler bei der Installation. Die Details des Fehlers finden Sie unter LastError und LastErrorDescription.
    • INSTALLIERT (3): Sobald eine Installation erfolgreich war, wird dieser Knoten bereinigt. Wenn die aktion sauber up nicht abgeschlossen wurde, wird dieser Zustand möglicherweise kurz angezeigt.
  • LastError: Der letzte vom App-Bereitstellungsserver gemeldete Fehler.
  • LastErrorDescription: Beschreibt den letzten Fehler, der vom App-Bereitstellungsserver gemeldet wurde.
  • Status: Eine ganze Zahl, die den Fortschritt der App-Installation angibt. In Fällen eines HTTPS-Speicherorts zeigt dieses status den geschätzten Downloadfortschritt an. Der Status ist für die Bereitstellung nicht verfügbar und wird nur für benutzerbasierte Installationen verwendet. Für die Bereitstellung ist der Wert immer 0.

Wenn eine App erfolgreich installiert wurde, wird der Knoten bereinigt und nicht mehr vorhanden. Die status der App können unter dem Knoten AppManagement gemeldet werden.

  • Hier sehen Sie ein Beispiel für eine Abfrage für eine bestimmte App-Installation.

    <!-- 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>
    
  • Hier sehen Sie ein Beispiel für eine Abfrage für alle App-Installationen.

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

Warnung zum Abschluss der Installation

Anwendungsinstallationen können einige Zeit in Anspruch nehmen. Sie werden also asynchron ausgeführt. Wenn der Exec-Befehl abgeschlossen ist, sendet der Client eine Benachrichtigung mit einem status an den Verwaltungsserver, unabhängig davon, ob es sich um einen Fehler oder einen Erfolg handelt.

Hier sehen Sie ein Beispiel für eine Warnung.

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

Verwenden Sie für die benutzerbasierte Installation den ./User Pfad, und verwenden Sie für die Bereitstellung von Apps den ./Device Pfad.

Der Wert des Datenfelds 0 (null) gibt den Erfolg an. Andernfalls handelt es sich um einen Fehlercode. Wenn ein Fehler auftritt, können Sie weitere Details vom Knoten AppInstallation abrufen.

Hinweis

Derzeit ist die Warnung für die Installation der Store-App nicht verfügbar.

Deinstallieren Ihrer Apps

Sie können Apps von Benutzern von Windows-Geräten deinstallieren. Um eine App zu deinstallieren, löschen Sie sie aus dem Knoten AppManagement des CSP. Innerhalb des Knotens AppManagement werden Pakete basierend auf ihrem Ursprung gemäß den folgenden Knoten organisiert:

  • AppStore: Diese Apps sind für den Microsoft Store. Apps können direkt aus dem Store installiert oder aus dem Store für Unternehmen an das Unternehmen übermittelt werden.
  • nonStore: Diese Apps, die nicht aus dem Microsoft Store erworben wurden.
  • System: Diese Apps sind Teil des Betriebssystems. Sie können diese Apps nicht deinstallieren.

Um eine App zu deinstallieren, löschen Sie sie unter dem Ursprungsknoten, dem Paketfamiliennamen und dem vollständigen Paketnamen. Um ein XAP zu deinstallieren, verwenden Sie die Produkt-ID anstelle des Paketfamiliennamens und des vollständigen Paketnamens.

Hier sehen Sie ein Beispiel für die Deinstallation aller Versionen einer App für einen Benutzer.

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

– Hier ist ein Beispiel für die Deinstallation einer bestimmten Version der App für einen Benutzer.

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

Bereitgestellte Apps von einem Gerät entfernt

Sie können bereitgestellte Apps für eine bestimmte Version oder für alle Versionen einer Paketfamilie von einem Gerät entfernen. Wenn eine bereitgestellte App entfernt wird, steht sie zukünftigen Benutzern für das Gerät nicht zur Verfügung. Angemeldete Benutzer, für die die App registriert ist, haben weiterhin Zugriff auf die App. Wenn Sie die App für diese Benutzer entfernen möchten, müssen Sie die App für diese Benutzer explizit deinstallieren.

Hinweis

Sie können nur eine App entfernen, die den Inventurwert IsProvisioned = 1 aufweist.

Das Entfernen der bereitgestellten App erfolgt im Gerätekontext.

  • Hier ist ein Beispiel für das Entfernen einer bereitgestellten App von einem Gerät.

    <!- 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>
    
  • Hier ist ein Beispiel für das Entfernen einer bestimmten Version einer bereitgestellten App von einem Gerät:

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

Entfernen einer Store-App-Lizenz

Sie können App-Lizenzen von einem Gerät pro App basierend auf der Inhalts-ID entfernen.

  • Hier sehen Sie ein Beispiel für das Entfernen einer App-Lizenz für einen Benutzer.

    <!-- 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>
    
  • Hier sehen Sie ein Beispiel für das Entfernen einer App-Lizenz für ein bereitgestelltes Paket (Gerätekontext).

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

Warnung für die App-Deinstallation

Die Deinstallation einer App kann einige Zeit in Anspruch nehmen. Daher wird die Deinstallation asynchron ausgeführt. Wenn der Exec-Befehl abgeschlossen ist, sendet der Client eine Benachrichtigung mit einem status an den Verwaltungsserver, unabhängig davon, ob es sich um einen Fehler oder einen Erfolg handelt.

Verwenden Sie für die benutzerbasierte Deinstallation ./User im LocURI und für die Bereitstellung ./Device im LocURI.

Beispiel: Es gibt nur eine Deinstallation für gehostete und Store-Apps.

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

Aktualisieren Sie Ihre Apps

Auf einem Gerät installierte Apps können mithilfe des Verwaltungsservers aktualisiert werden. Apps können direkt aus dem Store aktualisiert oder von einem gehosteten Speicherort aus installiert werden.

Aktualisieren von Apps direkt aus dem Store

Um eine App aus dem Microsoft Store zu aktualisieren, muss das Gerät kontakt mit den Store-Diensten kontaktieren.

  • Hier sehen Sie ein Beispiel für eine Updateüberprüfung.

    <!- Initiate a update scan for a user-->
    <Exec>
        <CmdID>1</CmdID>
        <Item>
           <Target>
              <LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppManagement/UpdateScan</LocURI>
           </Target>
        </Item>
    </Exec>
    
  • Hier sehen Sie ein Beispiel für eine status-Überprüfung.

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

Aktualisieren von Apps von einem gehosteten Speicherort aus

Beim Aktualisieren einer vorhandenen App wird derselbe Prozess wie bei der Erstinstallation ausgeführt. Weitere Informationen finden Sie unter Bereitstellen von Apps für einen Benutzer von einem gehosteten Speicherort aus.

Aktualisieren von bereitgestellten Apps

Eine bereitgestellte App wird automatisch aktualisiert, wenn ein App-Update an den Benutzer gesendet wird. Sie können eine bereitgestellte App auch mithilfe desselben Prozesses wie bei der ersten Bereitstellung aktualisieren. Weitere Informationen zur ersten Bereitstellung finden Sie unter Bereitstellen von Apps für alle Benutzer eines Geräts.

Verhindern von automatischen Updates für die App

Sie können verhindern, dass bestimmte Apps automatisch aktualisiert werden. Mit diesem Feature können Sie automatische Updates für Apps aktivieren, wobei bestimmte Apps ausgeschlossen werden, wie vom IT-Administrator definiert.

Das Deaktivieren von Updates gilt nur für Updates aus dem Microsoft Store auf Geräteebene. Dieses Feature ist auf Benutzerebene nicht verfügbar. Sie können eine App weiterhin aktualisieren, wenn die Offlinepakete vom gehosteten Installationsspeicherort gepusht werden.

Beispiel:

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

Weitere Szenarien für die App-Verwaltung

Die folgenden Unterabschnitte enthalten Informationen zu weiteren Einstellungskonfigurationen.

Aktivieren freigegebener Benutzer-App-Daten

Die universelle Windows-App kann Anwendungsdaten für die Benutzer des Geräts freigeben. Die Möglichkeit zum Freigeben von Daten kann auf Paketfamilienebene oder pro Gerät festgelegt werden.

Hinweis

Dies gilt nur für Geräte mit mehreren Benutzern.

Die Richtlinie ApplicationManagement/AllowSharedUserAppData aktiviert oder deaktiviert App-Pakete, um Daten zwischen App-Paketen freizugeben, wenn mehrere Benutzer vorhanden sind. Wenn Sie diese Richtlinie aktivieren, können Anwendungen Daten zwischen Paketen in ihrer Paketfamilie freigeben. Daten können über den Ordner "ShareLocal" für diese Paketfamilie und den lokalen Computer freigegeben werden. Dieser Ordner ist über die Windows.Storage-API verfügbar.

Wenn Sie diese Richtlinie deaktivieren, können Anwendungen keine Benutzeranwendungsdaten für mehrere Benutzer freigeben. Vorgeschriebene freigegebene Daten bleiben jedoch erhalten. Um vorgeschriebene freigegebene Daten zu sauber, verwenden Sie DISM (/Get-ProvisionedAppxPackage um zu erkennen, ob freigegebene Daten vorhanden sind, und /Remove-SharedAppxData um sie zu entfernen).

Die gültigen Werte sind 0 (aus, Standardwert) und 1 (ein).

Beispiel:

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