织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 杂项技术 > 安装制作 >

installshield8 如何判断数据库服务是否安装,具体某个数据库是

罗索客 发布于 2004-04-01 19:18 点击:次 
我现在的做法是读注册表 HKEY_LOCAL_MACHINE\\SOFTWARE\\\\Microsoft\\MSSQLServer\\MSSQLServer,Defaultdomain,一般情况下就是本机名,但在域环境下,有时会不一致。 这倒在其次,我最想知道的是如何判断某个具体指定的数据库是否已安装,帮助里有MSIHANDLE MsiGetActi
TAG:

我现在的做法是读注册表 HKEY_LOCAL_MACHINE\\SOFTWARE\\\\Microsoft\\MSSQLServer\\MSSQLServer","Defaultdomain",一般情况下就是本机名,但在域环境下,有时会不一致。
这倒在其次,我最想知道的是如何判断某个具体指定的数据库是否已安装,帮助里有MSIHANDLE MsiGetActiveDatabase(  MSIHANDLE hInstall);等例子,但一直不知道怎么得到这个hInstall。请高手指点。另外,哪儿有installshield developer8的书籍,到海淀图书城也没找到。我手头原有本2000的,差别较大,现在这本也不见了,真是两眼一摸黑。

  有很多东西不能等着别人一个case一个case的写在书上等你去看。平时多关注各个方面的知识,拓展知识面,解决问题需要综合技能和综合知识的。
如果仅仅是判断一下数据库是否有效等,ADODB等连接一下就知道了——做一个错误陷阱,如果出现错误,根据错误结果判断一下,究竟是用户验证错误还是该服务器不存在。如果想知道SQLServer里都有哪些库,通过SQLServer的存储过程,或者对系统表查询就知道了。如果还想知道更多,SQLServer提供了DMO数据库管理对象,可以做出像企业管理器那样的功能。

那么,现在问题就变成为:InstallShield 的脚本里如何调用组件?

    g_szDBServer = "jacky";
    g_szDBUser = "sa";
    g_szDBPwd = "jackie";
    nResult = TestConnection();
    if(nResult>=0) then
        MessageBox("",INFORMATION);
    else  
        if AskYesNo ( g_szDBServer + " does not exist. Enter another path?", YES )=YES then
        endif;
    endif;


function TestConnection()
    OBJECT oConn;
    STRING szConn;
    NUMBER nResult;
begin                                          
    szConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID="+ g_szDBUser +";Initial Catalog=UARG2;Data Source="+ g_szDBServer +";Password="+g_szDBPwd;
    set oConn= CreateObject("ADODB.Connection");
    // use the object              
    try
        nResult = oConn.Open(szConn);
    catch
        /* Exception handler. */
        nResult = Err.Number;
        /* Handle the exception based on its cause. */
        /*
        switch (nResult)
            case ERR_NOT_EXIST:
                if AskYesNo ( g_szDBServer +
                    " does not exist. Enter another path?", YES )=YES then
                endif;
            case ERR_NO_INFO:
                MessageBox ( "Could not get size of " +
                    g_szDBServer, INFORMATION );
        endswitch;
        */
    endcatch;
    // free the object
    set oConn = NOTHING;
    return nResult;
end;   (UniSVR)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/200404/2416.html]
本文出处: 作者:UniSVR
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容