Hello all,
Just thought I would post this in case anyone else might have the same
problem. Our installer consists of a 32 bit install, which delivers most
files, including some COM visible .Net assemblies. We also have a 64 bit
installer which, for now, delivers some 64 bit functionality, on top of the 32
bit installer, that also relies on these same COM visible .Net assemblies,
which are built Any CPU. Since we are not able to deliver the files again in
the 64 bit version (as uninstalling just the 64 bit setup is possible), we
needed a way to deliver just the registration. Here is where it gets a bit
tricky, in that what heat extracts as the registration, has the Codebase value
being derived from the File attributes:
<File Id="IMAdotNET.dll" KeyPath="yes"
Source="$(var.XMiddlebin)\IMAdotNET.dll" />
...
<RegistryValue Root="HKCR"
Key="CLSID\{E9773AFE-6383-4D78-897F-76A90C075BBD}\InprocServer32\1.0.0.0"
Name="CodeBase" Value="file:///[#IMAdotNET.dll]" Type="string" Action="write" />
Since for the 64 bit setup, we are removing the File node, how could we
reference the CodeBase correctly???
Well after much searching, and a little trial and error, we came across this
Microsoft article:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa368609(v=vs.85).aspx
(or Google: Microsoft installer formatting if this link becomes bad). Reading
the 8th bullet, we found this:
If a substring of the form [$componentkey] is found, it is replaced by the
install directory of the component, with the value componentkey used as a key
into the Component table.
Could it be that simple??? Yes it is.
We rewrote our script, that runs heat on our dlls, to find these particular
.Net assemblies and everywhere we had a RegistryValue for CodeBase, we replaced
file:///[# with file:///[$ and rebuilt the setup. Everything worked out
perfectly.
Maybe we are the only ones to run into this problem, but, I figured I would
post our findings here for what its' worth.
Regards,
Brian
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users