.net - Wix !(bind.AssemblyFullName.fileId) only works on GACed assemblies? -
.net - Wix !(bind.AssemblyFullName.fileId) only works on GACed assemblies? -
woe, woe , thrice woe. why wix create installing .net assemblies soooooo difficult!
i'm installing com inprocess server implemented in .net, in wix install need create registry entries it. don't want this, i'd rather wix had equivalent of regasm, create me manually. got tired of getting flamed suggesting tad arcane, gave , tried declarative way, boy. so, here's registry stuff looks now:
<file id="fildriverassembly" source="$(var.tigra.astronomy.awrdrivesystem.targetpath)" keypath="yes" vital="yes" assembly=".net"> <!--<class context="inprocserver32" description="$(var.installname)" id ="$(var.driverguid)" threadingmodel ="both" > <progid description="$(var.installname)" id ="$(var.driverid)" /> </class>--> </file> <registrykey root="hkcr" key="$(var.driverid)" action="createandremoveonuninstall"> <registryvalue type="string" value="$(var.drivertypename)"/> <registrykey key="clsid"> <registryvalue type="string" value="$(var.driverguid)" /> <registrykey key="$(var.driverguid)"> <registryvalue type="string" value="$(var.drivertypename)"/> <registrykey key="inprocserver32"> <registryvalue type="string" value="mscoree.dll" /> <registryvalue type="string" name="threadingmodel" value="both"/> <registryvalue type="string" name="class" value="$(var.drivertypename)"/> <registryvalue type="string" name="assembly" value="!(bind.assemblyfullname.fildriverassembly)"/> <registryvalue type="string" name="runtimeversion" value="2.0.50727"/> <registryvalue type="string" name="codebase" value="file:///[#fildriverassembly]" /> <registrykey key="!(bind.fileversion.fildriverassembly)" > <registryvalue type="string" name="class" value="$(var.drivertypename)"/> <registryvalue type="string" name="assembly" value="!(bind.assemblyfullname.fildriverassembly)"/> <registryvalue type="string" name="runtimeversion" value="2.0.50727"/> <registryvalue type="string" name="codebase" value="file:///[#fildriverassembly]" /> </registrykey> </registrykey> <registrykey key="progid"> <registryvalue type="string" value="$(var.driverid)" /> </registrykey> <registrykey key="implemented categories"> <registrykey key="{62c8fe65-4ebb-45e7-b440-6e39b2cdbf29}" /> </registrykey> </registrykey> </registrykey> </registrykey> <!-- wow6432node x86 compatibility, installed on x64 systems --> <!-- hkey_local_machine\software\classes\wow6432node --> <?if $(var.win64) = "yes" ?> <registrykey root="hkcr" key="wow6432node" action="createandremoveonuninstall"> <registrykey key="clsid"> <registryvalue type="string" value="$(var.driverguid)" /> <registrykey key="$(var.driverguid)"> <registryvalue type="string" value="$(var.drivertypename)"/> <registrykey key="inprocserver32"> <registryvalue type="string" value="mscoree.dll" /> <registryvalue type="string" name="threadingmodel" value="both"/> <registryvalue type="string" name="class" value="$(var.drivertypename)"/> <registryvalue type="string" name="assembly" value="!(bind.assemblyfullname.fildriverassembly)"/> <registryvalue type="string" name="runtimeversion" value="2.0.50727"/> <registryvalue type="string" name="codebase" value="file:///[#fildriverassembly]" /> <registrykey key="!(bind.assemblyversion.fildriverassembly)" > <registryvalue type="string" name="class" value="$(var.drivertypename)"/> <registryvalue type="string" name="assembly" value="!(bind.assemblyfullname.fildriverassembly)"/> <registryvalue type="string" name="runtimeversion" value="2.0.50727"/> <registryvalue type="string" name="codebase" value="file:///[#fildriverassembly]" /> </registrykey> </registrykey> <registrykey key="progid"> <registryvalue type="string" value="$(var.driverid)" /> </registrykey> <registrykey key="implemented categories"> <registrykey key="{62c8fe65-4ebb-45e7-b440-6e39b2cdbf29}" /> </registrykey> </registrykey> </registrykey> </registrykey> <?endif ?>
regasm wimps, eh? anyway, notice need assembly total name create of registry keys. i'm using binder variables, specifically, value="!(bind.assemblyfullname.fildriverassembly)"
.
this however, not work unless add together attribute assembly=".net"
file entry. if don't add together attribute, or if utilize assembly="no"
, get
error 2 unresolved bind-time variable !(bind.assemblyfullname.fildriverassembly).
when add together assembly=".net"
file item, binder variables work fine, wix puts assembly global assembly cache, not want! oh, man.
is not possible query assembly's total name in wix project if not going gac? why these 2 things depend on each other?
unless file marked assembly, it's other file; wix has no thought might have assembly attributes. check out assemblyapplication attribute: can set appropriate file , set @assembly=".net" without telling msi file goes gac.
.net com installer wix registry
Comments
Post a Comment