Сертификация приложения не работает из-за теста PreLaunch

Когда я запускаю сертификацию приложений в моем приложении на основе шаблона 10, я получаю следующую ошибку:

Обнаружена ошибка. При проверке предварительного запуска приложения обнаружены следующие ошибки: ◦ Не удалось выполнить предварительный тест приложения - 49581RisingSoundMedia.ElectionCentral_1.1.7.0_x64__xrbjpqg44kdgm.

• Воздействие, если оно не исправлено: для запуска приложения потребуется больше времени, даже если включен предварительный запуск.

• Как исправить: в реализации метода метода OnLaunched убедитесь, что вы обрабатываете параметр LaunchActivatedEventArgs.PreLaunch, чтобы быть предупреждающим событием.

Очевидно, я не могу переопределить OnLaunched даже с шаблоном 10, потому что класс Bootstrap запечатывает его.

Я попытался переопределить OnPreLaunchAsync и установить continueStartup = false; но это не устранило проблему.

Любые идеи?

Ответ 1

Оказывается, что я смог опубликовать его в магазине, и он прошел сертификацию, хотя локальный локальный набор сертификатов приложений Windows локально не удался.

Ответ 2

Это, похоже, известная проблема с сертификатом Windows App Kit: https://developer.microsoft.com/en-us/windows/develop/app-certification-kit

" Тест проверки предварительного запуска приложения не завершится, если вы запускаете версию Windows-10, выпущенную до версии 1607 (выпуск Windows Anniversary Edition). Обратите внимание, что этот тест не выполняется как часть окончательной сертификации для Windows Store Доводы"

Разрешение: Чтобы обеспечить результаты этого теста, протестируйте версию Windows 10 SDK (14393), запущенную в выпуске Windows-10 Anniversary Edition.

Ответ 3

Да, у меня была эта проблема: сначала вы обновили до последней версии Template 10 (1.1.4): https://www.nuget.org/packages/template10

Далее мне нужно было переместить весь мой код, который был в OnInitializeAsync и OnStartAsync, который был в app.xaml.cs в App().

Вам нужно, чтобы OnInitializeAsync и OnStartAsync были максимально тонкими, вы должны сохранить в них только необходимый код Template10 и добавить свой код в App().

      public override Task OnInitializeAsync(IActivatedEventArgs args)
        {
            // content may already be shell when resuming
            if ((Window.Current.Content as ModalDialog) == null)
            {
                // setup hamburger shell
                var nav = NavigationServiceFactory(BackButton.Attach, ExistingContent.Include);
                Window.Current.Content = new ModalDialog
                {
                    DisableBackButtonWhenModal = true,
                    Content = new Shell(nav),
                    ModalContent = new Views.Busy(),
                };
            }
            return Task.CompletedTask;
        }


  public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
        {
            NavigationService.Navigate(typeof(MainView));
            return Task.CompletedTask;
        }

В приложении() я добавил все мои мои методы инициализации для моего приложения, поэтому приложение App() выглядит так:

    public App()
    {
        Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
            WindowsCollectors.Metadata |
            WindowsCollectors.UnhandledException |
            WindowsCollectors.PageView |
           WindowsCollectors.Session

            );

        this.InitializeComponent();
       var element = new ViewModelLocator();
        //Template10.Services.LoggingService.LoggingService.Enabled = true;


        //Template 10 stuff
        // DOCS: https://github.com/Windows-XAML/Template10/wiki/Docs-%7C-Cache
        CacheMaxDuration = TimeSpan.FromDays(1);

        // DOCS: https://github.com/Windows-XAML/Template10/wiki/Docs-%7C-BackButton
        ShowShellBackButton = SettingsService.Instance.UseShellBackButton;

        // DOCS: https://github.com/Windows-XAML/Template10/wiki/Docs-%7C-SplashScreen
        SplashFactory = (e) => new Views.Splash(e);


        //My code here
        ApiRoot.Instance.Init(); 
        InitDeviceTypeAndResource();
        InitApiLanguage();
        InitAppLanguage();
        InitABCRatings();

        //For updating Tiles
        RegisterBackgroundTask();
    }

Я надеюсь, что это поможет вам!