Bonjour,
Je cherche comment protéger le code d'un composant dans l'IDE en ne fournissant pas son source à l'installation.
Pour test, j'ai pris un petit composant visuel que j'ai réalisé avec l'aide de ce forum.
Extrait du lzbuttons.lpk :
Hormis ce fichier (le .lpk), j'ai laissé dans le répertoire de ce composant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <Files Count="2"> <Item1> <Filename Value="lzbitbtn.pas"/> <HasRegisterProc Value="True"/> <UnitName Value="lzBitBtn"/> </Item1> <Item2> <Filename Value="lzspeedbutton.pas"/> <HasRegisterProc Value="True"/> <UnitName Value="lzSpeedButton"/> </Item2> </Files>
- lzbuttons.pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 { This file was automatically created by Lazarus. Do not edit! This source is only used to compile and install the package. } unit lzButtons; interface uses lzBitBtn, lzSpeedButton, LazarusPackageIntf; implementation procedure Register; begin RegisterUnit('lzBitBtn', @lzBitBtn.Register); RegisterUnit('lzSpeedButton', @lzSpeedButton.Register); end; initialization RegisterPackage('lzButtons', @Register); end.Du répertoire initial, j'ai supprimé les fichiers lzButtons.pas; lzspeedbutton.pas; lzspeedbutton_icon.lrs et lzbitbtn_icon.lrs.
- le répertoire /lib
L'installation du composant dans l'IDE se passe (semble se passer) correctement. Mais une fois dans une Form, si
- j'y dépose un lzButton (ras)
- puis double-clique sur ce dernier, l'IDE déclare à ce moment une erreur
La ligne 20 correspond au "end;" deunit1.pas(20,3) Error: source de l'unité G:\lazarus\0.9.31-28842-fpc-2.4.3-20101231\components\lzButtons\lib\i386-win32\lzbitbtn.ppu non trouvé.Or le fichier lzbitbtn.ppu existe bien dans le répertoire en question. Pour l'instant, je teste sous Win XP. Les versions de Lazarus et fpc sont contenues dans le nom du répertoire du message d'erreur ci-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TForm1 = class(TForm) lzBitBtn1: TlzBitBtn; private { private declarations } public { public declarations } end;
Merci d'avance.
Cordialement. Gilles
Partager