Oakrey.Applications.SplashScreen 6.0.0

dotnet add package Oakrey.Applications.SplashScreen --version 6.0.0
                    
NuGet\Install-Package Oakrey.Applications.SplashScreen -Version 6.0.0
                    
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="6.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Oakrey.Applications.SplashScreen" Version="6.0.0" />
                    
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 6.0.0
                    
#r "nuget: Oakrey.Applications.SplashScreen, 6.0.0"
                    
#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@6.0.0
                    
#: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=6.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.SplashScreen&version=6.0.0
                    
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 (1)

Showing the top 1 NuGet packages that depend on Oakrey.Applications.SplashScreen:

Package Downloads
Oakrey.Applications.Base

A foundational .NET library for building modular WPF applications. Provides application lifecycle management, MVVM ViewModel resolution, structured logging, telemetry, and sequential or parallel service preloading with full unhandled-exception coverage.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
6.0.0 37 5/22/2026
5.0.0 42 5/22/2026
4.0.3 89 5/15/2026
4.0.2 119 3/13/2026
4.0.1 132 2/11/2026
4.0.0 447 11/18/2025
3.1.2 192 10/10/2025
3.1.1 251 9/29/2025
3.1.0 216 9/23/2025
3.0.0 245 9/8/2025
2.0.1 239 6/17/2025
2.0.0 308 6/9/2025
1.0.0 287 4/17/2025