none
Windows 10 UWP Store <> CurrentApp LicenseInformation RRS feed

  • Frage

  • Hallo zusammen,

    ich wollte am Wochenende wieder mal meine Apps im Store aktualisieren und bin auf ein für mich bisher unlösbares Problem gestoßen. Ich kann die Apps im Debug Mode in Visual Studio einwandfrei ausführen. Tue ich dies allerdings als Release, bekomme ich seit neustem (wahrscheinlich seit Threshold 2) immer folgenden Fehler:

    info:get_LicenseInformation() invoked.Windows::ApplicationModel::Store::CurrentAppFactory::get_LicenseInformation)

    ERROR:ChkHr(spStoreCommerce->Initialize(HStringReference(wszCV).Get())) (0x803f6107) (Windows::ApplicationModel::Store::CurrentAppFactory::GetStoreCommerce)

    ERROR:ChkHr(GetStoreCommerce(&spStoreCommerce)) (0x803f6107) (Windows::ApplicationModel::Store::CurrentAppFactory::get_LicenseInformation)

    Ausnahme ausgelöst: "System.Exception" in vZoom.Interop.dllwindows\dxaml\xcp\components\deferral\customwriterruntimeobjectcreator.cpp(113)\Windows.UI.Xaml.dll!00007FFB42A7E7EF: (caller: 00007FFB4279B574) Exception(1) tid(1384) 80004005 Unbekannter Fehlerwindows\dxaml\xcp\components\resources\resourcedictionary2.cpp(48)\Windows.UI.Xaml.dll!00007FFB429F795D: (caller: 00007FFB427F74E6) ReturnHr(1) tid(1384) 80004005 Unbekannter Fehler

    Ausnahme ausgelöst: "Windows.UI.Xaml.Markup.XamlParseException" in vCards.Interop.dllAusnahme ausgelöst: "Windows.UI.Xaml.Markup.XamlParseException" in System.Private.CoreLib.dllDas Programm "[11444] vZoom.exe" wurde mit Code 0 (0x0) beendet.

    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Threading.Tasks;
    using Windows.ApplicationModel;
    using Windows.ApplicationModel.Resources;
    using Windows.ApplicationModel.Store;
    using Windows.Storage;
    using Windows.UI.Core;
    using Windows.UI.Xaml;
    
    namespace vZoom.DataModel
    {
        class AppLicenseDataSource : INotifyPropertyChanged
        {
            private static readonly ResourceLoader Res = new ResourceLoader();
            private static readonly ApplicationDataContainer LocalSettings = ApplicationData.Current.LocalSettings;
            public event PropertyChangedEventHandler PropertyChanged;
    
            private static string _price;
    
            public AppLicenseDataSource()
            {
    #if DEBUG
                LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
    #else
                LicenseInformation licenseInformation = CurrentApp.LicenseInformation;
    #endif
    
                if (licenseInformation.IsActive)
                {
                    IsActive = true;
    
                    if (licenseInformation.IsTrial)
                    {
                        licenseInformation.LicenseChanged += OnLicenseChanged;
                        GetListingInformationAsync();
                        LocalSettings.Values["IsTrial"] = "1";
                    }
                    else
                    {
                        IsLicensed = true;
                        LocalSettings.Values["IsTrial"] = "0";
                    }
                }
                else
                {
                    IsActive = false;
                    LocalSettings.Values["IsTrial"] = "-1";
                }
            }
    
            private static async void GetListingInformationAsync()
            {
                try
                {
    
    #if DEBUG
                    ListingInformation productListing = await CurrentAppSimulator.LoadListingInformationAsync();
    #else
                    ListingInformation productListing = await CurrentApp.LoadListingInformationAsync();
    #endif
    
                    _price = productListing.FormattedPrice;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("\nGetListingInformationAsync");
                    Debug.WriteLine("Message: {0}", ex.Message);
                }
            }
    
            private async void OnLicenseChanged()
            {
    #if DEBUG
                LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
    #else
                LicenseInformation licenseInformation = CurrentApp.LicenseInformation;
    #endif
    
                if (!licenseInformation.IsTrial)
                {
                    IsLicensed = true;
                    licenseInformation.LicenseChanged -= OnLicenseChanged;
    
                    await ((App)Application.Current).Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                    {
                        if (PropertyChanged != null)
                        {
                            PropertyChanged(this, new PropertyChangedEventArgs("IsLicensed"));
                            PropertyChanged(this, new PropertyChangedEventArgs("IsTrial"));
                            PropertyChanged(this, new PropertyChangedEventArgs("LicenseInfo"));
                            PropertyChanged(this, new PropertyChangedEventArgs("LicenseExpiration"));
                        }
                    });
                }
            }
    
            public bool IsLicensed { get; private set; }
    
            public bool IsTrial => !IsLicensed;
    
            public bool IsActive { get; set; }
    
            public string LicenseInfo
            {
                get
                {
                    if (IsActive)
                    {
                        if (!IsLicensed)
                        {
                            return "Trial license";
                        }
                        return "Full license";
                    }
                    return "Inactive license";
                }
            }
    
            public string LicenseExpiration
            {
                get
                {
                    if (!IsLicensed)
                    {
    #if DEBUG
                        LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
    #else
                        LicenseInformation licenseInformation = CurrentApp.LicenseInformation;
    #endif
                        return Res.GetString("ExpiresOn") + Environment.NewLine + licenseInformation.ExpirationDate.LocalDateTime.ToString("dddd, d. MMMM yyyy HH:mm");
                    }
                    return Res.GetString("LicensedText");
                }
            }
    
            public string FormattedPrice
            {
                get
                {
                    if (!string.IsNullOrEmpty(_price))
                    {
                        return Res.GetString("UpgradePriceText") + _price;
                    }
    
                    return Res.GetString("UpgradeText");
                }
            }
    
        }
    }

    Dieser Code dient dazu, die App im Store als Trial-Version anbieten zu können. Ich nutze diesen Code bereits seit Windows 8.1 und hatte nie Probleme damit. Seit vermutlich dem letzten großen Windows 10 Upgrade Threshold 2 funktioniert das nicht mehr. Jedenfalls hat es vor diesem Upgrade noch funktioniert. Ich habe ansonsten in meinem anderen Code nichts diesbezüglich geändert und es betrifft alle Apps die ich im Store anbiete. Kann das irgendwer bestätigen, dass Microsoft mit Threshold 2 dort Änderungen durchgeführt hat und wie man den Code gegebenenfalls anpassen muss?

    Gruß

    toni

    Montag, 16. November 2015 15:51

Alle Antworten

  • Hallo Toni,

    Wenn das Update erfolgreich installiert wurde, soll die Version 1511 (Build 10586.3) aufgezeigt werden. Würdest Du das überprüfen? Sieh Dir zudem folgenden Thread an:
    Unable to activate Windows Store app (Visual Studio 2015, Windows 10 Version 1511)

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 18. November 2015 06:40
    Moderator
  • Hallo Dimitar,

    danke für dein Feedback. Ich habe mir das angeschaut und die Windows Version ist exakt genau so. Auch der Hinweis auf StackOverflow hat mich nicht weitergebracht. Auch wenn ich meine Projekte auf Laufwerk C:\ speichere, ändert das nichts an diesem Fehler. Durch diesen Fehler ist es dann leider auch nicht möglich, ein App-Paket zu erstellen.

    Der Fehler bleibt also.

    Allerdings habe ich den Code jetzt mit try/catch insoweit entschärft, dass zumindest das Windows App Certification Kit durchläuft und ich ein Paket zum hochladen in den Store erstellen konnte. Dennoch führt der Fehler weiterhin dazu, dass ich meine Apps nicht mehr als Release korrekt ausführen kann. Es sind deutlich spürbare zeitliche Hänger im Ablauf spürbar. Im Store scheint es dann scheinbar allerdings zu funktionieren.

    Schade, dass Microsoft solche Änderungen nicht kommuniziert.

    Gruß

    toni


    • Bearbeitet xenon-seven Mittwoch, 18. November 2015 14:32
    Mittwoch, 18. November 2015 14:31
  • Ich erhalte bei mir (ebenfalls TH2) auch diesen Fehler 0x803f6107. Jedoch kann ich nicht sagen, ob dies nach dem TH2-Update ebenfalls der Fall war.

    Ich frage mich, wie man momentan die IAPs testen kann. Schließlich scheint auch der CurrentAppSimulator nicht zu funktionieren, der bei mir folgenden internen Fehler liefert:

    Unable to cast object of type 'System.__ComObject' to type 
    'Windows.ApplicationModel.Store.ICurrentAppSimulatorStaticsWithFiltering'.

    Hat hier jemand einen Tipp, wie man aktuell trotzdem IAPs testen kann, ohne erst die App (als Beta) veröffentlichen zu müssen.

    Danke im Voraus!

    Samstag, 28. November 2015 18:40