【发布时间】:2012-05-15 20:05:11
【问题描述】:
我正在为delphi 7 开发一个组件,并且为了快速安装而无需触摸IDE 我正在根据Marjan Venema 的这个 SO 回答制作一个简单的安装程序。
procedure TForm1.Button1Click(Sender: TObject);
var
sDelphi7PackageName : string;
sDelphi7Path,fileSource,fileDest : string;
sDelphi7packBPL,sDelphi7PathMenuBPL : string;
begin
sDelphi7Path:=ReadRegistryValues('\Software\Borland\Delphi\7.0',FALSE,'RootDir',1,TRUE);{<-- returns the 'C:\Program Files\Borland\Delphi7' }
{#1. Install .bpl}
sDelphi7BPL:=sDelphi7Path+'\Projects\Bpl\Pack.bpl';
WriteValueToRegisTry('\Software\Borland\Delphi\7.0\Known Packages',FALSE,sDelphi7BPL,'Delphi 7 compo Bpl File'); {<-- writes to the registry}
fileSource:=ExtractFilePath(Application.ExeName)+'\Packages\comPack.bpl';
fileDest:=sDelphi7BPL;
CopyFile(PChar(fileSource), PChar(fileDest), False);
end;
这很好用
![在此处输入图像描述][2]
C:\Program Files\Borland\Delphi7\Projects\Bpl\Pack.bpl。
但是组件安装了 id hidden
谁能告诉我如何在安装时unhidecomponent?
编辑
可能有用:
1) 我已经有了组件的bpl 文件,所以我直接复制到delphi 7 目录C:\Program Files\Borland\Delphi7\Projects\Bpl 并修改注册表HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Known Packages。
2)组件的register过程
implementation
procedure Register;
begin
RegisterComponents('comp', [Tcomp]);
end;
【问题讨论】:
-
您能否提供您在包裹内的
procedure Register方法中放入的代码? -
@LaKraven:恐怕在这种情况下注册程序不相关。我对这个问题的理解是,OP 正试图通过一些直接的注册表操作来安装组件。
-
@LaKraven
procedure Register已添加 -
@menjaraz:不,注册程序是相关的。 Windows 注册表只是为了让 IDE 知道要加载的 bpl。注册过程是 IDE 在加载 bpl 后执行的操作,以将组件放在调色板的页面上。
-
@PresleyDias 您是否也在接口部分声明了注册过程?并使用正确的大小写?那是大写的R,其余的小写?这是 Delphi(需要)区分大小写的一个地方,
标签: delphi components delphi-7 custom-component