bonsoir,

dans une application fonctionnelle (un setup.exe pour installer une application = noob_coach.exe)),
je tente d'ajouter la création d'un raccourci de l'application

j'ai ajouté ce type de code qui fonctionne en solo

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.Button2Click(Sender: TObject);
Var
   IObject : IUnknown;
   ISLink : IShellLink;
   IPFile : IPersistFile;
   PIDL : PItemIDList;
   InFolder : array[0..MAX_PATH] of Char;
   TargetName : String;
   LinkName : WideString;
 
Begin
 
  TargetName :=DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe';
 
    IObject := CreateComObject(CLSID_ShellLink) ;
    ISLink := IObject as IShellLink;
    IPFile := IObject as IPersistFile;
 
   with ISLink do
    begin
      SetPath(pChar(TargetName)) ;
      SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
    end;
 
    SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ;
    SHGetPathFromIDList(PIDL, InFolder) ;
 
    LinkName := InFolder + '\noob_coach Link.lnk' ;
 
    IPFile.Save(PWChar(LinkName), false) ;
 
end;
en utilisant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
uses
 Windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ShlObj, ActiveX, ComObj, ExtCtrls,  ExtDlgs, Buttons, UnitGlobales;
Donc j'explique ma question:

j'ai donc tenté d'ajouté cette création de raccourci sur le bureau dans mon setup
j'ai ajouté un bouton plus le code ci dessus
j'ai ajouté les "USES" nécessaires au code ajouté que je n'avais pas dans le code du setup
mes "USES" avant l'ajout des nouveaux nécessaires à création raccourci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
StdCtrls, ExtCtrls, Process;
mais j'obtiens un message d'erreur
Error: Wrong number of parameters specified for call to "CopyFile"
j'ai tenté de virer 1 à 1 les "USES" ajoutés pour isoler le fautif mais en vain pas moyen de voir celui qui coince !

j'ai tenté de mettre cette ligne de code entre {CopyFile } pour ne pas l'éxécuter, et là tout est fonctionnel !

j'ai beau regarder les paramètres attendu par la fonction COPYFILE en faisant 'CTRL SHIFT ESPACE' après parenthèse, tout me parait correct


pour info:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
If Not CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') Then
	ShowMessage ('Echec de la copie du fichier !')
	else
	ShowMessage ('Installation du programme réussie'+ Chr(13) + DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe');
j'ai essayé aussi en virant le "if no" et mettre directement le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') ;
ps: le fichier "*.bin" est un "*.exe" que je transforme par copie/renommage pour éviter que les utilisateurs ne le lance direct sans passer par le setup qui met en plce des répertoire et déplace l'application dans le répertoire ad hoc
(je pense que cela ne doit pas être un problème lié à ce message d'erreur)
à terme dans les versions suivantes de mon programme qui est toujours en version béta, je décompresserai sans doute ce fichier (pas encore eu le temps de regarder comment faire, mais ça doit pas être sorcier .... quoique avec le pascal et lazarus ce qui me parait simple ne l'est pas toujours )

pourriez vous m'aider ?

merci de votre attention