Delphi 7:安装的组件在安装时被隐藏

3

我正在为delphi 7开发一个组件,为了快速安装而不必操作IDE,我正在根据Marjan Venema在Stack Overflow上的答案制作一个简单的安装程序。

    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 有没有人能告诉我如何在安装时unhide组件? 编辑 可能有用: 1)我已经有该组件的文件,因此直接复制到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
1
@LaKraven:恐怕在这种情况下,注册过程并不相关。我理解问题的意思是,OP试图通过某些直接的注册表操作来安装组件。 - menjaraz
@LaKraven 添加了 procedure Register - PresleyDias
1
@menjaraz:不,注册过程是相关的。Windows注册表只是让IDE知道要加载的BPL文件。注册过程是IDE在加载BPL文件后执行的操作,将组件放置在调色板的页面上。 - Marjan Venema
@MarjanVenema:是的,在interface部分中有procedure Register; - PresleyDias
显示剩余6条评论
1个回答

8
在注册表中,在 HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Palette 下,找到名为 'comp.Hidden' 的条目,并编辑它以删除您组件的类名(或完全删除该条目)。

+1,它起作用了..!! 太好了.. 但是你能告诉我为什么它被“隐藏”了吗? - PresleyDias
1
我猜测有人在“调色板属性”对话框中按下了“隐藏”按钮。 - Ondrej Kelle
不是的,我是系统上唯一的用户,而且我真的没有按下“隐藏”按钮。 - PresleyDias
今天我尝试在不同的系统上安装组件,它已经安装了,但是它又被“隐藏”了 :( - PresleyDias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接