Skip to content

Administrator installer with options and engine selection (Inno Setup), version 1.2.0 - #21

Merged
KnifeLemon merged 3 commits into
mainfrom
feat/installer
Oct 1, 2026
Merged

KnifeLemon merged 3 commits into
mainfrom
feat/installer

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

What

Filee-<version>-win-Setup.exe is now a real setup wizard (Inno Setup 7) instead of Velopack's one-click
installer. It runs with administrator rights once and installs Filee for all users in Program Files; Filee itself
still runs unelevated as the signed-in user (Windows blocks drag and drop from Explorer into elevated windows).

Wizard (English, Korean, Simplified Chinese; follows light/dark mode):

  1. Welcome, install folder
  2. Options: "Convert with Filee" in the Explorer right-click menu, on Windows 11 also at the top of the menu
    (Setup registers the unsigned sparse package with the rights it already has, so no extra UAC prompt), start at
    sign-in, desktop icon
  3. Conversion engines: LibreOffice, Pandoc, Ghostscript, FFmpeg and calibre with download and installed sizes;
    already downloaded ones are shown as installed. The list, sizes, suggestions and names are generated from
    EngineDownloads and the app's translations (build/tools/make-installer-engines.cs)
  4. Summary, install, finish: Setup starts Filee, which downloads the picked engines in its engine window with
    speed and time left (--install-engines=…), so checksums and progress stay in one place

Updates and uninstall:

  • Setup asks a running Filee to exit (Filee.exe --quit, waits until it has) and renames a FileeExplorerMenu.dll
    that Explorer still has loaded, so updating needs no restart. An update skips the option and engine pages and
    keeps what was chosen in the app.
  • An existing Filee 1.1 (Velopack, per user) installation is taken over: its files, Start menu shortcut,
    uninstall entry and Explorer menu registration are removed; settings and downloaded engines stay.
  • The uninstaller runs Filee.exe --uninstall-cleanup (Explorer entries, startup entry, downloaded engines).

Build and release:

  • build/build-installer.ps1 publishes the app, builds the Explorer menu extension, bundles rhwp and 7-Zip and
    compiles installer/Filee.iss with a pinned Inno Setup 7.1.0 (SHA-256 verified) that it sets up in Inno's own
    portable mode inside build/.cache — nothing is installed on the build machine or the runner.
  • The release uploads Filee-X.Y.Z-win-Setup.exe (90.7 MB, was 135 MB), Filee-X.Y.Z-win-Portable.zip (a plain
    folder now) and Filee-X.Y.Z-SHA256SUMS.txt. No more Velopack update feed.
  • CI compiles the installer script against a stub app on every push (-CheckOnly, about a minute).
  • Release builds are marked with -p:FileeRelease=true (they may register Explorer and startup entries) instead of
    asking Velopack whether the app is installed. The Velopack package is removed.
  • Version 1.2.0.

Tests

  • InstallerTests: the options the script passes are exactly the ones CommandLine parses, the Explorer menu
    package identity and the engine marker match the app, and an engine choice with nothing left to install opens
    nothing.
  • dotnet test passes. The wizard pages were checked in a non-admin preview build (screenshots in the session).
  • Built locally end to end: pwsh build/build-installer.ps1 -Portable.

Setup itself needs a UAC prompt, so the install / update / Velopack migration run is tested by hand before tagging.

🤖 Generated with Claude Code

KnifeLemon and others added 3 commits October 1, 2026 23:50
GetPackagePathByFullName2 was imported from kernel32.dll, which doesn't
export it. The call only happens once the package is registered, so adding
the entry crashed Filee right after Windows accepted it, and the General
page threw on every later visit. It is now imported from its API set, the
package state and menu commands never take the app down, and a test checks
that every native import exists in the DLL it names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The gesture is detected before anyone knows what is dragged, so a modifier +
drag of text or a rubber-band selection opened an empty ring. The window now
waits invisibly at the cursor and the donut appears only when files enter;
otherwise it closes quietly when the button is released.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Filee-<version>-win-Setup.exe is now built from installer/Filee.iss with a pinned, portable Inno Setup 7
(build/build-installer.ps1; nothing is installed on the build machine). It installs for all users into
Program Files with one UAC prompt, while Filee itself keeps running unelevated as the signed-in user.

- Options page: "Convert with Filee" in the Explorer menu, on Windows 11 also at the top of the menu
  (Setup registers the sparse package with the rights it already has), start at sign-in, desktop icon.
- Engine page: the optional engines with download and installed sizes, generated from EngineDownloads
  and the app's translations. Filee downloads the picked ones in its engine window when Setup starts it
  (--install-engines), so verification and progress stay in one place.
- Updates close Filee gracefully (--quit) and move a FileeExplorerMenu.dll that Explorer has loaded aside,
  so no restart is needed; the uninstaller runs --uninstall-cleanup.
- An installation of Filee 1.1 or earlier (Velopack, per user) is taken over: its files, shortcuts and
  uninstall entry are removed, settings and downloaded engines are kept.
- The portable zip is now a plain folder; SHA-256 sums are published with the release.
- Release builds are marked with -p:FileeRelease=true instead of asking Velopack whether they are installed.
- CI compiles the installer script against a stub app.

Version 1.2.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KnifeLemon KnifeLemon added the feature New features label Oct 1, 2026
@KnifeLemon
KnifeLemon merged commit e9a496a into main Oct 1, 2026
1 check passed
@KnifeLemon
KnifeLemon deleted the feat/installer branch October 1, 2026 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant