Skip to content

Latest commit

 

History

History
71 lines (47 loc) · 2.54 KB

File metadata and controls

71 lines (47 loc) · 2.54 KB

WPF Sample Application

This sample demonstrates how to use winapp CLI with a WPF application to add package identity and package as MSIX.

For a complete step-by-step guide, see the .NET Getting Started Guide - the same steps apply to WPF, WinForms, and other .NET UI frameworks.

What This Sample Shows

  • WPF desktop application with modern UI
  • Using Windows Runtime APIs to retrieve package identity
  • Using Win2D (Microsoft.Graphics.Win2D) — a third-party WinRT component that requires activatable class registration
  • NuGet package references (Microsoft.WindowsAppSDK, Microsoft.Windows.SDK.BuildTools, Microsoft.Graphics.Win2D) added directly to .csproj
  • Configuring MSBuild to automatically apply debug identity after building in Debug configuration
  • Using Windows App SDK via NuGet for modern Windows APIs
  • MSIX packaging with app manifest and assets

Prerequisites

  • .NET 10.0 SDK
  • winapp CLI installed via winget: winget install Microsoft.winappcli --source winget

Setup

Run winapp init in this directory. It auto-detects the .csproj and runs the .NET-specific setup flow:

winapp init

This will validate the TargetFramework, add required NuGet packages to the .csproj, and generate the manifest, assets, and development certificate. No winapp.yaml is needed for .NET projects.

Building and Running

Run

The .csproj is configured to automatically apply debug identity when building in Debug configuration:

dotnet run

The WPF window will display:

Package Family Name: wpf-app.debug_12345abcde
Windows App Runtime Version: 1.8-stable (1.8.0)
Win2D: <GPU device description>

The Win2D line confirms that CanvasDevice was activated successfully, which requires the InProcessServer entries for Microsoft.Graphics.Canvas.dll to be registered.

Note: Win2D requires a platform-specific build (not AnyCPU). Use -r win-x64 or -r win-arm64 when building or packaging.

Package as MSIX

The .csproj is also configured to automatically package when building in Release mode:

# Create a dev certificate (first time only)
winapp cert generate --if-exists skip

# Build and package in one command
dotnet build -c Release

# Install certificate (first time only, requires admin)
winapp cert install .\devcert.pfx

# Install the generated MSIX
# The .msix file will be in the root directory

Double-click the .msix file to install. The app will be available in your Start Menu and can be launched like any other installed app.