如何通过WIX代码在机器上检查Oracle数据库的存在?我想要创建条件,它将在安装之前检查它,如果没有安装Oracle数据库,它将停止安装。就像这样:
<Property Id="ORACLE_DB_INSTALLED">
<!-- ? -->
</Property>
<Condition Message="Application requires Oracle database.">
Installed OR ORACLE_DB_INSTALLED
</Condition>我相信通过RegistrySearch或FileSearch元素是可能的(实际上我不知道该搜索什么)。也许,有任何扩展是为了这些目的存在的?
谢谢,如有任何建议请见谅。
发布于 2013-11-19 17:23:16
对于每个Oracle安装,在"Oracle库存“中都有一个条目。默认情况下,Oracle库存位于"C:\Program \Oracle\ inventory“下面。但是,可以更改此位置。
在注册表中,Oracle库存的位置在"HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE“中,您将在其中找到"inst_loc”键。
请注意,此键存在于安装Oracle产品(不仅是数据库)的每台计算机上,因此这可能不是您要寻找的,但它是一个起点。
发布于 2013-11-22 07:16:20
“谢谢,”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) Key HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE应该包含带有模式名称的子项:KEY_{oracle_home_name} (类似于KEY_OraDd11g_home1)。这些子项具有包含产品安装路径的ORACLE_HOME字符串参数。因此,可以检查安装文件夹是否存在或包含一些特定的文件。
为了满足我的需要,我在WiX中创建了C#自定义操作,以执行接下来的步骤:
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE是否存在KEY_*Db10g*查找子项(我需要安装10g版本)ORACLE_HOME参数此外,这里也有类似的问题:Detecting if an Oracle Database is Installed。
https://stackoverflow.com/questions/20077762
复制相似问题