怎样将包含类型库的应用程序直接拷贝到其他计算机上运行? (200分)

Z

zhjie

Unregistered / Unconfirmed
GUEST, unregistred user!
一个应用程序,调试运行通过后,会产生一个.exe文件。
一般情况下,这个exe文件可以拷贝到其他计算机上直接运行。

但是,如果这个应用程序引用了类型库(Project|Import Type Library,create unit产生一个单元),
所产生的.exe文件就不能简单地拷贝到其他计算机上运行。
请问:怎样将包含类型库的应用程序直接拷贝到其他计算机上运行? 谢谢!!!
 
[:(] MOROSE~~~~
 
what means [:(] MOROSE~~~~ ?
I am new.
 
我不会!对不起~~~ :~~~~《
 
谢谢!!
让我们共同研究吧。
 
这样的程序要求安装该exe的机器也安装了这个activx元件
比如你用Import Type Library的方法生成的播放flash的元件,用这个元件做的exe
必须在安装有有flash元件的机器才可以运行
 
先谢谢!!!
等一下我把问题说清楚。
我在“曲线救国”!
 
如你所说的包括类型库的程序应该就是导入了第三方的控件.ocx或动态连接库.dll等
你只要将这些被导入的ocx,或dll打包发布就行了
 
1。你可以定义你的COM服务来让客户提取生成TLB文件
2。另外直接分发TLB文件
 
我应用无盘win2000技术建立了一个小型无盘网。在无盘工作站上,可以顺利启动win2000
和各种应用程序(例如word2000,autocad2000等)。

我在应用程序中引用了一个类型库,
(即,通过Project|Import Type Library,create unit产生一个单元)
得到的程序可以在win2000 Server上运行。

但是,这个应用程序无法在无盘工作站上运行。出现错误提示:ole error 80040717

我在无盘工作站上启动delphi,重新编译这个应用程序,运行到以下语句出现错误:
mmmmmm.register('','kkkkkkk');
我已经72小时研究了,不得要领。
请大虾帮助指点,不胜感激!!
 
感谢这么多高手的帮助!!
 
To luyear:"这样的程序要求安装该exe的机器也安装了这个activx元件"
十分正确。

问题是我已经在win2000server 上安装了这个元件(不然程序不能在win2000server上运行)。
是不是需要注册这个元件的客户端?怎样操作?能否给点提示?
 
To 房客:
“你可以定义你的COM服务来让客户提取生成TLB文件”
怎样定义COM服务?
我估计,程序不能运行的原因是在无盘工作站上找不
到(或者不准许使用)类型库需要的文件。
能否把类型库涉及的所有文件统统编译到一个exe文件中?

 
To CODEHUNTER,
“如你所说的包括类型库的程序应该就是导入了第三方的控件.ocx或动态连接库.dll等
你只要将这些被导入的ocx,或dll打包发布就行了”
谢谢!!
是否把第三方控件的有关文件简单拷贝到其他计算机上就可以了?
是否需要在windows操作系统上注册?怎样注册?
如果不需要注册,我的应用程序这样找到这些控件文件?
谢谢!!

 
国外的代码,试试
uses
ActiveX, SysUtils, COMObj


procedure TfrmLogin.RegTypeLibrary( Const FileName: String )

var
wFileName: WideString

DocName: WideString

TypeLib: ITypeLib

begin

if not( FileExists( FileName ) ) then
Raise Exception.Create( 'Type library not found' )


wFileName := FileName

OleCheck( LoadTypeLib( PWideChar( wFileName ), TypeLib ) )


OleCheck( TypeLib.GetDocumentation( -1, nil, nil, nil, @DocName ) )

DocName := ExtractFilePath( DocName )


OleCheck( RegisterTypeLib( TypeLib, PWideChar( wFileName ), PWideChar( DocName ) ) )

end

 
在你的工作站上regsvr32 你的ocx
一次,就可以了
 
谢谢房客!谢谢Pipi!
To 房客:
小妹才思浅薄,能否给些注释:
1、Raise Exception.Create( 'Type library not found' )

2、OleCheck( LoadTypeLib( PWideChar( wFileName ), TypeLib ) )

3、OleCheck( TypeLib.GetDocumentation( -1, nil, nil, nil, @DocName ) )

4、OleCheck( RegisterTypeLib( TypeLib, PWideChar( wFileName ), PWideChar( DocName ) ) )


To Pipi
“在你的工作站上regsvr32 你的ocx一次,就可以了”

我在程序中用的是.tlb文件。
怎样regsvr32呀?具体怎样操作?是在程序内操作还是在win下操作?
几天的辛劳把我搞的什么都不懂了!谢谢指点!谢谢!!

 
.tlb 的话,可以用
tregsvr.exe -t xxx.tlb
注册,tregsvr是delphi带来的,你可以拷贝这个闻见在你的客户机运行
这个文件在 Delphi5/Bin/ 下
 
zhjie:
论坛[^][^]经常出现装MM打捞同情
http://jp.njuct.edu.cn/crystal/uploadtools/members/DELPHI6DCOM.mht
 
To Zhjie: "出现错误提示:ole error 80040717"
这个错误提示说明无法得到音频数据,请检查系统的设置。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部