[wix-users] Having trouble compiling wix project
earlej at hotmail.com
Thu Mar 10 08:37:29 PST 2016
So, I have authored a wix project in VS2015 and have worked through most of the little issues arising from injecting a bunch of code (features and file/folder definitions) from a decompiled Installshield 2009 generated msi file.
What I have in my Product.wxs, is posted below (much snipped for brevity, but enough to show what I am doing). I also have a Config.wxi where I defined a number of variables and where I also have:
<?if $(var.Platform) = x64 ?> <?define Win64 = "yes" ?>
The Win64 variable, I refer to in my Product.wvs using "$(var.Win64)". This works great for the first Directory under TARGETDIR (that being, Id="$(var.PlatformProgramFilesFolder)"), where the Components are each tagged with an attribute ' Win64="$(var.Win64)" '.
The problem is, var.Win64 seems to be lost, or starts misbehaving somehow, when the next Directory section (System64Folder) is hit. As shown below, when I compile (within VS) I receive the error:
Error ICE80: This 32BitComponent compDLL64 uses 64BitDirectory System64Folder
I don't understand why the Component would be marked as a 32bitComponent. If I force the Win64 attribute to "yes", then I receive a different error:
Error ICE80: This package contains 64 bit component 'compDLL64 ' but the Template Summary Property does not contain Intel64 or x64.
I have no Platform attribute on my Package, preferring to let VS set that for me per the project configuration (we will later need a 32bit installer).
What would be causing this?
The relevant bits of my Product.wxs:
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> <?include $(sys.CURRENTDIR)\Config.wxi ?>
<Product Name="$(var.ProductName)" ... >
<Package Id='*' InstallerVersion='200' Compressed='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'> <Directory Id="$(var.PlatformProgramFilesFolder)"> <!-- stuff removed for brevity --> </Directory>
<Directory Id="System64Folder" SourceName="System64"> <Component Id="compDLL64" Guid="..." Win64="$(var.Win64)"> <File Id="compdll.dll" Name="CompDLL.dll" Source="$(var.WIN64BINARIES)\compdll.dll" /> </Component> </Directory>
<Directory Id="SystemFolder" SourceName="System32"> <Component Id="compDLL32" Guid="..." > <File Id="compdll.dll2" Name="CompDLL.dll" Source="$(var.WIN32BINARIES)\compdll.dll" /> </Component> </Directory>
<Directory Id="ProgramMenuFolder" Name="Programs" /> <Directory Id="DesktopFolder" Name="Desktop" /> </Directory>
More information about the wix-users