[wix-devs] Validation same but different plus IceBreaker question

Rob Mensching rob at firegiant.com
Fri Feb 4 13:09:19 PST 2022


This is mostly FYI but always welcome input plus I have a question at the end.

I was trying to knock out a few of the easier bugs assigned to me so I could get under 50. :) I was doing pretty well until I hit #5257 (https://github.com/wixtoolset/issues/issues/5257). I thought this issue was already going to be resolved due to other changes in WiX v4. It was much worse than that.

Validation has been disabled in v4 since the beginning. This didn't surprise me since our build times were so fast but I was unprepared for the impact when I re-enabled validation. It tripled the build time on my machine (11m to 33m).

The way validation is designed by the Windows Installer is bad, really bad. Performance is always going to be a problem. So, I have two thoughts. I'm doing one thing in v4 now and want to discuss whether (more likely when) to do the second thing.

First: I'm pulling validation out of the build of the MSI. This is the very reasonable request made in #5357 and the more I got into the code the more I realized how much data was being pushed down to enable running validation right when the MSI is created. My current work is to extract validation into a separate MSBuild target that runs after the "wix build" target. I needed to tackle this problem sort of/anyway to resolve the removal of "smoke.exe".

This is the part where validation when using MSBuild is the same but done differently. From the command-line "wix build" will no longer validate and "wix msi validate" (the smoke replacement) will be necessary. So, "wix build" is now like "light.exe -sval" and will need to run the "smoke.exe" separately.

This ends up all very, very good for the "build" command but not great for users who choose to use "wix.exe" and will likely forget to add the validation command. Which leads to the second thought.

Second: Return of the IceBreaker Project. We discussed this in the past and the real solution to "fixing validation" is re-implementing the ICEs against WiX data (compared to starting an install to execution custom actions as ICEs work). We called that project "IceBreaker". Doing the 120'ish ICE tests against typically sized MSI packages is likely to take milliseconds compared to the seconds required to run ICEs. The IceBreaker project has been "on ice" since we discussed in given the amount of fundamental work needed to make WiX v4 work. But IceBreaker could be highly parallelized so if a bunch of people wanted to jump in and help we could probably make progress quickly.

My question is should we require the IceBreaker Project in the WiX v4 timeframe so "wix build" still does validation (but without ICEs)?

I'm well into the first part and it is doing good things to the code. Any thoughts, particularly on IceBreaker in v4?

Regards,

  Rob Mensching
  CEO
  FireGiant
_______________________________________________________________
FireGiant  |  Dedicated support for the WiX toolset  |  http://www.firegiant.com/



More information about the wix-devs mailing list