使用TCOMAdminCatalog(ICOMAdminCatalog)对象制作COM+的安装程序,在win98上执行不了,报错:“类没有注册”。应该是TCOMAdminCatalog这个类在win98中没有,不知需要那些DLL?

解决方案 »

  1.   

    函数源代码:
    function TForm1.InstallApp: Boolean;
    var
      CataAdmin: TCOMAdminCatalog;
    begin
      Result := False;
      CataAdmin := TCOMAdminCatalog.Create(nil);
      if not FileExists(FClientSrcPath + '\COMPlus\COMClient.MSI') then
      begin
        ShowMessage('the source File is not exist.');
        Exit;
      end;
      CataAdmin.InstallApplication(FClientSrcPath + '\COMPlus\COMClient.MSI', FCOMClientDLLPath, 0, '', '', '');
      Result := True;
    end;
      

  2.   

    关于com+组件的安装问题,希望各位提提建议.
      

  3.   

    win98本身没有com+环境,所以必须先安装op4(option pack),NT安装盘中应该有
      

  4.   

    to 苹果
    你总要在客户端上注册中间层的组件啊.在98客户端上注册的方法有:
    1.从中间层服务器的组件服务中导出客户端代理(Application Proxy),将这个MSI文件安装到98客户端上.
    2.自己写程序在98客户端上注册组件.
    我说的是第二种情况.
    在win98上没有TCOMAdminCatalog这个类,只能采取其它方法了.查了一下过去的帖子,看到有人用Regsvr32来注册,我写程序试了一下,是可行的.但有一个问题:用WinExec调用Regsvr32这个外部程序来注册一个DLL的时候总是会弹出一个注册成功的消息框....100多个组件,100多个消息框...嘿嘿
    请问,怎么不让这个消息框弹出来?
      

  5.   

    呵呵,原来是这个问题啊,我用InstallSheld可以屏蔽,不过是别人做的,我不会:)
    WinExec应该有参数的试试Winexec('路径\regsvr32.exe 文件名',sw_hide);
    不知98下直接运行.msi会怎么样?我怎么觉得用regsvr32注册中间层客户端不顺眼啊:)
      

  6.   

    呵呵,在98下直接运行MSI的缺点:
    1.需要安装MSI安装程序的驱动.
    2.要手工复制Midas.Dll并注册之.因为我用了Midas.
    3.直接运行MSI不能控制DLL的安装路径,只能转到Program Files/COMPlus Applcation/....
    4.综合以上,客户端的安装过于繁琐,让不熟悉电脑的人员去安装容易出错.运行Regsvr32 注册组件是加上参数/s就不会弹出消息框了.
    现在有发现一个问题:在运行Regsvr32 /u 来反注册组件时,进到注册表一看,还在那儿呢...反注册以后组件竟然能照常使用....呵呵,怎么回事啊?
      

  7.   

    原来多个参数要用空格分开....
    Regsvr32 /s /u,还有/s得在前面.