Troubleshooting
Common build, install and uninstall failures in the experimental Rust prototype.
This guide covers the experimental Windows console installer, opt-in WebView2 GUI and native uninstaller.
Installer closes after asking a question
Double-clicking a console executable may open a terminal window that disappears when the process ends. Open PowerShell and run the executable from there to read its output:
.\BSIS-Hello-Setup.exe
The bundled executable without arguments asks for an installation destination and confirmation. Type y or yes to proceed. The updated Windows console displays the result and waits for Enter before closing when launched from Explorer. For command-line testing, use install --yes with a new or empty target.
The destination already exists
BSIS accepts a new directory or an existing empty directory, but it will not overwrite a nonempty directory. If the selected folder already contains files, the interactive installer asks for another path. Do not delete an existing application's directory just to make the prototype work.
.\BSIS-Hello-Setup.exe install --target "$env:LOCALAPPDATA\BSIS-Hello-Test-2" --yes
PowerShell says “Unexpected token 'uninstall'”
A quoted executable path is a string expression in PowerShell, not a command. Prefix it with the call operator &:
& "C:\Users\YourName\Desktop\BSIS-Hello-Setup.exe" uninstall --target "C:\Test\BSIS-Hello" --yes
PowerShell cannot find Setup.exe
PowerShell does not run programs from the current directory by bare name. Use .\BSIS-Hello-Setup.exe, or use a full path with &:
.\BSIS-Hello-Setup.exe uninstall --target "C:\Test\BSIS-Hello" --yes
If an older completion screen printed a path under AppData\Local\Temp with .zip, Windows likely removed the temporary Setup.exe. New BSIS installations include their own Uninstall.exe in the application folder, so the original setup path is no longer required. For an older installation without Uninstall.exe, extract the GitHub Actions ZIP permanently and run that saved Setup.exe with uninstall.
The installed Uninstall.exe is missing or cleanup leaves a folder
New installations include Uninstall.exe in the installation root. You can double-click it to confirm removal or run it using PowerShell:
& "$env:LOCALAPPDATA\BSIS-Hello-Test\Uninstall.exe" uninstall --target "$env:LOCALAPPDATA\BSIS-Hello-Test" --yes
If Uninstall.exe was removed, Setup.exe can still uninstall the application. The native uninstaller checks its receipt and refuses to delete modified tracked files. The final cleanup of a running Windows executable is best-effort: built-in Windows PowerShell waits for it to exit, removes it, then removes the directory only if empty. Antivirus policies or Windows PowerShell restrictions may leave Uninstall.exe behind. Never delete a directory containing unrelated user files to force cleanup.
Uninstall.exe gui says the installer package is missing
Older artifacts had an installer-only GUI that tried to inspect an embedded Setup.exe payload, which the installed Uninstall.exe correctly does not contain. Recent BSIS builds have separate graphical installer and uninstaller screens. Update your BSIS-built application and run the installed executable from its own directory:
.\Uninstall.exe gui
The uninstaller GUI requires WebView2. If it is unavailable, double-click Uninstall.exe for console mode or use uninstall --target <absolute-path> --yes in PowerShell. A missing or invalid receipt will still block removal rather than authorizing deletion of arbitrary files.
Uninstall.exe reports OS error 32
An early version could show removing empty installation root: The process cannot access the file because it is being used by another process (os error 32) when double-clicking the installed uninstaller.
The cause was attempting to remove the directory containing the running Uninstall.exe. The corrected version defers that step until after the process exits. Use the updated Windows artifact; the previous error may appear even if tracked application files were already removed.
Cancel installation does not close the window immediately
During extraction, Cancel installation requests a safe stop instead of force-closing the application. Rust checks the request after approximately every MiB written within a large file, again between verified files, and immediately before the staged directory commit. Slow disk writes can still delay acknowledgement, but incomplete staging data is discarded and no partial installation is committed.
Once an installation is successfully committed, use Uninstall.exe to remove it. The cancellation button is not an uninstall function or an update rollback.
Right-click Inspect Element or Print appears in the installer
Normal .\BSIS-Hello-Setup.exe gui now disables WebView2's browser menus, Inspect Element and browser shortcuts. Run .\BSIS-Hello-Setup.exe gui --dev to explicitly enable those debugging tools.
Parent folder does not exist
For an explicit --target, its parent directory must already exist. Create an appropriate parent yourself, or omit --target to use the supported per-user default.
“Installer has no valid embedded package”
The raw bsis.exe builder has no embedded application payload. First create Setup.exe using the build command, then run install on the generated executable. If an already-packaged setup is corrupted, inspection will fail as well.
Bundle inspection succeeds but an embedded file is damaged
Ordinary inspect checks the compressed checksum and package structure; it does not hash each uncompressed embedded file. Run:
.\BSIS-Hello-Setup.exe inspect --deep
Deep mode checks every file without writing to disk, and rejects wrong hashes, truncation or undeclared trailing bytes. It does not prove publisher identity; use builds from a trusted source.
Build reports an invalid path or JSON key
The version 1 manifest accepts only schema_version, product and files with their documented child fields. Future configuration ideas such as ui, shortcuts, registry and update are not supported in the current prototype.
Source mappings must use relative paths, and installation destinations must pass Windows path validation. See Configuration.
Diagnose modified or missing tracked files
Run a non-destructive integrity report before uninstalling:
.\BSIS-Hello-Setup.exe verify --target "$env:LOCALAPPDATA\Programs\bsis.hello" --json
The result lists any missing, modified, unsafe or unreadable paths. The command does not repair files, remove user content or re-create the receipt. If the receipt is missing or invalid, verification fails rather than treating an arbitrary directory as an installation.
Uninstall refuses to delete a modified file
BSIS compares the current installed files with the hashes stored in .bsis-receipt.json. If a tracked file differs, uninstall stops before deleting any tracked file. This protects against accidental data loss. Preserve the modified file and review the installation; do not manually forge a receipt to force deletion.
Unsupported features
| Need | Current answer |
|---|---|
| Custom GUI or WebView2 screens | Fixed opt-in WebView2 preview exists; developer-defined UI is planned |
| LZMA2 or LZ4 compression | Planned; Zstandard is currently fixed |
| Update or repair an installed app | Not supported |
| Windows shortcuts, services, registry or UAC | Not supported |
| Public npm package or installer builder download | Not published |
| Stable plugin API | Not available |
For a known limitation rather than a runtime error, see Roadmap and Security model.