BSIS

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:

PowerShell
.\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.

PowerShell
.\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 &:

PowerShell
& "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 &:

PowerShell
.\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:

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:

PowerShell
.\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:

PowerShell
.\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:

PowerShell
.\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

NeedCurrent answer
Custom GUI or WebView2 screensFixed opt-in WebView2 preview exists; developer-defined UI is planned
LZMA2 or LZ4 compressionPlanned; Zstandard is currently fixed
Update or repair an installed appNot supported
Windows shortcuts, services, registry or UACNot supported
Public npm package or installer builder downloadNot published
Stable plugin APINot available

For a known limitation rather than a runtime error, see Roadmap and Security model.