Manuelles Erstellen einer App-Installer-Datei

In diesem Artikel wird beschrieben, wie Sie manuell eine App-Installer-Datei erstellen, die einen zugehörigen Satz mit Funktionen zum Automatischen Aktualisieren und Reparieren definiert. Ein verwandter Satz ist nicht eine Entität, sondern eine Kombination aus einem Standard Paket und optionalen Paketen.

Damit ein verwandter Satz als eine Entität installiert werden kann, müssen wir in der Lage sein, das Haupt- und optionale Paket als eins anzugeben. Dazu müssen wir eine XML-Datei mit der Erweiterung .appinstaller erstellen, um einen zugehörigen Satz zu definieren. Der App-Installer verwendet die Datei *.appinstaller und ermöglicht es dem Benutzer, alle definierten Pakete mit einem einzigen Klick zu installieren.

Während der Bereitstellung erfolgt die App-Installer-Datei wie folgt:

  • Das Windows-App-Paket, auf das im URI Attribut des < MainPackage-Elements > verwiesen wird, überprüft die Attribute Name, Publisher und Version des Windows-App-Pakets. Wenn das Paket/Identität-Element im Windows-App-Paketmanifest nicht übereinstimmen, schlägt die Installation fehl.
  • Erstellen Sie einen Verweis auf die Update- und Reparatur-URIs für die Paketfamilie.

Erstellen einer App-Installer-Datei

Um den zugehörigen Satz als eine Entität zu verteilen, müssen Sie eine App-Installer-Datei erstellen, die die Elemente enthält, die für dieses App-Installer-Schema erforderlich sind.

  1. Erstellen Sie die *.AppInstaller-Datei.
  2. Geben Sie die Attribute der App-Installer-Datei an.
  3. Geben Sie das Standard Windows-App-Paket an.
  4. Geben Sie den zugehörigen Satz Optionales Paket an.
  5. Geben Sie die Abhängigkeit für Windows-App-Frameworkpaket an.
  6. Geben Sie die Update-URI-Pfade an.
  7. Geben Sie die Reparatur-URI-Pfade an.
  8. Geben Sie die Update-Einstellungen an.
Beispiel für eine App-Installer-Datei

Nach dem Durchführen der oben aufgeführten Schritte, haben Sie erfolgreich eine App-Installer-Datei erstellt, die etwa wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <OptionalPackages>
        <Bundle
            Name="Contoso.OptionalApp1"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />

        <Bundle
            Name="Contoso.OptionalApp2"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />

        <Package
            Name="Fabrikam.OptionalApp3"
            Publisher="CN=Fabrikam"
            Version="10.34.54.23"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix"
            ProcessorArchitecture="x64" />
    </OptionalPackages>

    <UpdateURIs>
        <UpdateURI>http://mywebservice.azurewebsites.net/appset.appinstaller</UpdateURI>
        <UpdateURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</UpdateURI>
    </UpdateURIs>

    <RepairURIs>
        <RepairURI>http://mywebservice.azurewebsites.net/appset.appinstaller</RepairURI>
        <RepairURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</RepairURI>
    </RepairURIs>

    <UpdateSettings>
        <OnLaunch HoursBetweenUpdateChecks="0"/>   
    </UpdateSettings>

</AppInstaller>

Schritt 1: Erstellen Sie die *.AppInstaller-Datei

Erstellen Sie mit einem Text-Editor (Notepad.exe) eine neue Datei mit der Dateinamenerweiterung *.AppInstaller

Hilfe & Anleitung:
  1. Öffnen Sie das Start-Menü.
  2. Geben Sie folgenden Pfad ein: notepad.exe.
  3. Öffnen Sie das Datei-Menü.
  4. Wählen Sie Speichern Als im Dropdownmenü aus.

Schritt 2: Hinzufügen der Basisvorlage

Fügen Sie das AppInstaller Element in die App-Installer-Datei ein, wobei die Version, der Pfad und der Netzwerkadresse der App-Installer-Datei nicht berücksichtigt werden. Die Informationen im AppInstaller Element werden beim Installieren der zugehörigen Windows-Apps genutzt.

Element Beschreibung
xmlns Der XML-Namespace
Version Die Version der App-Installer-Datei in einer vierpunktigen Notation (1.0.0.0).
URI Ein URI-Pfad zur aktuellen App-Installer-Datei, auf die vom Gerät zugegriffen werden kann.
Hilfe & Anleitung:
  1. Öffnen Sie die in Schritt 1 erstellte Datei.

  2. Kopieren Sie den folgenden XML-Inhalt in Ihre *.AppInstaller-Datei.

    <?xml version="1.0" encoding="utf-8"?>
    <AppInstaller
        xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
        Version=""
        Uri="" >
    </AppInstaller>
    
  3. Aktualisieren des Version Attributs mit der Version Ihrer App-Installer-Datei

  4. Aktualisieren Sie das URI Attribut mit der Netzwerkadresse, wo auf diese *.AppInstaller-Datei zugegriffen werden kann.

Schritt 3: Hinzufügen der Standard Paketinformationen

Die <MainPackage> und <MainBundle> werden verwendet, um die primäre Windows-App zu identifizieren, die mit der App-Installer-Datei installiert wird. Die <MainPackage> wird verwendet, wenn das Windows-App-Installer entweder ein *.msix oder *.appx ist. Verwenden Sie, <MainBundle> wenn das Windows-App-Installer ein gebündelter Windows-App-Installer mit einer Erweiterung von *.msixbundle oder *.appxbundle ist.

Element BESCHREIBUNG
Name Der Name der primären Anwendung, die über die App-Installer-Datei verteilt wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Name.
Herausgeber Der kanonische Name des Herausgeberzertifikats, das zum Signieren des primären Windows-App-Installer verwendet wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Publisher.
Version Die Version des primären Windows-App-Installers in einer quadrierten Schreibweise (1.0.0.0). Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Version.
ProcessorArchitecture Die Architektur, auf der das primäre Windows-App-Installationsprogramm installiert wird.
URI Der URI-Pfad zum primären Windows-App-Installationsmedium.

Die Informationen im <MainBundle> oder <MainPackage>-Attribut sollten mit dem Package/Identity-Element im App-Bündelmanifest bzw. app-Paketmanifest übereinstimmen.

Windows App-Installer

Wenn es sich bei dem Standard-App-Paket um eine .msix- oder .appx-Datei handelt, verwenden Sie <MainPackage>, wie unten dargestellt. Achten Sie darauf, die ProcessorArchitecture einzuschließen, da sie für Nicht-Bundle-Pakete obligatorisch ist.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainPackage
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        ProcessorArchitecture="x64"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msix" />

</AppInstaller>
Windows App-Bündel-Installer

Wenn es sich bei dem Standard-App-Paket um eine .msixbundle- oder .appxbundle-Datei handelt, verwenden Sie <MainBundle> statt <MainPackage>, wie unten dargestellt. Für Bündel ist ProcessorArchitecture nicht erforderlich.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

</AppInstaller>

Schritt 4: Hinzufügen der optionalen Pakete

Ähnlich wie beim Standard App-Paket-Attribut sollte das untergeordnete Element innerhalb des <OptionalPackages> Attributs sein, wenn das optionale Paket entweder ein App-Paket oder ein App-Bündel sein <Package><Bundle> kann. Die Paketinformationen in den untergeordneten Elementen sollten mit dem Identitätselement im Bündel- oder Paketmanifest übereinstimmen.

Element BESCHREIBUNG
Name Der Name der optionalen Anwendung, die über die App-Installer-Datei verteilt wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Name.
Herausgeber Der kanonische Name des Herausgeberzertifikats, das zum Signieren des optionalen Windows-App-Installer verwendet wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Publisher.
Version Die Version des optionalen Windows-App-Installers in einer quadrierten Schreibweise (1.0.0.0). Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Version.
ProcessorArchitecture Die Architektur, auf der der optionale Windows-App-Installer installiert wird.
URI Der URI-Pfad zum primären Windows-App-Installationsmedium.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <OptionalPackages>
        <Bundle
            Name="Contoso.OptionalApp1"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />

        <Package
            Name="Fabrikam.OptionalApp3"
            Publisher="CN=Fabrikam"
            Version="10.34.54.23"
            ProcessorArchitecture="x64"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />

    </OptionalPackages>

</AppInstaller>

Schritt 5: Hinzufügen von Abhängigkeiten

Im Abhängigkeitselement können Sie die erforderlichen Frameworkpakete für das Standard-Paket oder die optionalen Pakete angeben.

Element BESCHREIBUNG
Name Der Name der Abhängigkeitsanwendung, die über die App-Installer-Datei verteilt wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Name.
Herausgeber Der kanonische Name des Herausgeberzertifikats, das zum Signieren des Windows-App-Installers für Abhängigkeiten verwendet wird. Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Publisher.
Version Die Version des Windows-App-Installers für Abhängigkeiten in einer quadrierten Schreibweise (1.0.0.0). Hierzu können Sie das folgende PowerShell-Cmdlet ausführen: $(Get-AppxPackage [AppName]).Version.
ProcessorArchitecture Die Architektur, auf der der Windows-App-Installer für Abhängigkeiten installiert wird.
URI Der URI-Pfad zum Installationsmedium der Windows-App für Abhängigkeiten.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <Dependencies>
        <Package 
            Name="Microsoft.VCLibs.140.00" 
            Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 
            Version="14.0.24605.0" ProcessorArchitecture="x86" Uri="http://foobarbaz.com/fwkx86.appx" />
        <Package 
            Name="Microsoft.VCLibs.140.00" 
            Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 
            Version="14.0.24605.0" 
            ProcessorArchitecture="x64" 
            Uri="http://foobarbaz.com/fwkx64.appx" />
    </Dependencies>

</AppInstaller>

Schritt 6: Hinzufügen der Updateeinstellung

Die App Installer-Datei kann auch die Updateeinstellung angeben, sodass die zugehörigen Sätze automatisch aktualisiert werden können, wenn eine neuere App-Installer-Datei veröffentlicht wird. <Update-Einstellungen> ist ein optionales Element. Innerhalb von <Update Einstellungen> gibt die Option OnLaunch an, dass Updateüberprüfungen beim Starten der App vorgenommen werden sollen und HoursBetweenUpdateChecks=„12“ gibt an, dass alle 12 Stunden eine Aktualisierungsprüfung durchgeführt werden soll. Wenn HoursBetweenUpdateChecks nicht angegeben ist, beträgt das Standardintervall, das zum Überprüfen auf Updates verwendet wird, 24 Stunden. Weitere Arten von Updates, z. B. Hintergrundupdates, finden Sie im Update Einstellungen-Schema; Weitere Arten von On-Launch-Updates wie Updates mit einer Eingabeaufforderung finden Sie im OnLaunch-Schema

Elemente Beschreibung
HoursBetweenUpdateChecks Definiert die minimale Lücke bei Windows-App-Updateüberprüfungen.
UpdateBlocksActivation Definiert die Erfahrung, wenn nach einem App-Update gesucht wird.
ShowPrompt Definiert, ob ein Fenster angezeigt wird, wenn Updates installiert werden und wann nach Updates gesucht wird.
ForceUpdateFromAnyVersion Gibt an, dass die nächste Version der Anwendung eine neuere oder ältere Version sein könnte. Bei True werden alle für beide Versionen installiert, wenn False (Standard) werden nur neue Versionen installiert.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12"
            UpdateBlocksActivation="true"
            ShowPrompt="true" />
        <AutomaticBackgroundTask />
        <ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>
    </UpdateSettings>

</AppInstaller>

Schritt 7: Hinzufügen der automatischen Aktualisierung Einstellungen

Wichtig

Die folgenden Einstellungen sind nur verfügbar, wenn Sie das 2021-Schema auf einem Windows-Insider-Build von Windows 10 verwenden.

Windows-Apps, die mit einer App Installer-Datei installiert sind, aktualisieren standardmäßig ihre Windows-App aus dem App Installer-URI, wobei die im vorherigen Schritt festgelegten Konfigurationen eingehalten werden. Die in diesem Schritt konfigurierten Update-URIs dienen als Fallback-URIs, die verwendet werden können, wenn auf den ursprünglichen App Installer-URI nicht mehr zugegriffen werden kann. Maximal 10 Update-URIs können für jede Windows-App konfiguriert werden.

Die Update-URI muss auf App-Installer-Dateien abzielen.

Hinweis

Diese Einstellungen funktionieren nur, wenn das Schema als 2021 oder höher konfiguriert ist.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12" />
    </UpdateSettings>

    <UpdateUris>
        <UpdateUri>https://www.contoso.com/Installers/MainApp.AppInstaller</UpdateUri>
        <UpdateUri>\\ServerName\Share\Installers\MainApp.AppInstaller</UpdateUri>
    </UpdateUris>

</AppInstaller>

Schritt 8: Hinzufügen der automatischen Reparatur Einstellungen

Wichtig

Die folgenden Einstellungen sind nur verfügbar, wenn Sie das 2021-Schema auf einem Windows-Insider-Build von Windows 10 verwenden.

Windows-Apps, die auf einem Gerät installiert sind, können die automatische Reparatur der Windows-App unterstützen, wenn sie manipuliert wurde. Das Quellinstallationsprogramm, das zum Reparieren der Windows-App verwendet wird, kann mithilfe der <RepairURIs> Eigenschaft konfiguriert werden. Die Windows-App versucht, sich selbst basierend auf dem App Installer-URI zu reparieren, falls nicht darauf zugegriffen werden kann, dann verwendet die Windows-App die Reparatur-URI, um eine Reparaturquelle zu identifizieren. Maximal 10 Reparatur-URIs können pro Windows-App konfiguriert werden.

Die Reparatur-URI kann auf die Dateien der Windows-App oder des App-Installers abzielen. Diese Einstellung erfordert nicht, dass die Windows-App mit einer App-Installer-Datei installiert wurde.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12" />
    </UpdateSettings>

    <RepairUris>
        <RepairUri></RepairUri>
        <RepairUri></RepairUri>
    </RepairUris>

</AppInstaller>

Alle Details zum XML-Schema finden Sie in der Referenz zur App-Installer-Datei.

Hinweis

Der Dateityp App-Installer ist neu in Windows 10, Version 1709 (Windows 10 Fall Creators Update). Es gibt keine Unterstützung für die Bereitstellung von Windows 10-Apps mit einer App-Installer-Datei in früheren Versionen von Windows 10. Das HoursBetweenUpdateChecks-Element ist ab Windows 10, Version 1803, verfügbar.