Oakrey.Applications.About 6.0.0

dotnet add package Oakrey.Applications.About --version 6.0.0
                    
NuGet\Install-Package Oakrey.Applications.About -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.About" 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.About" Version="6.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Oakrey.Applications.About" />
                    
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.About --version 6.0.0
                    
#r "nuget: Oakrey.Applications.About, 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.About@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.About&version=6.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Oakrey.Applications.About&version=6.0.0
                    
Install as a Cake Tool

Oakrey.Applications.About

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.

Main features

  • Application info display � binds application Name, Version, and current Year from IApplicationInfo
  • Module version listing � enumerates all loaded assemblies/modules in the current AppDomain; optionally filters out System.* and Microsoft.* assemblies via SystemModuleVisible
  • RTF EULA rendering � reads Assets/eula.rtf at startup, converts it to plain text, and exposes it for binding; gracefully handles missing or unreadable files with logged warnings
  • Report Issue form � a WPF DarkWindow dialog that exposes the application log directory path and allows the user to open the log folder in Explorer
  • MVVM-ready ViewModelAboutViewModel implements INotifyPropertyChanged and IAutoConfigurable; provides a ReportIssue ICommand
  • Telemetry � all ViewModel and service operations are traced via Oakrey.Telemetry

Architecture

classDiagram
    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

Requirements

  • .NET 10 (Windows)
  • WPF host application
  • Oakrey.ViewModels >= 2.1.0
  • Oakrey.Telemetry >= 2.0.1
  • Oakrey.Applications (provides IApplicationInfo)

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.About and click Install.

.NET CLI

dotnet add package Oakrey.Applications.About

Package Manager Console

Install-Package Oakrey.Applications.About

Configuration

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.

Example usage

DI setup

services.AddSingleton<IApplicationInfo, MyAppInfo>();
services.AddSingleton<IAboutService, AboutService>();
services.AddTransient<ReportIssueForm>();

XAML page

<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>

EULA file placement

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.".

Development notes

  • 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.

License

MIT � Copyright � Oakrey 2016-present

License

This project is licensed under the MIT License. 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.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.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
6.0.0 90 5/22/2026
4.0.0 88 5/22/2026
3.0.4 92 5/15/2026
3.0.3 160 3/11/2026
3.0.2 133 2/11/2026
3.0.1 119 1/16/2026
3.0.0 447 11/18/2025
2.0.0 242 10/22/2025
1.1.1 190 10/10/2025
1.1.0 249 9/29/2025
1.0.0 317 4/17/2025