Repository navigation
Fix desktop shortcut icon, upgrade folder, file associations and install mode - #5
Conversation
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|



Four related fixes to the Windows Inno Setup script. Each one was found while verifying the previous one, and they are best reviewed in order.
What changed
59ab88c— Point the desktop shortcut at the installed iconIconFilenamereused theMyAppIcondefine, which is a build-time path relative to the.issfile. On the target machine it expanded to{app}\..\src\resources\icon.ico, which does not exist, so Windows silently fell back to a default icon. Line 40 already installs the icon into{app}, so the shortcut now points at{app}\icon.ico.This was a regression: the pre-rename shortcut already used the correct form.
1d8f953— Give the rebranded installer its own AppIdDefaultDirNamewas correct ({pf64}\SQL Query Analyzer) but never consulted. A matchingAppIdmakes Setup reuse the previous install's remembered directory, so upgrades fromsqlitequery-era installs kept landing in the old folder. A fresh GUID means there is no previous install to find.Chosen over
UsePreviousAppDir=no, which would have silently relocated anyone who installed to a custom path and left the old directory orphaned.UsePreviousAppDirstays at its defaultyes, which is the behaviour we want for future upgrades of the new product.a8b7242— Register file associations under an app-specific ProgIDuninsdeletekeywas pointed atSQLite Database, a generic ProgID any SQLite tool may claim. Whichever product uninstalled last destroyed the association for the others. The app now ownsSQLQueryAnalyzer.sqlite, souninsdeletekeyonly removes keys we exclusively own. Also addsOpenWithProgidsentries so other tools keep theirs.f97d032— Install in 64-bit mode and refuse 32-bit WindowsArchitecturesInstallIn64BitMode=x64keeps the uninstall entry in the 64-bit registry view rather thanWOW6432Node.ArchitecturesAllowed=x64is a separate fix found along the way: the installer would previously run on 32-bit Windows and install a 64-bit app that cannot start. The exe's PE machine type is0x8664andbuild.ps1usesvcvars64, so refusing is correct.Reviewer notes
These last two commits must release together. Changing install mode relocates the uninstall entry. It is free right now only because the new
AppIdhas never shipped. If1d8f953ships withoutf97d032, users' entries get stranded inWOW6432Node.Existing installs are treated as a separate product. The new
AppIdmeans the oldSQLite Query Analyzerstays installed and independently uninstallable rather than being upgraded in place. Users will have both until they remove the old one. That was a deliberate choice over forcing relocation.Inno Setup 5 syntax throughout (
deps/innosetupis the 2018 v5 compiler).x64, not v6'sx64os/x64compatible;{pf64}, not{commonpf64}. Verified empirically that{pf64}resolves correctly under 32-bit install mode on v5, which the docs are ambiguous about.Known limitation, not fixed.
uninsdeletevalueclears the.sqlitedefault value on uninstall; it cannot restore what another tool had set. The blast radius is much smaller than before — the other product's ProgID now survives, so it is one repair-install away and stays reachable via Open With — but a clean restore would need a[Code]block, which this file currently has none of.Verification
pwsh -NoProfile -File build.ps1passed before each commit (194 tests pass, 27 skipped — the PostgreSQL/SQL Server/MySQL provider tests needingSQLQUERY_TEST_*env vars).Each fix was verified with a real install/uninstall cycle on Windows 11, not just by compiling:
{app}\icon.ico, renders app iconC:\Program Files\SQL Query AnalyzerWOW6432Node\...\Uninstall...\UninstallSQLite DatabaseProgIDThe installed
icon.icowas confirmed byte-identical tosrc/resources/icon.ico(SHA256A923D7F4…) and rendered to confirm it is the real artwork rather than a fallback.