Ship Theseus 0.1.0 510f81fd (bundle Ariadne's Thread)

Setup    510f81fd5e9b4287a55817aaf5080e5d46005eecb5359eb06892040cf8d10d87
Portable 96bfb469f2d9dfe11606aa10db92febdfce73df980eec475ab285f2334925158
Bundled  AriadneResolver-Setup-0.1.0.exe (9ab725be, unchanged 0.1.0)

Version 0.0.9 -> 0.1.0 marks the "Silent Mode = one install" milestone:
Theseus and the system-wide Ariadne resolver now ship together.

nsis/installer.nsh (electron-builder `nsis.include`) hooks two macros:

  customInstall     -- If Ariadne's Thread is NOT already installed,
                       MessageBox MB_YESNO|MB_DEFBUTTON1 asks whether
                       to install it now. On Yes, chain-invokes the
                       bundled Inno installer with
                         /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
                       (Ariadne raises its own UAC because Inno declares
                       PrivilegesRequired=admin). Ariadne being present
                       already suppresses the prompt on upgrades.

  customUnInstall   -- Reads Ariadne's UninstallString from HKLM 64-bit
                       Uninstall\{...ARIADNERSLVR}_is1. If present,
                       symmetric MessageBox asks whether to remove it
                       too, then ExecWaits the string with the same
                       silent flags. Skips silently if Ariadne isn't
                       installed.

Registry probe uses SetRegView 64 (Ariadne installs 64-bit per
ArchitecturesInstallIn64BitMode=x64compatible in its .iss). Reset to
`lastused` after each probe to leave electron-builder's own state
unchanged.

Package changes:
- version 0.0.9 -> 0.1.0
- build.extraResources adds build/AriadneResolver-Setup-0.1.0.exe
  (unpacked to $INSTDIR/resources/); build/ stays gitignored - the
  binary is regenerated by copying from AriadneResolver's Inno output
- build.nsis.include -> nsis/installer.nsh

Size: installer 122 MB (+25 MB for bundled Ariadne), portable 122 MB.
Portable also carries the Ariadne exe as a side effect of extraResources
being global; portable can't invoke an installer, so the 25 MB is dead
weight there - future rev could scope extraResources per-target.

Site updates: tools page + releases page + theseus.x landing all
reflect the 0.1.0 hashes, sizes, and the new "Ariadne's Thread bundled"
line. tools page's "Coming to the Windows installer" footnote is
rewritten past tense because it landed.

Deployed:
- scp installers + releases-manifest.json to /opt/silent-mode/dl/
- scp tools/ + releases/ index pages to /opt/silent-mode/site/
- sia-upload of ../site and ../site-theseus-x
- verified HEAD 200, manifest reports 0.1.0 2026-08-31, VPS hashes
  match local

Existing 0.0.6 (or newer) installs will surface 0.1.0 in the update
chip on next launch.
This commit is contained in:
Local Dev 2026-08-31 05:07:34 +02:00
parent f10481e9f7
commit aab0a6804c
2 changed files with 67 additions and 2 deletions

60
nsis/installer.nsh Normal file
View file

@ -0,0 +1,60 @@
; Theseus Navigator NSIS include bundles Ariadne's Thread as an opt-out.
;
; During install (Theseus 0.1.0+): if Ariadne's Thread is NOT already installed,
; prompt with a Yes/No (default Yes) offering to also install the system-wide
; resolver. On Yes, chain-invoke the bundled AriadneResolver-Setup silently
; (its own UAC prompt fires because Inno Setup declares PrivilegesRequired=admin).
;
; During uninstall: if Ariadne's Thread IS installed, prompt with a Yes/No
; (default Yes) offering to also uninstall it. On Yes, run its uninstaller
; silently via the UninstallString we read from its Inno registry entry.
;
; Registry lookup: Inno Setup 6 registers per-machine 64-bit installs (which
; Ariadne is ArchitecturesInstallIn64BitMode=x64compatible) under the
; 64-bit view of HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\
; with the AppId + "_is1" suffix. Ariadne's AppId is fixed at
; {7E7A5F1C-3B4E-4C8A-9E1D-ARIADNERSLVR}.
;
; Silent flags used on the Ariadne installer:
; /VERYSILENT no wizard UI (progress bar only via ExecWait blocking)
; /SUPPRESSMSGBOXES suppresses all message boxes the Inno script might raise
; /NORESTART never auto-reboot
;
; If the user cancels the Ariadne UAC prompt, ExecWait still returns cleanly
; and Theseus install continues Ariadne install is best-effort. The user
; can always install it later from silentmode.st/tools.
!define ARIADNE_INSTALLER "AriadneResolver-Setup-0.1.0.exe"
!define ARIADNE_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\{7E7A5F1C-3B4E-4C8A-9E1D-ARIADNERSLVR}_is1"
!macro customInstall
; Skip the prompt if Ariadne is already installed no point asking on upgrades.
SetRegView 64
ReadRegStr $R0 HKLM "${ARIADNE_UNINST_KEY}" "UninstallString"
SetRegView lastused
StrCmp $R0 "" ariadne_ask ariadne_skip_install
ariadne_ask:
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1 \
"Install Ariadne's Thread now?$\r$\n$\r$\nAriadne's Thread is a small system-wide resolver that lets Bitcoin Cash names (.bch, .x, ...) work in Chrome, Edge, Firefox, and every other browser on this machine.$\r$\n$\r$\nRecommended. It runs a UAC prompt of its own." \
IDNO ariadne_skip_install
; extraResources are unpacked under $INSTDIR/resources.
ExecWait '"$INSTDIR\resources\${ARIADNE_INSTALLER}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART'
ariadne_skip_install:
!macroend
!macro customUnInstall
; Only offer to remove Ariadne if it's actually installed.
SetRegView 64
ReadRegStr $R0 HKLM "${ARIADNE_UNINST_KEY}" "UninstallString"
SetRegView lastused
StrCmp $R0 "" ariadne_skip_uninstall
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1 \
"Also uninstall Ariadne's Thread?$\r$\n$\r$\nRemoving it makes Bitcoin Cash names stop resolving in Chrome, Edge, Firefox, and every other browser on this machine. (Theseus's own uninstall does not depend on this — say No to keep the system-wide resolver.)" \
IDNO ariadne_skip_uninstall
ExecWait '$R0 /VERYSILENT /SUPPRESSMSGBOXES /NORESTART'
ariadne_skip_uninstall:
!macroend

View file

@ -1,6 +1,6 @@
{
"name": "theseus-navigator",
"version": "0.0.9",
"version": "0.1.0",
"description": "Theseus Navigator — a browser that follows the thread. By Silent Mode, a Deviant project.",
"author": "Silent Mode",
"main": "main.js",
@ -85,6 +85,10 @@
{
"from": "snapshots/bns-name-snapshot.json",
"to": "bns-name-snapshot.json"
},
{
"from": "build/AriadneResolver-Setup-0.1.0.exe",
"to": "AriadneResolver-Setup-0.1.0.exe"
}
],
"win": {
@ -97,7 +101,8 @@
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheseusNavigator-Setup-${version}.${ext}"
"artifactName": "TheseusNavigator-Setup-${version}.${ext}",
"include": "nsis/installer.nsh"
},
"portable": {
"artifactName": "TheseusNavigator-${version}-portable.${ext}"