我很难让wix 3.7刻录捆绑工作。我想检查系统上是否存在特定的COM库(这是先决条件)。我试过了:
util:RegistrySearch
SOFTWARE\Classes\Installer\Assemblies\Global
下的interop.name, Version=1.170.0.0, ...
- 我无法添加通配符,密钥名称包含版本util:FileSearch
[%WINDIR%]\Windows\assembly\GAC_MSIL\interop.name\1.170.0.0__a59bfa3a209beb60\interop.name.dll
- 再次,无法添加通配符,我不确定我是否可以认为它总是在GAC_MSIL下util:ComponentSearch
- 我不知道如何找出guid来搜索 - 似乎总是在我尝试的时候返回false。HKCR\TypeLib\{F1E91071-83CC-4766-90BA-E038B005ACE}
条目,但同样,我不确定检查它是否可靠?有没有很好的简单方法来检查GAC中是否存在COM dll?我不介意,如果在某些边境情况下(例如没有完全卸载)它会遗漏一些东西,我只想覆盖大多数情况并避免因为不可靠的检查而阻止安装。
答案 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>
从我所知道的事情中可以正常工作。