HTML Installer Unified turns a self-contained local HTML file into a Windows app-like experience.
One shared source tree builds two separate Windows executables:
- Browser — opens the installed HTML in Edge or Chrome app mode.
- Runtime — opens the installed HTML in a dedicated WebView2 window and bundles the official WebView2 Evergreen Standalone Installer for offline deployment when WebView2 is not already installed.
Public release: v1.0.0
The current application UI is Hebrew. Repository documentation and build tooling are in English.
- One shared Core / Windows / UI codebase for both editions.
- Each installed HTML app appears separately in Windows Installed Apps with its own name, icon, uninstall action, and Manage/Modify action.
- During installation, the user can choose Desktop and/or Start Menu shortcuts.
- Removing HTML Installer itself does not remove already-installed HTML apps. The shared engine remains only while installed apps still need it.
- Runtime exposes only the app's isolated
contentfolder to WebView2 and usesDenyCorsfor host-folder mapping. - Browser does not use Chromium PID tracking or a
running.lock, avoiding false "app is still open" results caused by browser process reuse. - No PWA layer, localhost server, Taskbar helper, legacy LNK migration, or headless-browser icon conversion.
- Release builds are self-contained, single-file, and compressed.
- Windows x64
- .NET 10 SDK
- Internet access for the first Runtime build so the official Microsoft WebView2 Evergreen Standalone Installer can be downloaded and verified. After it is cached under
vendor/WebView2, later local Runtime builds can reuse it.
The produced applications themselves are designed to run offline. HTML content that references online APIs, CDNs, fonts, images, or other remote resources will still require network access for those resources.
Build both editions:
BUILD-ALL.cmdBuild only Browser:
BUILD-BROWSER.cmdBuild only Runtime:
BUILD-RUNTIME.cmdFrom PowerShell, prefix the script name with ./ or .\, for example:
.\BUILD-ALL.cmdBuild scripts leave only the final distribution executables in release:
release/
HTML-Installer-Browser.exe
HTML-Installer-Runtime.exe
Temporary publish directories are created under %TEMP% and removed after the build.
The EXE files are self-installing. No separate INSTALL.cmd is required for distribution.
src/
HtmlInstaller.Core Shared metadata, paths, inspection and product definitions
HtmlInstaller.Windows Windows installation, registry, shortcuts and icons
HtmlInstaller.UI Shared WPF user interface and per-app management window
HtmlInstaller.Browser Browser-specific launch engine
HtmlInstaller.Runtime WebView2-specific launch engine
tools/
validate-source.ps1 Architecture and regression guardrails
prepare-webview2.ps1 Downloads and verifies the official WebView2 offline installer
.github/workflows/
build.yml Windows CI build for both editions
Every push and pull request runs a Windows build using the same BUILD-ALL.cmd used locally.
The workflow uploads only two artifacts:
HTML-Installer-Browser-win-x64HTML-Installer-Runtime-win-x64
Generated build output and the downloaded WebView2 installer are excluded from Git through .gitignore.
The installer is intentionally designed around a single self-contained HTML file.
If the HTML refers to local neighboring files such as:
<script src="script.js"></script>
<link rel="stylesheet" href="style.css">
<img src="logo.png">the installation should be blocked and the HTML should first be exported as a self-contained file.
Before distributing a build, run through TEST-CHECKLIST.md.
The project does not include a code-signing certificate. Unsigned EXEs may trigger Microsoft SmartScreen warnings on unfamiliar machines. For broad public distribution, signing the release executables is recommended.