theseus/nsis/installer.nsh

101 lines
4.1 KiB
NSIS
Raw Normal View History

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.
2026-08-31 05:07:34 +02:00
; Theseus Navigator NSIS include — bundles Ariadne's Thread as an opt-out.
;
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
; UI: a dedicated wizard page with a real checkbox (pre-checked) instead of a
; MessageBox popup. Shown FIRST in the install flow because electron-builder's
; template places our `!include` before its own MUI_PAGE_* inserts and NSIS
; processes page directives in file order — so this is the earliest hook
; we have without editing the template. Framed as "Options" so it reads
; naturally as a preamble before the standard Welcome/License/Directory pages.
; Skipped entirely (`Abort`) if Ariadne's Thread is already installed, so
; upgrades of Theseus don't nag.
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.
2026-08-31 05:07:34 +02:00
;
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
; The uninstall side stays a symmetric MessageBox (a full custom uninstaller
; page is overkill for one yes/no during a rare event).
!include "nsDialogs.nsh"
!include "LogicLib.nsh"
!include "MUI2.nsh"
Var AriadneCheckbox
Var InstallAriadneFlag
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.
2026-08-31 05:07:34 +02:00
!define ARIADNE_INSTALLER "AriadneResolver-Setup-0.1.0.exe"
!define ARIADNE_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\{7E7A5F1C-3B4E-4C8A-9E1D-ARIADNERSLVR}_is1"
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
Page custom AriadnePageCreate AriadnePageLeave
Function AriadnePageCreate
Ship Theseus 0.3.2 09331b2f (tab context menu + branded installer) Setup 09331b2fd9ccf136e2183b7cd85354cfd56e2ed50260b7aadeed63c7ea450251 Portable 21752d0fc85fb39ec1e65192920461e9ae395a22d9a68abd27f12e638d0fdd07 Right-click a tab: floating context menu with Reload, Duplicate, Group (submenu: None / Red / Orange / Yellow / Green / Cyan / Blue / Purple), Add to Bookmarks, Mute (also Unmute; 🔇 shows next to the title when muted), Close. Menus close on outside click or Escape. Group state is per-tab. A grouped tab shows a colored dot before the title and a matching 2-px accent stripe on the top edge, so a cluster of same-group tabs reads visually. Palette is drawn from existing provenance colors (err/warn/acid/srv/sia/blue). Backend IPCs are all tab-scoped (not "active tab"): tab-reload, tab-duplicate, tab-mute (toggle or explicit boolean), tab-group, tab-bookmark. emitTabs payload gains muted, group, and url so the menu can read current state. Installer wizard branding: 164×314 sidebar BMP with the compass mark centered + "Theseus / NAVIGATOR" wordmark under it, plus a 150×57 top-strip header with a mini compass on the right. Sharp can't write BMP directly (only png/webp/etc), so nsis/make-icons.mjs renders raw RGB via sharp and wraps it in a hand-rolled 24-bit uncompressed BMP header. Uninstaller reuses the same sidebar. Silent-install fix: nsis/installer.nsh's AriadnePageCreate now checks IfSilent BEFORE touching nsDialogs::Create. In /S mode the flag is zeroed and the function returns cleanly, so the installer no longer hangs waiting for a page it will never draw. This is why 0.3.2 needed two builds — the first hung on /S install; the fixed hash is the one that ships. Deployed: scp + sia-upload of both trees. Verified VPS hash matches local 09331b2f. Fresh /S install to D:\Program Files\Theseus Navigator\ placed 0.3.2 with the correct HKCU Uninstall registry entry.
2026-08-31 19:30:30 +02:00
; Silent install (/S) — no user, no page. Default to "don't touch Ariadne";
; the whole point of /S is unattended, and existing Ariadne stays as-is.
; nsDialogs::Create in silent mode returns a dialog handle we can't display,
; so we short-circuit BEFORE calling any nsDialogs API.
IfSilent ariadne_page_silent ariadne_page_check
ariadne_page_silent:
StrCpy $InstallAriadneFlag "0"
Return
ariadne_page_check:
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
; Skip the page entirely if Ariadne's Thread is already on this machine —
; nothing to offer. Registry lookup uses HKLM 64-bit view because Ariadne's
; Inno script sets ArchitecturesInstallIn64BitMode=x64compatible.
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.
2026-08-31 05:07:34 +02:00
SetRegView 64
ReadRegStr $R0 HKLM "${ARIADNE_UNINST_KEY}" "UninstallString"
SetRegView lastused
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
StrCmp $R0 "" ariadne_page_show 0
StrCpy $InstallAriadneFlag "0"
Abort
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.
2026-08-31 05:07:34 +02:00
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
ariadne_page_show:
!insertmacro MUI_HEADER_TEXT "Optional add-ons" "Choose whether to also install Ariadne's Thread alongside Theseus Navigator."
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.
2026-08-31 05:07:34 +02:00
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
nsDialogs::Create 1018
Pop $0
StrCmp $0 "error" ariadne_page_bail 0
${NSD_CreateLabel} 0 0 100% 44u "Ariadne's Thread is a small system-wide resolver that lets BCDN — Bitcoin Cash Domain Names — work in Chrome, Edge, Firefox, and every other browser on this machine.$\r$\n$\r$\nWithout it, only Theseus resolves these names. You can install or remove it later."
Ship Theseus 0.1.1 2a278494 (Ariadne checkbox page + Startpage POST fix) Setup 2a2784943006b0c4f52e22cc2ec51a43e8007497d90da022798e739d83f805f0 Portable 1d9cfa6467d66604ef2f672969afdc288f46608913c35658f9c7466820ab01df Ariadne install UX: promoted from an end-of-install MessageBox popup to a dedicated wizard page. nsis/installer.nsh replaces the MessageBox customInstall with a `Page custom` (nsDialogs) that shows FIRST in the install flow (electron-builder's INCLUDE hook is placed above its own MUI_PAGE_* inserts and NSIS processes page directives in file order — that is the earliest hook we have without editing the template). Framed as "Options" so it reads naturally as a preamble. The page: Header: "Optional add-ons" Body: A 4-line explanation of Ariadne's Thread and the trade-off. Checkbox: "Install Ariadne's Thread (recommended)" — pre-checked. Footer: Notes the UAC prompt and that Theseus install continues. Skipped entirely (Abort) if Ariadne is already installed. State is saved from AriadnePageLeave into $InstallAriadneFlag; customInstall runs the chain-installer iff BST_CHECKED. Uninstall side unchanged (still MessageBox — a full custom uninstall page would be overkill for one Y/N during a rare event). Also carries 1e5d670: don't re-route same-origin navigations through navigateTab. Was silently breaking every site whose in-page form POSTs — Startpage's search box submits to /do/search via POST, and navigateTab -> loadURL always GETs, dropping the body. Same-origin navigations now stay on Chromium's native path. Deployed: scp + sia-upload of both trees. Verified HEAD 200 on the installer, live manifest reads 0.1.1 2026-08-31, VPS hashes match. 0.1.0 (never deployed for long — same-day iteration) is preserved in _prev/ for rollback.
2026-08-31 05:49:04 +02:00
Pop $0
${NSD_CreateCheckbox} 0 60u 100% 12u "Install Ariadne's Thread (recommended)"
Pop $AriadneCheckbox
${NSD_Check} $AriadneCheckbox
${NSD_CreateLabel} 0 80u 100% 20u "It runs a UAC (admin) prompt of its own during install. Theseus Navigator's own setup continues after this page."
Pop $0
nsDialogs::Show
Return
ariadne_page_bail:
StrCpy $InstallAriadneFlag "0"
Abort
FunctionEnd
Function AriadnePageLeave
${NSD_GetState} $AriadneCheckbox $InstallAriadneFlag
FunctionEnd
!macro customInstall
; Read the state saved from AriadnePageLeave. BST_CHECKED == 1.
${If} $InstallAriadneFlag == ${BST_CHECKED}
; Ariadne's Inno installer runs its own UAC prompt (PrivilegesRequired=admin).
; ExecWait blocks until Ariadne finishes or the user cancels UAC; either
; way, Theseus install continues normally afterwards.
ExecWait '"$INSTDIR\resources\${ARIADNE_INSTALLER}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART'
${EndIf}
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.
2026-08-31 05:07:34 +02:00
!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