首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wix:检查Oracle数据库

Wix:检查Oracle数据库
EN

Stack Overflow用户
提问于 2013-11-19 17:14:00
回答 2查看 668关注 0票数 0

如何通过WIX代码在机器上检查Oracle数据库的存在?我想要创建条件,它将在安装之前检查它,如果没有安装Oracle数据库,它将停止安装。就像这样:

代码语言:javascript
复制
<Property Id="ORACLE_DB_INSTALLED">
    <!-- ? -->
</Property>
<Condition Message="Application requires Oracle database.">
    Installed OR ORACLE_DB_INSTALLED
</Condition>

我相信通过RegistrySearchFileSearch元素是可能的(实际上我不知道该搜索什么)。也许,有任何扩展是为了这些目的存在的?

谢谢,如有任何建议请见谅。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-19 17:23:16

对于每个Oracle安装,在"Oracle库存“中都有一个条目。默认情况下,Oracle库存位于"C:\Program \Oracle\ inventory“下面。但是,可以更改此位置。

在注册表中,Oracle库存的位置在"HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE“中,您将在其中找到"inst_loc”键。

请注意,此键存在于安装Oracle产品(不仅是数据库)的每台计算机上,因此这可能不是您要寻找的,但它是一个起点。

票数 2
EN

Stack Overflow用户

发布于 2013-11-22 07:16:20

“谢谢,”SimonKrenger说,“这是一个很好的起点。以下是我的发现:

1)参数inst_locHKEY_LOCAL_MACHINE/SOFTWARE/ORACLE键下包含到库存的路径。我找到了这样的XML文件:inst_loc/ContentsXML/inventory.xml,据我所知,它列出了所有已安装的Oracle产品。这个文件中有用的部分是HOME_LIST。例如:

代码语言:javascript
复制
<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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20077762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档