Extends the Ariadne toggle card in Settings > Registries with the three
lifecycle actions the user asked for:
- Install: runs the bundled AriadneResolver-Setup-<ver>.exe silently
and elevated (/VERYSILENT /SUPPRESSMSGBOXES /NORESTART). Single UAC
prompt, no wizard.
- Update: same installer, run over the top. Inno Setup detects the
matching AppId and upgrades in place. Only shown when the bundled
version is newer than what's installed.
- Uninstall: reads Inno's QuietUninstallString from
HKLM\...\Uninstall\{7E7A5F1C-...}_is1 and runs it elevated with
/VERYSILENT /SUPPRESSMSGBOXES /NORESTART.
Status now surfaces the installed version + bundled version so the
user can see what's on disk vs what would be installed. Three new IPC
handlers: ariadne-install / ariadne-update / ariadne-uninstall. Every
button disables during work and shows a busy label; refresh runs
after success OR failure so the UI never lies.
Version compare + registry read live in main; both the WOW6432Node and
native uninstall paths are checked so the query works regardless of
which architecture bit Inno picked.
45 lines
2.9 KiB
JavaScript
45 lines
2.9 KiB
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
contextBridge.exposeInMainWorld("cfg", {
|
|
get: () => ipcRenderer.invoke("settings-get"),
|
|
set: (key, value) => ipcRenderer.invoke("settings-set", key, value),
|
|
engines: () => ipcRenderer.invoke("search-engines"),
|
|
addEngine: (eng) => ipcRenderer.invoke("add-engine", eng),
|
|
removeEngine: (id) => ipcRenderer.invoke("remove-engine", id),
|
|
setEngineEnabled: (id, on) => ipcRenderer.invoke("set-engine-enabled", id, on),
|
|
setEngineOrder: (ids) => ipcRenderer.invoke("set-engine-order", ids),
|
|
removeFromList: (id) => ipcRenderer.invoke("remove-from-list", id),
|
|
// Storage: wipe browsing data on demand. Pass any subset of
|
|
// { cookies, cache, storage, history }.
|
|
clearBrowsingData: (opts) => ipcRenderer.invoke("clear-browsing-data", opts),
|
|
// Password vault. All calls return { ok, ... } | { ok: false, err }.
|
|
// Renderers never see the seed / vault key / master password past setup/
|
|
// unlock; get() returns plaintext only in explicit response to a user click.
|
|
pwStatus: () => ipcRenderer.invoke("password-status"),
|
|
pwSetup: (masterPassword, seedSource) => ipcRenderer.invoke("password-setup", { masterPassword, seedSource }),
|
|
pwUnlock: (masterPassword) => ipcRenderer.invoke("password-unlock", masterPassword),
|
|
pwLock: () => ipcRenderer.invoke("password-lock"),
|
|
pwList: () => ipcRenderer.invoke("password-list"),
|
|
pwGet: (id) => ipcRenderer.invoke("password-get", id),
|
|
pwAdd: (entry) => ipcRenderer.invoke("password-add", entry),
|
|
pwUpdate: (id, patch) => ipcRenderer.invoke("password-update", id, patch),
|
|
pwRemove: (id) => ipcRenderer.invoke("password-remove", id),
|
|
pwGenerate: (spec) => ipcRenderer.invoke("password-generate", spec),
|
|
// Main asks settings to jump to a specific sidebar section (e.g. from the
|
|
// engine picker's "Search settings…" click). Emits the section id string.
|
|
onFocusSection: (cb) => ipcRenderer.on("focus-section", (_e, section) => cb(section)),
|
|
// Collision-mode: BCNR/ICANN policy + per-name/per-TLD overrides
|
|
collisionState: () => ipcRenderer.invoke("collision-state"),
|
|
setCollisionPolicy: (p) => ipcRenderer.invoke("collision-set-policy", p),
|
|
resetCollisions: () => ipcRenderer.invoke("collision-reset"),
|
|
ariadneState: () => ipcRenderer.invoke("ariadne-state"),
|
|
ariadneToggle: (on) => ipcRenderer.invoke("ariadne-toggle", !!on),
|
|
ariadneInstall: () => ipcRenderer.invoke("ariadne-install"),
|
|
ariadneUpdate: () => ipcRenderer.invoke("ariadne-update"),
|
|
ariadneUninstall: () => ipcRenderer.invoke("ariadne-uninstall"),
|
|
// Add-ons management (Settings > Add-ons tab).
|
|
listAddons: () => ipcRenderer.invoke("addons-list"),
|
|
setAddonEnabled: (id, enabled) => ipcRenderer.invoke("addons-set-enabled", id, !!enabled),
|
|
revealAddon: (folder) => ipcRenderer.invoke("addons-reveal", folder),
|
|
openAddonsDir: () => ipcRenderer.invoke("addons-open-dir"),
|
|
reloadAddons: () => ipcRenderer.invoke("addons-reload"),
|
|
});
|