In WXS, how can I link to a file that is being installed through another component?

This question relates to the output from heat.exe. I am trying to do the “right thing” regarding registering some .NET collections for COM interoperability in MSI. Regasm.exe is the wrong thing.

Calling regasm.exe directly, which is easy and works "mostly", is apparently not a good idea, says Rob Menshing . This blog post explains why this is not a good idea, and also offers a very simple solution. Unfortunately, a message from 2004 offers a wix function that is now deprecated or not supported. The solution described there is no longer valid, but the problem posed in this blog remains.

Apparently, the “right” solution to the problem is to run heat.exe, and then “fix” the directory links, etc. It sounds simple enough, and this is what I'm trying to do.

OK, so I try to do the right thing. Also, I don't want the GAC to compile, which means that I have to do COM registration with an argument codebase. The output of heat.exe includes something like this:

    <RegistryKey Root="HKCR" Key="CLSID\{xxx-GUID-HERE-xxx-xxx}\InprocServer32\1.2.3.4" >
      <RegistryValue Name="Class" Value="My.DotNet.Classname.Here" Type="string" />
      <RegistryValue Name="Assembly" Value="Strongname of .NET Assembly here" />
      <RegistryValue Name="RuntimeVersion" Value="v2.0.50727" Type="string" />
      <RegistryValue Name="CodeBase" Value="file:///[#fil4B562083D141F5A2F29E28A1BD09AF3E]" Type="string" />
    </RegistryKey>

First question: what is it Value="file:///[#fil4B562083D141F5A2F29E28A1BD09AF3E]"?

It seems to me that fil4B562083D141F5A2F29E28A1BD09AF3Ethis is the Id that is generated by Wix; The identifier belongs to the File element in the .wxs file, which refers to the assembly path (DLL) that contains the named .NET class. So what exactly is octotorp for? And the square brackets? and prefix file:///? Help me understand this syntax.

- . , , , .

. , :

  C:\dev\project\ComRegistration.wxs(397): warning LGHT1076: ICE69: Mismatched component reference. 
  Entry 'reg9652ABFDD2B970C523070996FE7BB510' of the Registry table belongs to 
  component 'C.ComRegistration'. However, the formatted string in column 'Value' references 
  file 'MyAssembly.dll' which belongs to component 'C.Main'. Components are in the same 
  feature. [C:\dev\project\MyProject.wixproj]

?

, File , . ( ). ?

, FileRef, , -, .

+5
1

[# fileId] . (. "" SDK MSI .)

ICE69, . ICE69 , . ( FileRef .) , , ICE69 .

+5

All Articles