我用InstallShield Professional 6.30制作安装程序时,不知道如何安装COM+组件,请帮帮忙!
   我已经导出了COM+的安装包Server.MSI,但是不知道在安装的时候该怎么办。

解决方案 »

  1.   

    我没有用过InstallShied,但我用过Wise Installtion;
    使用Wise Installtion来做安装程序,它可以定义在你安装程序执行某一个程序,MSI文件系统会使用系统的Installer程序来执行它,它会被系统自动执行,只要你设置好了就行了...
      

  2.   


    我的建议是,在Install Shield 的 FileGroups 里面新建一个文件组,
    该文件组的 Self-Registered 设为True,Destination 设为<WINSYSDIR>,
    把你的Com+文件加入到该文件组里面即可。上面操作的意思是,新建一个自注册的文件组,这个文件组里面的文件会自注册到
    系统目录下。建议不要使用 .MSI 的安装结构, 我估计你的想法是在安装软件时,同时也安装你的
    Com+.MSI安装程序。这样做比较麻烦,而且msi的安装程序,某些电脑极有可能需要安装
    Msi的安装补丁。即有的电脑不能执行.Msi安装程序,此时需要安装补丁。建议使用第一种方式。
      

  3.   

    点击 Script Editor,在左边的Actions列表中选择 Execute Program,双击,然后在.EXE Path 选择 System32 ,手动加入MSIEXEC.EXE , Command Line :输入  /I %MAINDIR%\你导出的MSI文件名,操作完成后,你可以在右边脚本信息窗口看到如下语句:Execute %SYS32%\MSIEXEC.EXE /I %MAINDIR%\(你导出的MSI文件名).MSI
      

  4.   

    苹果的解决方法,稍土些哦,呵呵。
    OK!我们来用个笨办法,在InstallShield中,我们可以执行exe程序,我们就自己写一个Exe程序来安装我们的COM+应用程序
    新建一个工程,在窗体上放一个Panel,Caption := ‘正在注册组件服务……’;,把Form的BorderStyle设置成BsNone,然后新建一个Unit2,在里面写一个函数注册我们的COM+应用程序,Unit2代码如下,假设我们注册的COM+应用程序叫test.msi:
    unit Unit2;interfaceprocedure InstallMSI;implementationuses CmAdmCtl,SysUtils,Forms;procedure InstallMSI;
    var
      COMADminCata:TCOMAdminCatalog;
    begin
      COMADminCata := TCOMAdminCatalog.Create(nil);
      COMADminCata.InstallApplication(ExtractFilePath(Application.ExeName)+'test.msi','',2,'','','');
      COMADminCata.Free;
    end;project1的代码如下:
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas';{$R *.res}var
      Form1:TForm1;
    begin
      Application.Initialize;
      Form1 := TForm1.Create(Application);
      Application.Run;
      Form1.Show;
      Form1.Update;
      InstallMSI;
      Form1.Close;
      Application.Terminate;
    end.在installshiled中执行这个程序即可,要不要提示窗体,看你自己的意愿啦,主要代码是unit2中的那个函数。
      

  5.   

    LaunchApp("WordPad.exe",svTargetDir+"\\说明.rtf");
      

  6.   

    把COM+对应的guid及iid等直接写入指定的注册表不就OK了