Skip to content

fix(installer): the publisher is Botloft, and installs made as "github" are adopted - #57

Merged
httpsphl merged 1 commit into
mainfrom
fix/publisher-botloft
Sep 30, 2026
Merged

httpsphl merged 1 commit into
mainfrom
fix/publisher-botloft

Conversation

@httpsphl

Copy link
Copy Markdown
Owner

What

Botloft.exe's file properties said the company was "github". That is Tauri's default publisher, the second part of the identifier io.github.httpsphl.botloft. On an unsigned program it reads as someone posing as GitHub, which is the wrong thing to show before signing.

  • bundle.publisher is now "Botloft" for the app and the setup window. Installed apps shows it natively, so the hook that overrode it is gone. The installer's own file properties name the company too (VIAddVersionKey).
  • Installs made under the old name are adopted. Tauri keeps the install folder under Software\<publisher>\<product>, and reads it to update into the same folder and for "uninstall before installing". BotloftAdoptOldFolder in hooks.nsh:
    • copies the folder from Software\github\Botloft to Software\Botloft\Botloft when the new key is missing;
    • installs there, unless /D chose another folder;
    • does nothing once the new key exists.
  • When it runs: before the first page (MUI_CUSTOMFUNCTION_GUIINIT, for the wizard and the passive update) and at the start of the install (NSIS_HOOK_PREINSTALL, because the quiet installer has no pages).
  • Cleanup: after installing, the old key is removed, and Software\github only if it is left empty.
  • The setup window reads the new key, then the old one.
  • Spec 15.4 describes it. It also no longer says an update runs the old uninstaller: with Tauri 2.12's template, /UPDATE skips it.

Tests

  • Real update (Windows 11 25H2), over 0.6.0 installed under the old publisher, with the app open, running the new installer as the updater does (/P /UPDATE /R):
    • it finished in 3 s and wrote Software\Botloft\Botloft with the folder from the old key;
    • it removed the old key and the empty Software\github;
    • Installed apps shows publisher "Botloft" and the same folder;
    • the app reopened from that folder, and the daemon was not touched.
  • Six scenarios with a small installer compiled around the same hooks.nsh and test registry keys: never installed; old name with a custom folder; the same with /D; already under the new name; the quiet path followed by the cleanup; and the cleanup keeping another program's key under the old publisher.
  • cargo fmt, cargo clippy -p botloft-setup -D warnings and its tests pass.
  • File properties of the build: Botloft.exe and the installer show company "Botloft".

Still to see

  • The first real update from a published 0.6.0 to the next release.

…b" are adopted

The app's file properties and Installed apps named "github" as the
publisher: Tauri's default, the second part of the identifier. On an
unsigned program that reads as someone posing as GitHub. bundle.publisher
is now "Botloft" for the app and the setup window, and the installer's own
properties name the company too.

Tauri also names the registry key that keeps the install folder after the
publisher, so the installer's hooks adopt an install made under the old
name: BotloftAdoptOldFolder copies the folder from Software\github\Botloft
to Software\Botloft\Botloft when the new key is missing and installs
there, unless /D chose another folder. It runs before the first page
(wizard and passive update) and at the start of the install (the quiet
installer has no pages). After installing, the old key goes, and
Software\github only if it is left empty. The setup window reads the new
key, then the old one.

Tested for real: over 0.6.0 installed under the old publisher, with the
app open, the new installer run as the updater (/P /UPDATE /R) adopted
the folder, removed the old key and reopened the app; the daemon kept
running. A custom folder, /D and the quiet path were tested with a small
installer compiled around the same hooks file and test keys. Spec 15.4
follows, and no longer says an update runs the old uninstaller: with
Tauri 2.12 it does not.
@httpsphl
httpsphl enabled auto-merge September 30, 2026 14:00
@httpsphl
httpsphl merged commit 10d7e69 into main Sep 30, 2026
3 checks passed
@httpsphl httpsphl mentioned this pull request Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant