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

Reply via email to