From ea5125f030052fdb2a27a0c7aa606df1597bf9ca Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 13:45:28 +0100 Subject: [PATCH 1/8] fix(installer): Use Order attribute to override license dialog navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous Publish elements without Order didn't override the defaults. Adding Order="1" ensures our overrides fire after the WixUI defaults, making our InstallDirDlg navigation take precedence. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- windows/installer.wxs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/windows/installer.wxs b/windows/installer.wxs index cfbbc8c0..a58429df 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -14,12 +14,12 @@ - + - + - + From 6789376b92e58f2783e1077ba4ee6b0fbeffcf06 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 16:01:43 +0100 Subject: [PATCH 2/8] fix(installer): Try Order=999 to force dialog override to fire last MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- windows/installer.wxs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/windows/installer.wxs b/windows/installer.wxs index a58429df..7ddde4f1 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -14,12 +14,12 @@ - + - + - + From 4a51ad114e7a296f0195e50c04974a69fc9635f2 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 16:25:35 +0100 Subject: [PATCH 3/8] fix(installer): Use custom UI without license dialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of trying to override WixUI_InstallDir, create a custom UI based on it but without the LicenseAgreementDlg. This is the proper way to remove dialogs from WiX UI sets. - Add CustomUI.wxs with dialog flow: Welcome -> InstallDir -> VerifyReady - Update installer.wxs to use CustomInstallDirUI instead of WixUI_InstallDir - Update workflow to build both .wxs files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .github/workflows/release.yml | 2 +- windows/CustomUI.wxs | 71 +++++++++++++++++++++++++++++++++++ windows/installer.wxs | 14 ++----- 3 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 windows/CustomUI.wxs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d8e28111..845e1ee2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -84,7 +84,7 @@ jobs: run: Compress-Archive -Path ./installer/* -DestinationPath ./CCExtractor_win_portable.zip working-directory: ./windows - name: Build installer - run: wix build -ext WixToolset.UI.wixext -d "AppVersion=${{ steps.get_version.outputs.VERSION }}.0.0" -o CCExtractor.msi installer.wxs + run: wix build -ext WixToolset.UI.wixext -d "AppVersion=${{ steps.get_version.outputs.VERSION }}.0.0" -o CCExtractor.msi installer.wxs CustomUI.wxs working-directory: ./windows - name: Upload as asset uses: AButler/upload-release-assets@v3.0 diff --git a/windows/CustomUI.wxs b/windows/CustomUI.wxs new file mode 100644 index 00000000..507ca6ba --- /dev/null +++ b/windows/CustomUI.wxs @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/installer.wxs b/windows/installer.wxs index 7ddde4f1..6376c04f 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -1,4 +1,4 @@ - + @@ -12,15 +12,9 @@ - - - - - - - - - + + + From 84692b5658c482e24c15a4d3b6b1a687bbae766c Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 17:23:09 +0100 Subject: [PATCH 4/8] fix(installer): Disable path validation to avoid local drive errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- windows/installer.wxs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/windows/installer.wxs b/windows/installer.wxs index 6376c04f..6e869b2a 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -15,6 +15,8 @@ + + From c0deae4b0cac0f1a9d808ac939764453d075a587 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 18:20:18 +0100 Subject: [PATCH 5/8] fix(installer): Add InstallScope=perMachine and update InstallerVersion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Set InstallScope="perMachine" to ensure proper admin-level registry access - Bump InstallerVersion from 200 to 500 (Windows Installer 5.0) This should fix the "Could not write key VersionMinor to Product" error. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- windows/installer.wxs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/installer.wxs b/windows/installer.wxs index 6e869b2a..56df42f9 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -1,5 +1,5 @@ - + From 1fc5ec00d4eacd6dc073cc04f24adf1130726fb1 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 19:03:53 +0100 Subject: [PATCH 6/8] fix(installer): Use correct WiX v4+ attribute name 'Scope' not 'InstallScope' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- windows/installer.wxs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/installer.wxs b/windows/installer.wxs index 56df42f9..38219266 100644 --- a/windows/installer.wxs +++ b/windows/installer.wxs @@ -1,5 +1,5 @@ - + From 1950f096b6670a8002dcdaee7086f40daac5daec Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Wed, 24 Dec 2025 20:05:20 +0100 Subject: [PATCH 7/8] fix(workflow): Extract only numeric version for MSI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MSI version numbers must be numeric (major.minor.build format). Strip everything after the first dash from tag names to get valid version numbers (e.g., v1.08-test becomes 1.08). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .github/workflows/release.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 845e1ee2..300aa105 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,11 @@ jobs: uses: actions/checkout@v6 - name: Get the version id: get_version - run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} + run: | + # Extract version from tag, strip 'v' prefix and everything after first dash + VERSION=${GITHUB_REF/refs\/tags\/v/} + VERSION=${VERSION%%-*} + echo ::set-output name=VERSION::$VERSION shell: bash - name: Setup MSBuild.exe uses: microsoft/setup-msbuild@v2.0.0 From 903ccc1442c9a8964ea3785a4adf021a2be192ae Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Thu, 25 Dec 2025 09:59:16 +0100 Subject: [PATCH 8/8] chore: trigger CI rerun