Freigeben über


So bringen Sie Benutzer von Ihrer nicht im Store gepackten Web-App zu einer Store-gepackten App.

Wenn Sie Ihre Anwendung sowohl als Webdownload (EXE /MSI) als auch im Store als verpackte Anwendung (MSIX) verteilen, sollten Sie verhindern, dass Benutzer beide Versionen installieren oder Benutzer aus der entpackten Webversion in die Store-Version migrieren. Dieses Handbuch enthält Anweisungen zum nahtlosen Übergang von benutzern von der entpackten Version zur verpackten Version.

Im Folgenden werden zwei Szenarien beschrieben:

  1. Der Benutzer hat die webbasierte entpackte Version bereits installiert, und Sie möchten sie durch die verpackte Version des Store ersetzen.
  2. Der Benutzer hat beide Versionen bereits installiert, und Sie möchten der Store-Paketversion Priorität geben und die webbasierte entpackte Version deinstallieren.

Szenario 1: Automatisches Aktualisieren der entpackten Webanwendung auf die store-verpackte Anwendung

Wenn Sie ihre Benutzer automatisch aus der Web-entpackten Anwendung in die verpackte Store-Version migrieren möchten, empfehlen wir, die folgenden Schritte auszuführen:

  1. Ermöglichen Sie Ihrer Store-verpackten Anwendung die Nutzung vorhandener Taskleisten- und Startmenü-Pins, um sicherzustellen, dass Benutzer ihre Verknüpfungen beibehalten, wenn die Store-verpackte Anwendung die unverpackte Webanwendung ersetzt.
  2. Laden Sie die Store-Version still und leise aus Ihrer entpackten Webversion herunter und installieren Sie sie dann.
  3. Geben Sie Benutzern an, dass die Anwendung neu gestartet wird, um ein Update anzuwenden.
  4. Starten Sie nach dem Herunterladen und Installieren die Store-Paketversion, und schließen Sie die entpackte Webversion.
  5. Migrieren Sie die Daten in der Store-verpackten Anwendung in den neuen App-Datenordner.
  6. Schließlich deinstallieren Sie die entpackte Webversion programmgesteuert.

Szenario 2: Deinstallieren Sie die webbasierte entpackte Anwendung, wenn der Benutzer beide Versionen installiert hat.

Sie können Es Ihren Benutzern ermöglichen, beide Versionen Ihrer Anwendung nebeneinander zu verwenden. Sie müssen jedoch Konflikte zwischen der Anwendung verwalten und für die Synchronisierung der Daten zwischen den 2 Versionen verantwortlich sein.

Wenn Sie es Ihren Benutzern vorziehen, nur 1 Version zu verwenden und die Store-Version zu priorisieren, sind hier einige Empfehlungen aufgeführt:

  1. Ermöglichen Sie Ihrer Store-verpackten Anwendung die Nutzung vorhandener Taskleisten- und Startmenü-Pins, um sicherzustellen, dass Benutzer ihre Verknüpfungen beibehalten, wenn die Store-verpackte Anwendung die unverpackte Webanwendung ersetzt.
  2. Die Store-Anwendung sollte erkennen, ob die entpackte Version vorhanden ist, und sie beim Start deinstallieren.
  3. Wenn Benutzer die entpackte Anwendung starten, sollten Sie die verpackte Version automatisch starten.
  4. Potenziell migrieren Sie die Daten, wenn Sie möchten
  5. Schließlich deinstallieren Sie die entpackte Webversion programmgesteuert.

Technische Empfehlungen

So installieren Sie die store-verpackte Anwendung aus Ihrer nicht verpackten Webanwendung

Um den Download und die Installation zu initiieren, müssen Sie die Store-ID Ihrer Anwendung kennen. Diese 12-stellige ID kann aus dem Partner Center abgerufen werden, insbesondere im Abschnitt "Produktidentität", auch wenn Ihre Anwendung noch nicht übermittelt wurde.

Anschließend können Sie den folgenden Code verwenden, um die Store-Anwendung automatisch herunterzuladen und zu installieren. Dieser Code bewirkt Folgendes:

  1. Weisen Sie dem aktuellen Store-Benutzer eine Berechtigung zu, falls vorhanden; andernfalls wird die Berechtigung dem Gerät zugeordnet.
  2. Initiieren Sie den Download und die Installation des Produkts, ohne Benachrichtigungs-Popups zu generieren.
  3. Sie können den Download- und Installationsfortschritt mithilfe der Ereignis-APIs überwachen.
    private async Task<bool> DownloadStoreVersionAsync()
    {
        var productId = "<Product Id from Partner Center>";
        var applicationName = "<name of your application>";

        var appInstallManager = new AppInstallManager();
        var entitlement = await appInstallManager.GetFreeUserEntitlementAsync(productId, string.Empty, string.Empty);
        if (entitlement.Status is GetEntitlementStatus.NoStoreAccount)
        {
            entitlement = await appInstallManager.GetFreeDeviceEntitlementAsync(productId, string.Empty, string.Empty);
        }
        if (entitlement.Status is not GetEntitlementStatus.Succeeded)
        {
            return false;
        }

        var options = new AppInstallOptions()
        {
            LaunchAfterInstall = true,
            CompletedInstallToastNotificationMode = AppInstallationToastNotificationMode.NoToast
        };
        var items = await appInstallManager.StartProductInstallAsync(productId, string.Empty, applicationName, string.Empty, options);
        var firstItem = items.FirstOrDefault();
        if(firstItem is null)
        {
            return false;
        }
        firstItem.StatusChanged += StoreInstallation_StatusChanged;
        firstItem.Completed += StoreInstallation_Completed;
        return true;
    }

    private void StoreInstallation_Completed(AppInstallItem sender, object args)
    {
        // Launch the new Store version when ready and close this application
        // The Store version will then be responsible of migrating the data and uninstall the unpackaged version
    }

    private void StoreInstallation_StatusChanged(AppInstallItem sender, object args)
    {
        var status = sender.GetCurrentStatus();
        switch(status.InstallState)
        {
            case AppInstallState.Installing:
                {
                    // Show installing status
                }
                break;
            case AppInstallState.Downloading:
                {
                    // Show download progress using status.PercentComplete
                }
                break;
            ...
        }

So starten Sie die Store-Anwendung aus Ihrer nicht verpackten Web-App

Um eine Store-Anwendung zu starten, müssen Sie ihre AMUID kennen, die aus dem Paketfamiliennamen (im Abschnitt "Produktidentität" des Partner Centers) und der Anwendungs-ID (von Ihrem appxmanifest) getrennt durch ein Ausrufezeichen (!) besteht.

        Process.Start(
            "explorer.exe",
            "shell:AppsFolder\\Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"
        );

Ermitteln, ob die Store-Paketversion installiert und gestartet wird

Mit der GetPackagesByPackageFamily win32-API und dem Übergeben des Paketfamiliennamens Ihrer verpackten App können Sie ermitteln, ob Die verpackte Version der Anwendung installiert ist. Wenn der Anzahlwert höher als Null ist, gibt er an, dass die Anwendung installiert ist.

So deinstallieren Sie Ihre nicht verpackte Webanwendung aus der verpackten Anwendung

Um den absoluten Pfad Ihres Deinstallationsprogramms abzurufen, können Sie auf die Registrierung zugreifen.

Ihre Deinstallationsinformationen befinden sich in der Registrierung unter:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<your product code GUID\>

Rufen Sie den vollständigen Befehl im UninstallString Wert ab, und führen Sie ihn aus. Es wird empfohlen, die Deinstallation im Hintergrund durchzuführen oder den Benutzer darüber zu informieren, dass Sie Daten migrieren und die andere Anwendung deinstallieren.

Anleitung zum Migrieren von Daten

Ihre entpackte Anwendung speichert ihre lokalen Daten wahrscheinlich in:

%localAppData%/<YourPublisherName\>/<YourAppName\>

Verpackte Anwendungen verfügen über ihren reservierten Speicherplatz für die Datenspeicherung, der automatisch gelöscht wird, wenn die Anwendung deinstalliert wird. Es wird dringend empfohlen (jedoch nicht obligatorisch), die Daten beim ersten Start in diesen Bereich zu migrieren. Sie können den absoluten Pfad dieses Ordners abrufen, indem Sie Windows.Storage.ApplicationData.Current.LocalFolder.Path aufrufen.

Wie man Erwerbungen und In-App-Käufe migriert

In-App-Käufe

Um eine optimale Benutzererfahrung zu gewährleisten, ist es wichtig, dass Benutzer nahtlos auf Inhalte zugreifen können, die sie in der entpackten Version Ihrer Anwendung erworben haben. Mit diesem Ziel hat der Microsoft Store seine Flexibilität für Herausgeber erhöht, indem er neben den Microsoft-Plattformen seit Juni 2021 auch die Nutzung eigener oder Drittanbieter-Commerce-Plattformen erlaubt.

Wir empfehlen Herausgebern dringend, weiterhin die In-App-Kaufberechtigungen wie in der entpackten Version ihrer Anwendung zu überprüfen, zusätzlich zur Integration in die Microsoft Commerce-Plattform, damit Benutzer Ihre Inhalte mühelos mit nur wenigen Klicks auf Windows kaufen können.

Zulassen, dass kostenpflichtige Benutzer der entpackten Anwendung zur verpackten Version migriert werden

Wenn Benutzer Ihr Produkt auf Ihrer Website erworben haben, sollten sie nicht erneut bezahlen müssen, um die verpackte Version aus dem Store herunterzuladen. Um einen nahtlosen Übergang zu gewährleisten, empfehlen wir die folgenden Ansätze:

  1. Bieten Sie eine kostenlose/Demoversion Ihres Produkts an, sodass Benutzer die Vollversion über In-App-Käufe entsperren können. Für Benutzer, die bereits auf Ihrer Website bezahlt haben, können sie auf die Vollversion zugreifen, indem Sie sich anmelden, um ihre Lizenzen zu überprüfen oder ihren Lizenzschlüssel auf der Benutzeroberfläche der Anwendung einzugeben.
  2. Legen Sie Ihre Anwendung als kostenpflichtiges Angebot fest, verteilen Sie aber Couponcode über Ihre eigenen Kanäle an Ihre vorhandenen Benutzer. Diese Codes ermöglichen es ihnen, die Store-Version ohne zusätzliche Kosten herunterzuladen. Weitere Informationen finden Sie unter "Werbecodes generieren".

So migrieren Sie vorhandene angeheftete Taskleisten- und Startmenüverknüpfungen

Möglicherweise haben Ihre Benutzer die Desktopanwendung an die Taskleiste oder das Startmenü angeheftet. Sie können diese Tastenkombinationen an Ihre neue verpackte App weiterleiten, indem Sie die Erweiterung "windows.desktopAppMigration" in Ihr Anwendungsmanifest einschließen.

Beispiel

xmlns:rescap3="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities/3"
...
<Extensions>
<rescap3:Extension Category="windows.desktopAppMigration">
<rescap3:DesktopAppMigration>
<rescap3:DesktopApp AumId="[your_app_aumid]" />
<rescap3:DesktopApp ShortcutPath="%USERPROFILE%\Desktop\[my_app].lnk" />
<rescap3:DesktopApp ShortcutPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\[my_app].lnk" />
<rescap3:DesktopApp ShortcutPath="%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\[my_app_folder]\[my_app].lnk"/>
</rescap3:DesktopAppMigration>
</rescap3:Extension>
</Extensions>

Nach der Installation Ihrer Anwendung werden die Pins in der Taskleiste oder im Startmenü sowie die Kacheln (für Windows 10) die Store-Anwendung automatisch starten.

Wie Sie Dateierweiterungs- und Protokollzuordnungen migrieren

Wenn Ihre Anwendung Dateierweiterungs- oder Protokollzuordnungen unterstützt und Benutzer Ihre App als Standardanwendung für bestimmte Dateierweiterungen und Protokolle ausgewählt haben, haben Sie die Möglichkeit, diese Zuordnungen zu Ihrer Store-verpackten Anwendung zu migrieren. Diese Migration kann erreicht werden, indem Sie Ihr App-Manifest mit dem folgenden Codeausschnitt aktualisieren.

xmlns:rescap3="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities/3"
...
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap3:FileTypeAssociation Name=".foo">
<rescap3:MigrationProgIds>
<rescap3:MigrationProgId>Foo.Bar.1</rescap3:MigrationProgId>
</rescap3:MigrationProgIds>
…
</uap3:FileTypeAssociation>
</uap:Extension>
</Extensions>

Notieren Sie einfach die programmgesteuerten IDs , zu denen Sie migrieren möchten, und das System migriert sie nach der Installation automatisch zu Ihrer Anwendung.