Skip to content

Installation

Rod Christiansen edited this page Sep 3, 2026 · 1 revision

Installation

Supported platforms

Requirement Detail
Operating system Windows 10 and Windows 11. Windows Server builds of the same generation work but the dialog needs an interactive desktop session to be visible
Architecture x64 and arm64. Both are published from every release; x86 is not built
Runtime None. Release artifacts are published self-contained (--self-contained:true), so the .NET runtime does not have to be installed
Privileges Installation needs administrator rights (it writes to %ProgramFiles% and the machine PATH). Running dialog.exe does not

The fullscreen and kiosk backdrop uses the DWM system-backdrop attribute introduced in Windows 11 22H2. On older builds the call fails silently and you get the plain dimmed overlay without acrylic blur — the dialog still works.

Install from a release

Releases are published at github.com/windowsadmins/csharpdialog/releases. Each tag produces, per architecture:

Artifact Use
csharpdialog-x64-<version>.msi, csharpdialog-arm64-<version>.msi Standard install; also adds the install directory to the machine PATH
csharpdialog-x64-<version>.pkg, csharpdialog-arm64-<version>.pkg Cimian package (a zip carrying build-info.yaml, payload/ and a scripts/postinstall.ps1)
csharpdialog-x64.zip, csharpdialog-arm64.zip The raw publish output, for XCOPY deployment or for signing yourself

Release binaries are unsigned. The public build pipeline has no certificate; the release notes carry the signing recipe. Most managed environments will want to sign before distributing — see Signing before distribution.

MSI

msiexec /i csharpdialog-x64-<version>.msi /qn /norestart

The MSI installs to C:\Program Files\csharpDialog, writes HKLM\Software\csharpDialog with InstallPath and Version, and appends the install directory to the system PATH. A shell that was already open will not see the new PATH; open a new one.

Cimian package

The .pkg installs the same payload to C:\Program Files\csharpDialog and runs a postinstall script that adds that directory to the machine PATH if it is not already there.

Zip

Unpack anywhere and call dialog.exe by full path, or add its directory to PATH yourself. This is the right choice when you want the binaries in a per-application folder rather than on the machine PATH.

Expand-Archive -Path csharpdialog-x64.zip -DestinationPath "C:\Program Files\csharpDialog"

Build from source

Prerequisites: the .NET 10 SDK (the projects target net10.0-windows) and, for MSI output, the WiX v6 CLI.

git clone https://github.com/windowsadmins/csharpdialog.git
cd csharpdialog
dotnet build CsharpDialog.sln -c Release

The CLI project's assembly name is dialog, so the build output is src\csharpDialog.CLI\bin\Release\net10.0-windows\dialog.exe.

To produce the same artifacts the release workflow does:

dotnet tool install --global wix --version "6.*"
.\build.ps1 -Build -Msi -Pkg

Artifacts land in dist\. build.ps1 with no switches at all also attempts signing; see Development for what each switch does.

Verify

dialog --help

If that prints the usage block, the executable resolves and runs. To confirm the GUI path rather than the console fallback, ask for a window explicitly:

dialog --window --title "Verify" --message "csharpDialog is working." --timeout 10

A window that closes itself after ten seconds and leaves $LASTEXITCODE at 1 (the timeout code) is a healthy install. If you get a text menu on the console instead of a window, you left off --window — see Choosing a front end.

Check the install record and version:

Get-ItemProperty "HKLM:\Software\csharpDialog"

Signing before distribution

Release artifacts ship unsigned. To sign a zip's contents with your organisation's certificate:

$cert = "Your Certificate Subject Name"
Expand-Archive -Path csharpdialog-x64.zip -DestinationPath .\staging
Get-ChildItem .\staging -Recurse -Include *.exe,*.dll | ForEach-Object {
    signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /n $cert $_.FullName
}

build.ps1 -Sign does the same thing during a local build, reading the certificate subject name from the SIGNING_CERT_CN environment variable and retrying across three timestamp authorities. It skips signing with a warning if signtool.exe is not on PATH and SIGNTOOL_PATH is not set.

Uninstall

msiexec /x csharpdialog-x64-<version>.msi /qn /norestart

Or by product name:

Get-Package -Name csharpDialog | Uninstall-Package

The MSI removes the payload, its registry key and its PATH entry. It does not remove runtime state, which is safe to delete separately:

Path Contents
%ProgramData%\ManagedNotifications\logs\ csharpdialog.log and up to five rotated generations
%ProgramData%\csharpDialog\IconCache\ Downloaded icons, if the icon cache was ever used
HKCU\SOFTWARE\Cimian, HKLM\SOFTWARE\Cimian First-run completion markers, written only if --firstrun/--autolaunch was used. Shared with the Cimian client — do not delete these if Cimian is installed

Zip installs are removed by deleting the directory.

Clone this wiki locally