Open destiny14 opened 1 month ago
Windows Installer is the runtime that executes .msi packages, so as long as WiX correctly built the package, it's not involved in the runtime (not counting custom actions).
I know, but the rollback worked fine when using WiX 3, and I don't think the MSI runtime changed that much in the last months.
Maybe add that to your repro?
I edited my report.
I meant your repro project.
The reason it was working with WiX3 is a different sequencing, it was sequenced after InstallInitialize and thus executed before the product registration. It is broken in WiX3 too.
I did compare it to a package generated with Advanced Installer. I tried recreating the custom action as good as possible, it is a custom code action which fails. Advanced Installer does not allow sequencing between InstallExecute and -Finalize, so I moved the CA in WiX to before InstallExecute, which yielded the same result (broken rollback). Here is a screenshot comparing both packages. WiX (broken rollback) is on the left, AI (working rollback) is on the right.
So it seems to me that this problem is actually related to WiX and not caused by the Windows Installer Runtime.
That sequencing is equivalent, though, so...
Yes, and using WiX it is broken. Using Advanced Installer it works.
Can you attach that .msi?
Sure: advancedinstaller.zip
WiX Version
4.0.3 (also present in 5, not present in 3)
.NET or MSBuild or Visual Studio Version
.NET 8.0.302, Visual Studio 17.10.2
HeatWave Version
1.0.4.5
Windows Version
Win 11 23H2
Repro Repo
https://github.com/destiny14/WixRollbackBugRepro
Repro Steps
Actual Result
The rollback removes all files and custom registry keys, but the application is still listed under installed applications afterwards. When using an installer with UI the Add/Modify/Remove screen is shown when executing the installer again despite the application not being actually installed.
The log shows numerous errors during rollback of the "PublishProduct" action:
wixTestLog.txt
Expected Result
The application should be properly removed from the registry.
Acknowledgements