For those who run into this in the future here's what it took to gain access to the assembly information from wix.
Note at the time of posting I hadn't managed to return the entire data object as a single struct, but can at least output the values as strings.
To make it easy to define the targeted assembly file, define a constant either via your node in the .wixproj file Or via the wixProj's Properties > Build > Define Preprocessor variables field:
AssetPath=../MyReferencedProject/bin/$(Configuration)/MyAsset.exe;
Next, place the below code into your .wixProj file. (Edit this with NotePad++ then reload the project in VS)
<!--To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.-->
<Target Name="BeforeBuild">
<ExtractAsmInfo AsmPath="$([System.Text.RegularExpressions.Regex]::Match(";$(DefineConstants);", ";AssetPath=(?<path>.*?);").Groups["path"].Value)">
<Output PropertyName="asmCompName" TaskParameter="AsmCompName" />
<Output PropertyName="asmProdName" TaskParameter="AsmProdName" />
<Output PropertyName="asmDesc" TaskParameter="AsmDesc" />
<Output PropertyName="asmCopyright" TaskParameter="AsmCopyright" />
<Output PropertyName="asmTrademarks" TaskParameter="AsmTrademarks" />
<Output PropertyName="asmFileVersion" TaskParameter="AsmFileVersion" />
</ExtractAsmInfo>
<!--This is needed for the output to be accessible from your .wxs file as "!(wix.asmCompName)"-->
<CreateProperty Value="asmCompName=$(asmCompName);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
<CreateProperty Value="asmProdName=$(asmProdName);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
<CreateProperty Value="asmDesc=$(asmDesc);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
<CreateProperty Value="asmCopyright=$(asmCopyright);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
<CreateProperty Value="asmTrademarks=$(asmTrademarks);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
<CreateProperty Value="asmFileVersion=$(asmFileVersion);$(WixVariables)">
<Output TaskParameter="Value" PropertyName="WixVariables" />
</CreateProperty>
</Target>
<!--<Target Name="AfterBuild"></Target>-->
<!--Extracts data from the assembly-->
<UsingTask TaskName="ExtractAsmInfo" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
<ParameterGroup>
<!--The assembly path-->
<AsmPath ParameterType="System.String" Required="true" />
<!--The return value. Note the return types are extremely limited-->
<AsmCompName ParameterType="System.String" Output="true" />
<AsmProdName ParameterType="System.String" Output="true" />
<AsmDesc ParameterType="System.String" Output="true" />
<AsmCopyright ParameterType="System.String" Output="true" />
<AsmTrademarks ParameterType="System.String" Output="true" />
<AsmFileVersion ParameterType="System.String" Output="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Using Namespace="System" />
<Using Namespace="System.Xml.Linq" />
<Using Namespace="System.Reflection" />
<Using Namespace="System.Diagnostics" />
<Code Type="Fragment" Language="cs">
<![CDATA[
FileVersionInfo fileInfo = FileVersionInfo.GetVersionInfo(AsmPath);
AsmCompName = fileInfo.CompanyName;
AsmProdName = fileInfo.ProductName;
AsmDesc = fileInfo.FileDescription;
AsmCopyright = fileInfo.LegalCopyright;
AsmTrademarks = fileInfo.LegalTrademarks;
AsmFileVersion = fileInfo.FileVersion;
]]>
</Code>
</Task>
</UsingTask>
Finally, in your .wxs file, you can just use:
<!--Note the use of an EXCLAMATION MARK and not Dollar Sign as well as the wix. instead of var.-->
!(wix.asmProdName)
!(wix.asmCompName)
!(wix.asmDesc)
!(wix.asmCopyright)
!(wix.asmTrademarks)
!(wix.asmFileVersion)
<!--Example-->
<Product Id="*" UpgradeCode="1129c4e2-e288-48d5-84dd-587aec927f26"
Name="!(wix.asmProdName) Installer" Manufacturer="!(wix.asmCompName)"
Language="1033" Version="!(wix.asmFileVersion)">
<Package Id="*" Compressed="yes"
InstallerVersion="200" InstallPrivileges="elevated" InstallScope="perMachine"
Keywords="Installer" Languages="1033" Platform="x64" ReadOnly="no" ShortNames="no" SummaryCodepage="1252"
Description="The !(wix.asmDesc) and it's protocol installer."
Comments="!(wix.asmCopyright) | !(wix.asmTrademarks)" />
...
</Product>
Refs