用InstallShield如何安装COM+组件 我用InstallShield Professional 6.30制作安装程序时,不知道如何安装COM+组件,请帮帮忙! 我已经导出了COM+的安装包Server.MSI,但是不知道在安装的时候该怎么办。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我没有用过InstallShied,但我用过Wise Installtion;使用Wise Installtion来做安装程序,它可以定义在你安装程序执行某一个程序,MSI文件系统会使用系统的Installer程序来执行它,它会被系统自动执行,只要你设置好了就行了... 我的建议是,在Install Shield 的 FileGroups 里面新建一个文件组,该文件组的 Self-Registered 设为True,Destination 设为<WINSYSDIR>,把你的Com+文件加入到该文件组里面即可。上面操作的意思是,新建一个自注册的文件组,这个文件组里面的文件会自注册到系统目录下。建议不要使用 .MSI 的安装结构, 我估计你的想法是在安装软件时,同时也安装你的Com+.MSI安装程序。这样做比较麻烦,而且msi的安装程序,某些电脑极有可能需要安装Msi的安装补丁。即有的电脑不能执行.Msi安装程序,此时需要安装补丁。建议使用第一种方式。 点击 Script Editor,在左边的Actions列表中选择 Execute Program,双击,然后在.EXE Path 选择 System32 ,手动加入MSIEXEC.EXE , Command Line :输入 /I %MAINDIR%\你导出的MSI文件名,操作完成后,你可以在右边脚本信息窗口看到如下语句:Execute %SYS32%\MSIEXEC.EXE /I %MAINDIR%\(你导出的MSI文件名).MSI 苹果的解决方法,稍土些哦,呵呵。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中的那个函数。 LaunchApp("WordPad.exe",svTargetDir+"\\说明.rtf"); 把COM+对应的guid及iid等直接写入指定的注册表不就OK了 怎么提取Webbrowser中特定文字的链接,并点击? 湖南长沙_诚聘软件开发人员 请问如何判断一个字符串是否在另一个字符串中被包含 怎样把一个字符串格式为制定长度,不足就补上空格?? 如何在d7里使用DX9? 做好的程序,我在主界面上放上businessskin 控件,为什么菜单相没了啊, file类型怎么不可以作为参数?怎么办? ClientSocket1和 ServerSocket1 不能正常发送和接受信息 单层BOM,如何作MRP运算(不用递归)? 请问 DELPHI 6连接*.DBF(VF 6)文件,用什么方式比较好呢? 散分1 几个菜鸟问题
使用Wise Installtion来做安装程序,它可以定义在你安装程序执行某一个程序,MSI文件系统会使用系统的Installer程序来执行它,它会被系统自动执行,只要你设置好了就行了...
我的建议是,在Install Shield 的 FileGroups 里面新建一个文件组,
该文件组的 Self-Registered 设为True,Destination 设为<WINSYSDIR>,
把你的Com+文件加入到该文件组里面即可。上面操作的意思是,新建一个自注册的文件组,这个文件组里面的文件会自注册到
系统目录下。建议不要使用 .MSI 的安装结构, 我估计你的想法是在安装软件时,同时也安装你的
Com+.MSI安装程序。这样做比较麻烦,而且msi的安装程序,某些电脑极有可能需要安装
Msi的安装补丁。即有的电脑不能执行.Msi安装程序,此时需要安装补丁。建议使用第一种方式。
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中的那个函数。