A.Game
A.Game

Reputation: 459

Writing in the x64 part of the registry with an otherwise x86 mai pack created in Wix

I'm writing an installer pack for a product using Wix, the whole thing is in x86, but now i need to add a key to the x64 part of the registry. I looked around and found this stack answer which I thought would solve my problem. But I'm getting a ICE80 error (not a warning) which tells me that I basically need to change my Package Platform attribute to x64.

I would however rather avoid that because as I mentioned it's only one registry key that needs to be in x64.

So my question is: Is there another way to resolve the ICE80 error or do I need to build two msi packages, one for x86 and one for x64.

Here is some of my code to further illustrate what I'm trying to do:

        <Component Id="Foo" Guid="{GUID}" Win64="yes">
    <RegistryKey Root="HKLM" Key="Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\IniFiles">
      <RegistryValue Type="integer" Name="Hello" Value="1"/>
    </RegistryKey>
    <Condition><![CDATA[VersionNT64]]></Condition>
  </Component>

  <Component Id="Bar" Guid="{GUID}">
    <RegistryKey Root="HKLM" Key="Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\IniFiles">
      <RegistryValue Type="integer" Name="Hello" Value="1"/>
    </RegistryKey>
  </Component>

Any help is appreciated!

Upvotes: 6

Views: 4294

Answers (3)

Petronius
Petronius

Reputation: 454

Perhaps it didn't work then. I am using Wix v10 and in my x86 WIX project, and adding Win64="yes"initially generated ICE80 error. Once I suppressed that warning (in Visual Studio, "Tool Settings" -> "Suppress specific validation:" column), I no longer get that error. When I ran the x86 installer on Windows 2012 R2, those x64 reg keys were created.

Upvotes: 2

Bob Arnson
Bob Arnson

Reputation: 21886

Windows Installer doesn't support a 32-bit package writing to the 64-bit registry (or file system). A 64-bit package can write to both 32-bit and 64-bit portions.

Upvotes: 6

Natalie Carr
Natalie Carr

Reputation: 3797

Add Win64="yes" to the registry entry you want to put in the 64-bit in the registry..:) I have not included the condition in my own and it works perfectly with just the Win64 attribute.

Upvotes: 0

Related Questions