![]() |
VOOZH | about |
dotnet add package Oakrey.Applications.SplashScreen --version 6.0.0
NuGet\Install-Package Oakrey.Applications.SplashScreen -Version 6.0.0
<PackageReference Include="Oakrey.Applications.SplashScreen" Version="6.0.0" />
<PackageVersion Include="Oakrey.Applications.SplashScreen" Version="6.0.0" />Directory.Packages.props
<PackageReference Include="Oakrey.Applications.SplashScreen" />Project file
paket add Oakrey.Applications.SplashScreen --version 6.0.0
#r "nuget: Oakrey.Applications.SplashScreen, 6.0.0"
#:package Oakrey.Applications.SplashScreen@6.0.0
#addin nuget:?package=Oakrey.Applications.SplashScreen&version=6.0.0Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.SplashScreen&version=6.0.0Install as a Cake Tool
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.
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>.Task instances while the splash is visible.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.Oakrey.Log logging and Oakrey.Telemetry activity tracing throughout the startup flow.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
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]
net10.0-windows7 or later)UseWPF must be enabled in the consuming project)Oakrey.Applications � provides IApplicationInfo and ApplicationInfoOakrey.Msi � MSI deployment and update checkingOakrey.Files.Windows � file utilities (transitive)Oakrey.Wpf.Converters � WPF value converters used by SplashWindowNuGet Package Manager
Oakrey.Applications.SplashScreen and click Install..NET CLI
dotnet add package Oakrey.Applications.SplashScreen
Package Manager Console
Install-Package Oakrey.Applications.SplashScreen
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.
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();
}
}
| 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. |
SplashScreenService<T> uses DummyAppInfo when constructed without DI (parameterless constructor), logging a warning. This is intended for design-time and testing scenarios only.ILoggerEngine.Log override only reacts to Level.Information; other log levels are ignored by the splash window text binding.SplashWindow instance created with an "{AppName} Update" title and the downloaded version string.MIT. See the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-windows7.0 net10.0-windows7.0 is compatible. |
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. |
This package is not used by any popular GitHub repositories.