Q:

App Certification fails because of PreLaunch Test

When I run the App Certification on my Template 10 based app, I get the following error:
Error Found: The app prelaunch validation detected the following errors:◦The app failed prelaunch test - 49581RisingSoundMedia.ElectionCentral_1.1.7.0_x64__xrbjpqg44kdgm.
•Impact if not fixed:  The app will take a longer time to launch, even when prelaunch is enabled. 
•How to fix: In the OnLaunched method implementation of the app, ensure you handle the LaunchActivatedEventArgs.PreLaunch option to be prelaunch event aware.
Obviously I can't override the OnLaunched even with Template 10 because the Bootstrap class seals it.
I tried overriding the OnPreLaunchAsync and setting continueStartup = false; but it did not fix the problem.
Any ideas?

A:

This seems to be a known issue with Windows App Cert Kit: https://developer.microsoft.com/en-us/windows/develop/app-certification-kit
"The App Prelaunch Validation test will fail ig you run on a version of Windows-10 released before version 1607(Windows Anniversary Edition). Note that this test is not run as part of the final certification for Windows Store submissions"
Resolution: To ensure the results to this test pass, test with Windows-10 SDK Version (14393) running on Windows-10 Anniversary Edition. 

A:

Turns out that I was able to publish to the store, and it passed certification even though it failed the local Windows App Cert Kit locally.

A:

Yes i had this problem, first have you updated to the lastest version of Template 10 (1.1.4): https://www.nuget.org/packages/template10
Next what I had to do was move all of my code that was in OnInitializeAsync and OnStartAsync that was in app.xaml.cs into the App().
You need to keep OnInitializeAsync and OnStartAsync as lean as possible, you should keep only the essential Template10 code in them and add your specific code in 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;
        }

In App() I added all my my initialization methods for my app so my App() looks liek this:
    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();
    }

I hope that this helps you out!

