Disable or Suspend ICE at the Build

Aug 12, 2016 at 11:08 AM

I have the Problem that VS get an exception with my RegValue(RegistryHive.CurrentUser, "Control Panel\Desktop", to an "System32-Path")

the following Exceptions get I

at first " error LGHT0204: ICE57: Component 'Registry1' has both per-user and per-machine data with a per-machine KeyPath"

then the .MSI get Build and after the Information over the MSI I get another error
"error MSB3073: Der Befehl ""My Repository Path to Release\WixSharp Setup.exe" "/MSBUILD:Installer"" wurde mit dem Code -1 beendet."

But the MSI which I get makes that what it should do.

So how get I the exception away?
Aug 14, 2016 at 12:00 AM
Yes ICE validation sometimes leads to the wired, hard to interpret and difficult to deal with results. And what even more annoying that ICE errors/warnings are not even errors and shouldn't be even raised in the first place.

I suggest that you have a look at the emitted WXS file and verify that the misbehaving XML code is indeed what you need. And after that you can disable the ICE specific test(s) with light.exe command line switches.

The switch can be specified via Compiler or Project LightOptions field, which by default already passes some arguments for warnings disabling:
static public string LightOptions = "-sw1076 -sw1079";
Note that Wix# already tries resolve some absurd ICE constrains by auto-injecting ICE required elements, which are strictly speaking unnecessary for your deployment. But it looks like in your case it isn't enough. Though may be this auto-injection in fact conflicts with your setup definition... Anyway you can also experiment by disabling auto injection via AutoElements.DisableAutoKeyPath.