Oakrey.Applications.About 3.0.4

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

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
3.0.4 38 5/15/2026
3.0.3 157 3/11/2026
3.0.2 129 2/11/2026
3.0.1 115 1/16/2026
3.0.0 443 11/18/2025
2.0.0 238 10/22/2025
1.1.1 186 10/10/2025
1.1.0 246 9/29/2025
1.0.0 314 4/17/2025