2013-11-19 4 views
0

Как я могу проверить наличие базы данных Oracle на машине из кода WIX? Я хочу создать условие, которое проверит его перед установкой и остановит установку, если база данных Oracle не была установлена. Нечто подобное:Wix: проверьте наличие базы данных Oracle

<Property Id="ORACLE_DB_INSTALLED"> 
    <!-- ? --> 
</Property> 
<Condition Message="Application requires Oracle database."> 
    Installed OR ORACLE_DB_INSTALLED 
</Condition> 

Я считаю, что это возможно через RegistrySearch или FileSearch элементов (я на самом деле не знаю, что искать). Может быть, любые расширения существуют для этих целей?

Спасибо, любые предложения приветствуются.

ответ

2

Для каждой установки Oracle есть запись в «Oracle inventory». По умолчанию инвентарь Oracle находится в разделе «C: \ Program Files \ Oracle \ Inventory». Однако это местоположение можно изменить.

В реестре местоположение инвентаря Oracle находится в «HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE», где вы найдете ключ «inst_loc».

Обратите внимание, что этот ключ существует на каждом компьютере, на котором установлена ​​продукт Oracle (не только базы данных), так что не может быть то, что вы ищете, но это отправная точка ...

+0

Спасибо за хорошую отправную точку! – Shad

1

Спасибо, @SimonKrenger, это была хорошая отправная точка. Вот что я нашел:

1) Параметр inst_locHKEY_LOCAL_MACHINE/SOFTWARE/ORACLE под ключ содержит путь к инвентарю. И я нашел такой файл XML: inst_loc/ContentsXML/inventory.xml, который, как я понимаю, перечисляет все установленные продукты Oracle. Полезный раздел в этом файле: HOME_LIST. Например:

<HOME_LIST> 
    <HOME NAME="KEY_OraDd11g_home1" LOC="..." /> 
    <HOME NAME="KEY_OraClient11g_home1" LOC="..." /> 
    ... 
</HOME_LIST> 

Каждая запись содержит HOME Oracle домой имя и его местоположение. Итак, вы можете проверить имя дома для содержания определенных подстрок, то есть "Db11g" или "Client10g" (но, может быть, это плохая идея, я не знаю правила для создания этих имен).

2) Ключ HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE должен содержать подразделы, которые имеют имена с рисунком: KEY_{oracle_home_name} (как KEY_OraDd11g_home1). Такие подразделы имеют параметр строки ORACLE_HOME, содержащий путь установки продукта. Таким образом, папка установки может быть проверена на наличие или содержать определенные файлы.

Для моих потребностей я создал WiX Custom Action в C# для выполнения следующих шагов:

  • Проверить HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE существования
  • попытаться найти подразделы по шаблону KEY_*Db10g* (мне нужно 10g версии, чтобы быть установленный)
  • Получить ORACLE_HOME параметр с указанием пути установки из найденного раздела
  • Проверьте путь установки и несколько файлов на наличие

Кроме того, был подобный вопрос здесь: Detecting if an Oracle Database is Installed.

Смежные вопросы