wix burn检测COM dll存在

时间:2013-10-18 01:50:20

标签: wix gac burn

我很难让wix 3.7刻录捆绑工作。我想检查系统上是否存在特定的COM库(这是先决条件)。我试过了:

  1. util:RegistrySearch SOFTWARE\Classes\Installer\Assemblies\Global下的interop.name, Version=1.170.0.0, ... - 我无法添加通配符,密钥名称包含版本
  2. util:FileSearch [%WINDIR%]\Windows\assembly\GAC_MSIL\interop.name\1.170.0.0__a59bfa3a209beb60\interop.name.dll - 再次,无法添加通配符,我不确定我是否可以认为它总是在GAC_MSIL下
  3. util:ComponentSearch - 我不知道如何找出guid来搜索 - 似乎总是在我尝试的时候返回false。
  4. 非util,常规FileSearch - 似乎在bootstrap中不起作用。
  5. 我也注意到了一个HKCR\TypeLib\{F1E91071-83CC-4766-90BA-E038B005ACE}条目,但同样,我不确定检查它是否可靠?
  6. 有没有很好的简单方法来检查GAC中是否存在COM dll?我不介意,如果在某些边境情况下(例如没有完全卸载)它会遗漏一些东西,我只想覆盖大多数情况并避免因为不可靠的检查而阻止安装。

1 个答案:

答案 0 :(得分:0)

我最终在msi包中使用条件和常规FileSearch,引导程序在msi包之前安装所有先决条件并运行此检查可能有点烦人,但我可以忍受它。

<Property Id="DEP_EXISTS">
   <DirectorySearch Id="CheckFileDir" Path="$(env.WINDIR)\assembly\" Depth="10" AssignToProperty="yes">
     <FileSearch Id="CheckFile" Name="Interop.Dependency.dll" />
   </DirectorySearch>
</Property>
<Condition Message="Dependency not found!">DEP_EXISTS</Condition>

从我所知道的事情中可以正常工作。