方法一,用安装程序打包
二,在程序中判断是否注册,可以用检查注册表的方法,如果没有注册,用下面的方法注册
TRegisterAction = (raRegister, raUnRegister);
function RegisterOleFile(FileName: String;
Action: TRegisterAction): Boolean;
//注册 OLE/COM 的 Dll/Ocx 组件
implementation
function RegisterOleFile(FileName: String;
Action: TRegisterAction): Boolean;
type
TOleRegisterFunction = function(): HResult;
//注册或卸载函数的原型
var
hLibHandle: THandle;
//由LoadLibrary返回的DLL或OCX句柄
hFuncAddr: TFarProc;
//DLL或OCX中的函数句柄,由GetProcAddress返回
RegFunc: TOleRegisterFunction;
//注册或卸载函数指针
begin
Result:=False;
hLibHandle:=LoadLibrary(PChar(FileName));
//打开OLE/DCOM文件,返回的DLL或OCX句柄
try
if (hLibHandle>0) then
//DLL或OCX句柄正确
begin
//返回注册或卸载函数的指针
if Action=raRegister then
//返回注册函数的指针
hFuncAddr:=GetProcAddress(hLibHandle,PChar('DllRegisterServer'))
else
//返回卸载函数的指针
hFuncAddr:=GetProcAddress(hLibHandle,PChar('DllUnregisterServer'));
if (hFuncAddr<>Nil) then
//注册或卸载函数存在
begin
RegFunc:=TOleRegisterFunction(hFuncAddr);
//获取操作函数的指针
if RegFunc()>=0 then
//执行注册或卸载操作,返回值>=0表示执行成功
Result:=True;
end;
end;
finally
FreeLibrary(hLibHandle);
//关闭已打开的OLE/DCOM文件
end;
end;