Repository navigation
Installation
| 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.
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.
msiexec /i csharpdialog-x64-<version>.msi /qn /norestartThe 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.
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.
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"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 ReleaseThe 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 -PkgArtifacts land in dist\. build.ps1 with no switches at all also attempts signing; see
Development for what each switch does.
dialog --helpIf 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 10A 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"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.
msiexec /x csharpdialog-x64-<version>.msi /qn /norestartOr by product name:
Get-Package -Name csharpDialog | Uninstall-PackageThe 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.
csharpDialog — MIT licensed — windowsadmins/csharpdialog
Reference
Guides
Internals
Help