InstallShield高级应用--检查是否安装ORACLE或SQL Server
2016-01-26 09:48
609 查看
InstallShield高级应用--检查是否安装ORACLE或SQL Server
实现原理:判断是否存在,是通过查找注册表是否含有相应标识来判断的。注意:XP与WIN7系统注册表保存方式不一样,32位与64位操作系统注册表保存方式也不一样,需要分别判断。在此只判断32位操作系统的情况。
源码:
////检查是否有安装Oracle
function NUMBER CheckOracleISExist()
STRING svOraclePath,nvValue;
NUMBER nKeyType,nvType, nvSize;
begin
// defaut regedit root
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//oralce regedit path
if(RegDBGetKeyValueEx("SOFTWARE\\ORACLE\\ALL_HOMES","DEFAULT_HOME",nvType,nvValue,nvSize) = 0) then
return 0;
endif;
return -1;
end;
// SQL Server 2000, SQL Server 2005, SQL Server 2008,
// SQL Server 2005 Express,SQL Server 2008 Express
//检查是否有安装SQL Server
function NUMBER CheckSQLServer()
STRING nvValue;
NUMBER nvType, nvSize;
begin
//return -1;
// defaut regedit root
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
// SQL Server 2000
if(RegDBGetKeyValueEx("SOFTWARE\\Microsoft\\Microsoft SQL Server","InstalledInstances",nvType,nvValue,nvSize) = 0) then
return 0;
endif;
//SQL Server 2005 Version
if(RegDBGetKeyValueEx("SOFTWARE\\Microsoft\\Microsoft SQL Server 2005 Redist\\BOL\\2052\\CurrentVersion","Version",nvType,nvValue,nvSize) = 0) then
return 0;
endif;
//SQL Server 2008 Express
//if(RegDBGetKeyValueEx("SOFTWARE\\Microsoft\\Microsoft SQL Server 2008 Redist\\SQLNCLI10\\2052\\CurrentVersion","Version",nvType,nvValue,nvSize) = 0) then
// return 0;
//endif;
// Express
if(RegDBGetKeyValueEx("SOFTWARE\\Microsoft\\Microsoft SQL Server\SQLEXPRESS\setup","SQLPath",nvType,nvValue,nvSize) = 0) then
return 0;
endif;
return -1;
end;
相关文章推荐
- oracle优化思考-双刃剑
- 解决 ORA-28547 连接服务器失败,可能是Oracle Net 管理错误
- Oracle中的EXISTS与IN
- Linux Oracle服务启动&停止脚本与开机自启动
- Oracle 最简单的随系统自己主动启动
- oracle常用语法-约束<三>
- Linux下创建oracle表空间
- Oracle 12c in memory 组件浅谈
- Oracle数据库中建立索引的基本方法讲解
- oracle数据库表分区基本语句
- oracle将普通表变分区表
- oracle学习之数据库数据保存成文件
- PLSQL 连接 oracle 12c
- oracle11g dataguard 环境配置汇总
- oracle11g 安装错误汇总
- Oracle 数据库和数据库实例
- Oracle 数据库和数据库实例
- 《oracle每天一练》Oracle之物化视图
- Oracle备份失败(ANS0350E)
- Oracle 触发器 插入,更新,删除,数据同步,两表同步