Oakrey.Applications.SplashScreen 4.0.3

dotnet add package Oakrey.Applications.SplashScreen --version 4.0.3
                    
NuGet\Install-Package Oakrey.Applications.SplashScreen -Version 4.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Oakrey.Applications.SplashScreen" Version="4.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Oakrey.Applications.SplashScreen" Version="4.0.3" />
                    
Directory.Packages.props
<PackageReference Include="Oakrey.Applications.SplashScreen" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Oakrey.Applications.SplashScreen --version 4.0.3
                    
#r "nuget: Oakrey.Applications.SplashScreen, 4.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Oakrey.Applications.SplashScreen@4.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Oakrey.Applications.SplashScreen&version=4.0.3
                    
Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.SplashScreen&version=4.0.3
                    
Install as a Cake Tool

Oakrey.Applications.SplashScreen

A .NET 10 WPF library that provides an async splash screen for Windows desktop applications. It runs arbitrary preload tasks in parallel, optionally checks for MSI updates, and returns a SplashResult that drives the application startup flow.

Main features

  • ISplashScreenService abstraction for showing the splash screen and awaiting startup completion.
  • SplashScreenService<T> generic implementation where T is the entry-point assembly marker used by MsiDeployment<T>.
  • Parallel execution of any number of preload Task instances while the splash is visible.
  • Integrated MSI update flow: checks for update, shows update progress in a second splash window, and shuts down after applying.
  • SplashResult enum communicating the outcome (NoUpdateAvailable, UpdateSkipped, UpdateRequested, ShutdownRequested).
  • ISplashScreenService extends ILoggerEngine � any ILogger.Information call forwarded through the service updates the on-screen loading text.
  • SplashScreenConfigurationExtension for one-line DI registration.
  • Integrated Oakrey.Log logging and Oakrey.Telemetry activity tracing throughout the startup flow.

Project structure

SplashScreen/
  ISplashScreenService.cs                 # Service abstraction (extends ILoggerEngine)
  SplashScreenService.cs                  # Generic implementation with MSI update support
  SplashWindow.xaml / .xaml.cs           # WPF splash window (INPC, async ShowAsync)
  SplashscreenConfigurationExtension.cs  # IServiceCollection extension
  SplashResult.cs                         # Enum describing startup outcome

Startup flow

flowchart TD
    A[App starts] --> B[ShowSplashScreen called]
    B --> C{requireUpdate?}
    C -- No --> D[Run preload tasks]
    C -- Yes --> E[CheckForUpdate + preload tasks in parallel]
    E --> F{Update available?}
    F -- No --> D
    F -- Yes --> G[User sees Update / Skip buttons]
    G -- Skip --> D
    G -- Update --> H[Run MsiDeployment.Update]
    H --> I[Application.Shutdown]
    G -- Close --> J[ShutdownRequested]
    D --> K[Return true - continue startup]
    J --> L[Return false - abort startup]

Requirements

  • .NET 10, Windows (net10.0-windows7 or later)
  • WPF (UseWPF must be enabled in the consuming project)
  • Oakrey.Applications � provides IApplicationInfo and ApplicationInfo
  • Oakrey.Msi � MSI deployment and update checking
  • Oakrey.Files.Windows � file utilities (transitive)
  • Oakrey.Wpf.Converters � WPF value converters used by SplashWindow

Installation

NuGet Package Manager

  1. Open your project in Visual Studio.
  2. Navigate to Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
  3. Search for Oakrey.Applications.SplashScreen and click Install.

.NET CLI

dotnet add package Oakrey.Applications.SplashScreen

Package Manager Console

Install-Package Oakrey.Applications.SplashScreen

Configuration

Register the service in your DI container. The generic parameter T must be a class from the entry-point assembly so that MsiDeployment<T> can locate the installed product:

services.ConfigureSplashScreenService<App>();

IApplicationInfo must also be registered. SplashScreenService<T> resolves it from the container to populate the window title, version label, and logo.

Example usage

Typical placement is in App.xaml.cs before the main window is shown:

public partial class App : Application
{
    protected override async void OnStartup(StartupEventArgs e)
    {
        ServiceProvider provider = ConfigureServices();

        ISplashScreenService splash = provider.GetRequiredService<ISplashScreenService>();

        bool continueStartup = await splash.ShowSplashScreen(
            requireUpdate: true,
            preloadFunction: LoadSettingsAsync(), LoadCacheAsync());

        if (!continueStartup)
        {
            Shutdown();
            return;
        }

        MainWindow mainWindow = provider.GetRequiredService<MainWindow>();
        mainWindow.Show();
    }
}

SplashResult values

Value Meaning
NoUpdateAvailable No update found; startup continues normally.
UpdateSkipped Update was available but the user skipped it.
UpdateRequested Update was applied; Application.Shutdown() is called internally.
ShutdownRequested User closed the splash window; caller should abort startup.

Development notes

  • SplashScreenService<T> uses DummyAppInfo when constructed without DI (parameterless constructor), logging a warning. This is intended for design-time and testing scenarios only.
  • The ILoggerEngine.Log override only reacts to Level.Information; other log levels are ignored by the splash window text binding.
  • Update progress is shown in a second SplashWindow instance created with an "{AppName} Update" title and the downloaded version string.

License

MIT. See the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.3 40 5/15/2026
4.0.2 118 3/13/2026
4.0.1 130 2/11/2026
4.0.0 446 11/18/2025
3.1.2 190 10/10/2025
3.1.1 250 9/29/2025
3.1.0 215 9/23/2025
3.0.0 242 9/8/2025
2.0.1 239 6/17/2025
2.0.0 308 6/9/2025
1.0.0 286 4/17/2025