Спасибо, @SimonKrenger, это была хорошая отправная точка. Вот что я нашел:
1) Параметр inst_loc
HKEY_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.
Спасибо за хорошую отправную точку! – Shad