Créer une installation automatique de drivers - Delphi/Pascal - Programmation
Marsh Posté le 23-09-2005 à 09:37:07
C'est surement plus facile de ne pas réinventer la roue et d'utiliser des third-party setup programs". Mais, c'est courageux de vouloir le faire (surtout avec un vieux langage comme Delphi (je plaisante)).
Il faut créer un fichier ".inf" qui contienne tous les paramètres de l'installation.
Le programme d'installation va extraire le(s) fichier(s) nécesaires et le(s) placer dans un répertoire temporaire.
Ensuite, le programme demande à Windows de faire l'installation en se servant du fichier ".inf", par un appel à l'API ShellExecuteEx(), par exemple, en C :
BOOL ExecuteInfAndWait(char *inf) |
Marsh Posté le 23-09-2005 à 11:49:52
Ok,
je vais essayer de faire cela.
Par contre je ne vois pas tellement ce qu'il faut mettre dans le fichire inf. Faire un truc du même genre que les inf des drivers?
Marsh Posté le 24-09-2005 à 17:26:50
olivthill a écrit : vieux langage comme Delphi [...] par exemple, en C |
Marsh Posté le 25-09-2005 à 21:19:25
Salut, j'ai essayé de faire cela, en plus qu'il faut un peu changer le code pour le PascalObjet (Delphi), mais cela ne marche pas; ipossible de compiler.
Quelqu'un peut m'aider à transcrire pour le Delphi?
Merci
Marsh Posté le 25-09-2005 à 21:36:33
T'as mis quoi comme code et t'as quoi comme erreur ?
Marsh Posté le 27-09-2005 à 09:09:32
Salut,
par rapport au code que me propose olivthill, je n'ai pratiquement rien changé; voici le code modifié:
procedure TForm1.Button1Click(Sender: TObject);
begin
BOOL ExecuteInfAndWait(char *inf)
char tinf[MAX_PATH + 2];
SHELLEXECUTEINFO si;
MergePathAndName(tinf, tempFolderName, inf);
tinf[strlen( tinf ) + 1] = 0;
si.cbSize = sizeof(si);
si.fMask = SEE_MASK_NOCLOSEPROCESS;
si.hwnd= 0;
si.lpVerb= 'Install';
si.lpFile = tinf;
si.lpParameters=0;
si.lpDirectory = tempFolderName;
si.nShow =SW_SHOWNORMAL;
if ( ShellExecuteEx( &si ) == 0 )
DWORD r = GetLastError();
char t[ 20 ];
wsprintf( t, "%d", r );
Conf:= MessageDlg(('Execution of inf failed'), mtWarning, mbOKCancel,0);
return FALSE;
end;
WaitForSingleObject( si.hProcess, INFINITE );
return TRUE;
Execute('mon_driver.inf');
end;
Merci de votre aide
Samantha
Marsh Posté le 27-09-2005 à 10:14:16
Si tu colles du C directement c'est normal que ça marche pas hein... les déclaraction de variable c'est dans une section "var" avant le "begin", et c'est "nom: type" au lieu de "type nom". Les assignations c'est ":=" au lieu de "=". Les comparaisons c'est "=" au lieu de "==".
Marsh Posté le 28-09-2005 à 11:10:21
Oups, j'avais pas fait attention que olivthill avait écrit ça en C.
C'est vrai que cela fonctionnera mieux.
C'est reparti pour un test.
A plus
Samantha
Marsh Posté le 23-09-2005 à 08:11:57
Bonjour à toutes et à tous.
J'essaie actuellement de créer un programme qui me permettrait d'installer les pilotes de périphériques quelconques comme les cartes réseau, cartes graphiques, modem... sans que je sois obligée de passer par la fenêtre "Ajout / Suppression de matériel" et de répondre à toutes les questions posées par le processus de recherche de nouveaux périphériques et de mise à jour des pilotes.
En gros faire un soft comme pour l'installation des drivers nvidia, VIA, Intel pour ceux qui connaissent.
Actuellement, j'ai commencé à faire cela en Pascal objet avec Delphi; mais je débute en la matière.
Toutes les réponses sont les bienvenues, même dans un autre langage informatique.
MERCI de vos réponses.
Samantha
---------------
La vie est un long fleuve tranquile qui ne vaut d\\'être vécue que si l\\'on est heureux