Как проверить зарегистрированные DLL в WiX - PullRequest
2 голосов
/ 21 мая 2009

Я ищу способ проверить, установлены ли определенные сторонние библиотеки с определенными версиями. Я хочу проверить зарегистрированные dll, и не знаю, где они были установлены в файловой системе. В этом примере я проверяю, установлена ​​ли у них предыдущая версия 1.50:

<Property Id="PRIORGUID">
  <RegistrySearch Id="priorguid" Root="HKCR" Key="Prior.Encoders\CLSID" Type="raw"/>
</Property>

<Property Id="PRIORLOCATION">
  <RegistrySearch Id="priorlocation" Root="HKCR" Key="CLSID\[PRIORGUID]\InprocServer32" Type="file"/>
</Property>

<Property Id="PRIORVERCHECK">
  <DirectorySearch Id="priorversion" Path="[PRIORLOCATION]">
    <FileSearch Name="Prior.dll" MinVersion="1.49"/>
  </DirectorySearch>
</Property>

<Condition Message="This application requires Prior.">
  <![CDATA[Installed OR PRIORVERCHECK]]>
</Condition>

Я в основном нахожу библиотеку в реестре, которая указывает мне на файл, а затем я ищу версию в файловой системе. Мне неловко с этим методом. Когда я использую Type = "file", кажется, что он возвращает каталог, в котором находится файл, а не полный путь к самому файлу. Всегда ли так работает? Также это означает, что я должен знать базовое имя файла. Если бы был способ разбить полный путь на имя и каталог, то я мог бы выполнить поиск файлов, не зная базового имени?

Надежен ли мой метод? Есть лучший способ сделать это? Похоже, это было бы распространенной проблемой. Я использую WiX 3.

Спасибо.

1 Ответ

0 голосов
/ 04 июня 2009

Вы можете сохранять строки, просто вкладывая их в поле для ПРИОЛОЖЕНИЕ (см. Документация WiX ). Что-то вроде:

<RegistrySearch Id="_test" Root="HKLM" Key="Software\MyCompany\MyProgram" name="Executable"Type="file">
  <FileSearch Id="_oldexe2" Name="PROGRAM2.EXE" MinSize="200000" MaxSize="4000000" />
</RegistrySearch>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...