![]() |
VOOZH | about |
dotnet add package Oakrey.Applications.About --version 6.0.0
NuGet\Install-Package Oakrey.Applications.About -Version 6.0.0
<PackageReference Include="Oakrey.Applications.About" Version="6.0.0" />
<PackageVersion Include="Oakrey.Applications.About" Version="6.0.0" />Directory.Packages.props
<PackageReference Include="Oakrey.Applications.About" />Project file
paket add Oakrey.Applications.About --version 6.0.0
#r "nuget: Oakrey.Applications.About, 6.0.0"
#:package Oakrey.Applications.About@6.0.0
#addin nuget:?package=Oakrey.Applications.About&version=6.0.0Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.About&version=6.0.0Install as a Cake Tool
A WPF/.NET 10 library that provides a ready-to-use About dialog for desktop applications. It covers application identity display, loaded assembly/module version listing, RTF EULA rendering, and a Report Issue form with direct log folder access.
Name, Version, and current Year from IApplicationInfoAppDomain; optionally filters out System.* and Microsoft.* assemblies via SystemModuleVisibleAssets/eula.rtf at startup, converts it to plain text, and exposes it for binding; gracefully handles missing or unreadable files with logged warningsDarkWindow dialog that exposes the application log directory path and allows the user to open the log folder in ExplorerAboutViewModel implements INotifyPropertyChanged and IAutoConfigurable; provides a ReportIssue ICommandOakrey.TelemetryclassDiagram
IAboutService <|.. AboutService
AboutService --> ModuleVersion : produces
AboutViewModel --> IAboutService : consumes
AboutViewModel --> IApplicationInfo : consumes
AboutViewModel --> ReportIssueForm : opens on command
ReportIssueForm --> IApplicationInfo : reads LogDirectoryPath
| Type | Role |
|---|---|
IAboutService |
Abstraction for module version retrieval; inject this in application code |
AboutService |
Scans AppDomain.CurrentDomain.GetAssemblies(); respects SystemModuleVisible flag |
ModuleVersion |
Record holding a module Name and Version |
AboutViewModel |
INPC ViewModel; exposes Name, Version, Year, EulaRtf, Modules, ReportIssue |
ReportIssueForm |
WPF dialog (DarkWindow); shows log path and opens log folder in Explorer |
Oakrey.ViewModels >= 2.1.0Oakrey.Telemetry >= 2.0.1Oakrey.Applications (provides IApplicationInfo)NuGet Package Manager
Oakrey.Applications.About and click Install..NET CLI
dotnet add package Oakrey.Applications.About
Package Manager Console
Install-Package Oakrey.Applications.About
Register the About services during application startup:
services.AddSingleton<IAboutService, AboutService>();
services.AddTransient<ReportIssueForm>();
// AboutViewModel is resolved by the ViewModelProvider; no explicit registration needed
// if using Oakrey.Applications ViewModelProvider auto-configuration.
AboutService and ReportIssueForm both depend on IApplicationInfo, which must be registered separately.
services.AddSingleton<IApplicationInfo, MyAppInfo>();
services.AddSingleton<IAboutService, AboutService>();
services.AddTransient<ReportIssueForm>();
<Page xmlns:vm="clr-namespace:Oakrey.Applications.About;assembly=Oakrey.Applications.About"
xmlns:vmp="clr-namespace:Oakrey.Applications;assembly=Oakrey.Applications.Base"
d:DataContext="{d:DesignInstance Type=vm:AboutViewModel, IsDesignTimeCreatable=True}"
DataContext="{vmp:ViewModelProvider vm:AboutViewModel}">
<StackPanel>
<TextBlock>
<Run Text="Application: " /><Run Text="{Binding Name, Mode=OneWay}" />
<LineBreak />
<Run Text="Version: " /><Run Text="{Binding Version, Mode=OneWay}" />
<LineBreak />
<Run Text="Copyright � " /><Run Text="{Binding Year, Mode=OneWay}" />
</TextBlock>
<Button Content="Report Issue" Command="{Binding ReportIssue}" />
<TextBlock Text="{Binding EulaRtf, Mode=OneWay}" TextWrapping="Wrap" />
<DataGrid ItemsSource="{Binding Modules}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Module" Binding="{Binding Name}" />
<DataGridTextColumn Header="Version" Binding="{Binding Version}" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Page>
Place the EULA as an RTF file in the application output directory:
{AppBaseDirectory}/
Assets/
eula.rtf
If the file is missing, AboutViewModel logs a warning and sets EulaRtf to "EULA file not found.".
AboutViewModel has a default parameterless constructor that uses new AboutService() and new DummyAppInfo() to support design-time rendering in Visual Studio. It logs a warning when this path is taken.AboutService.SystemModuleVisible defaults to true. Set it to false before first access to Modules to suppress System.* and Microsoft.* assemblies from the list. The result is lazy-evaluated and cached.ReportIssueForm inherits from DarkWindow (from Oakrey.Applications.UI). It opens the log directory via explorer.exe using Process.Start with UseShellExecute = true.MIT � Copyright � Oakrey 2016-present
This project is licensed under the MIT License. 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.About:
| 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.