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
en utilisant
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;
Donc j'explique ma question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2uses Windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ShlObj, ActiveX, ComObj, ExtCtrls, ExtDlgs, Buttons, UnitGlobales;
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.
mais j'obtiens un message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn, StdCtrls, ExtCtrls, Process;
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 !Error: Wrong number of parameters specified for call to "CopyFile"
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:
j'ai essayé aussi en virant le "if no" et mettre directement le code
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');
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') ;
(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
Partager