Skip to content

Update WiX toolset to 6.0.2 - #15060

Merged
daschuer merged 8 commits into
mixxxdj:2.6from
JoergAtGithub:Update_WiX_toolset
Mar 13, 2026
Merged

Update WiX toolset to 6.0.2#15060
daschuer merged 8 commits into
mixxxdj:2.6from
JoergAtGithub:Update_WiX_toolset

Conversation

@JoergAtGithub

@JoergAtGithub JoergAtGithub commented Jun 30, 2025

Copy link
Copy Markdown
Member

Closes: #15056

Ensures for ARM64 from the begining that we generate valid installations.
This hopefully will reduce the number of failed installation attemps, because the need for Admin rights is now correctly visualized and users see that they need elevated rights to install it.
Installer is generally smaller and faster.

…t 6.0.1

Use the same WiX toolset installation on both Windows architectures
Fix the broken Multiuser Installation of the WiX 3.14 support in CPack
@JoergAtGithub JoergAtGithub added the changelog This PR should be included in the changelog label Jun 30, 2025
@github-actions github-actions Bot added the build label Jun 30, 2025
@ronso0 ronso0 added the windows label Jun 30, 2025
Comment thread .github/workflows/build.yml Outdated
Comment thread .github/workflows/build.yml Outdated
Comment thread CMakeLists.txt
@JoergAtGithub JoergAtGithub added this to the 2.6.0 milestone Aug 17, 2025
Comment thread .github/workflows/build.yml Outdated
Comment on lines 196 to 198
# This is a workaround for a SSL false positive in cmake 3.26.4
# When downloading the manual. 3.21 is required for installing the
# ANGLE Dlls via IMPORTED_RUNTIME_ARTIFACTS

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment is from here:
#12197
Can you verify that downloading the manual works with CMake 3.30

Suggested change
# This is a workaround for a SSL false positive in cmake 3.26.4
# When downloading the manual. 3.21 is required for installing the
# ANGLE Dlls via IMPORTED_RUNTIME_ARTIFACTS
# On Windows, we need at least CMake 3.30.x for WIX toolset >= 4.0

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried this PR with my local CMake 4.1.1 which comes with VS2026 and it downloads the manual flawless:

[CMake] -- Downloading manual from https://downloads.mixxx.org/manual/2.6/mixxx-manual-2.6-en.pdf...
1> [CMake] -- [download 0% complete]
1> [CMake] -- [download 1% complete]
1> [CMake] -- [download 2% complete]

@daschuer

Copy link
Copy Markdown
Member

For my understanding the C# code of wixsharp is only an interface that finally creates a wix code and than to an msi file. If it is possible with wixsharp, with some luck it is also possible for wix.

@JoergAtGithub
JoergAtGithub force-pushed the Update_WiX_toolset branch 2 times, most recently from ae2a3b6 to dc85eaa Compare March 8, 2026 23:23
…LL, that can be called inside of our MSI installer. FindAllRelatedMixxxInstallations detects old Mixxx installation with the illegal install scope "none"
@JoergAtGithub

Copy link
Copy Markdown
Member Author

I think I fixed this. The C# code section pointed by @daschuer does not generate MSI code, it is code that is called by MSI as Custom Action. I implemented this functionality as C++ DLL which is called as Custom Action in the MSI to get all previous Mixxx installations.

  • The standad Windows API FindRelatedProducts returns only Installations where UpgradeCode and installation scope matches
  • The custom FindAllRelatedMixxxInstallations returns all Installations where the UpgradeCode matches, regardless of the installation scope

This solves the issue with the old installations, where CPack set the invalid installation scope none.

@daschuer daschuer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great you have found a solution. I have added some nit picks for code style, basically.
How it the DLL deployed? Does Wix care for it automatically? Maybe you can drop a comment about it.

Comment thread packaging/wix/CMakeLists.txt Outdated
Comment thread packaging/wix/mixxxupgradecustomaction.cpp Outdated
Comment thread packaging/wix/mixxxupgradecustomaction.cpp Outdated
Comment thread CMakeLists.txt
@JoergAtGithub

JoergAtGithub commented Mar 9, 2026

Copy link
Copy Markdown
Member Author

How it the DLL deployed? Does Wix care for it automatically? Maybe you can drop a comment about it.

Yes, it should deploy it automatically. But it would be good, if someone with a vanilla system could confirm that this works.
I assume that we will need to sign this DLL with our certificate.

@daschuer

daschuer commented Mar 9, 2026

Copy link
Copy Markdown
Member

Signing can't hurd. If it is only part of the signed MSI it is probably already no security risk.

@acolombier

Copy link
Copy Markdown
Member

Tested again:

Installed 2.5.5 (Candidate)

image

Installed 2.6.0 (Beta)

image

Works like a charm! Note that I could see a Collecting for migration info for a split second in the 2.6 install wizard, but nothing more disruptive than that.

// Enumerate ALL products with our UpgradeCode (scope-agnostic).
wchar_t relatedProduct[kMsiGuidBufferSize] = {};
DWORD index = 0;
while (MsiEnumRelatedProductsW(kMixxxUpgradeCode, 0, index, relatedProduct) == ERROR_SUCCESS) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ERROR_SUCCESS 😆

@daschuer

Copy link
Copy Markdown
Member

I have tested on a Windows 10 VM and got this error after installing on top of a 2.7 alpha install:
grafik

Really strange the start menu entry points to:
C:\Users\dasch\Downloads\sign\mixxx.exe
A folder I have created for testing purpose a time ago.

The Mixxx.exe in the Program folder was missing, the other files are there.

A "Repair" install repairs the installation. I have no clue what Microsoft is doing :-/

@daschuer

daschuer commented Mar 10, 2026

Copy link
Copy Markdown
Member

When downgrading to 2.5 from this 2.6 the user create a program folder of partially new and old files.
This happens if a user downgrades form the new 2.6 to 2.5.

We need to advice the users that they uninstall 2.6 manually Before installing downgrading 2.5. With the old installer, the user was not able to downgrade and was prompted to uninstall the newer version manually.
This is prompt is missing now.

Can we patch the installer for 2.5.5 based on Old Wix in the same way that a new 2.6 is found, that they can smoothy change between 2.5.5 and 2.6.0 at least?

For the already released 2.5.4 we can do nothing?
Is this even worse the extra work?

What do you think?

@daschuer

Copy link
Copy Markdown
Member

ChatGPT has this explanation:

Why MSI might find the EXE in your Downloads folder

MSI internally tracks component keypaths and source locations.

If the component identity got mixed up during upgrade:

Old product instance still registered

Component GUID reused

KeyPath resolution runs

Windows searches known source locations

It finds mixxx.exe somewhere else (like your test folder)

Then the advertised shortcut resolves to that.

This looks insane, but it's classic MSI behavior.

@JoergAtGithub JoergAtGithub changed the title Update WiX toolset to 6.0.1 Update WiX toolset to 6.0.2 Mar 10, 2026
@JoergAtGithub
JoergAtGithub requested a review from daschuer March 10, 2026 19:26

@daschuer daschuer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks good. I read a bit and while the finding with the random mixxx.exe is a severe issue. It is unlikely caused by you changes.

The question remains: do we want to add a similar patch to the 2.5 branch detecting the new installation?

@JoergAtGithub

Copy link
Copy Markdown
Member Author

The code looks good. I read a bit and while the finding with the random mixxx.exe is a severe issue. It is unlikely caused by you changes.

The question remains: do we want to add a similar patch to the 2.5 branch detecting the new installation?

I don't think we should delay 2.5.5 for this, as we discontinue support for former releases anyway. But I would mention in the 2.6 changelog, that downgrade requires manual deinstallation before installing the former release.

@daschuer daschuer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thank you.

@daschuer
daschuer merged commit c2cc310 into mixxxdj:2.6 Mar 13, 2026
24 of 46 checks passed
@JoergAtGithub
JoergAtGithub deleted the Update_WiX_toolset branch March 13, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants