Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1396 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Créer une installation automatique de drivers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer une installation automatique de drivers

n°1205672
Samantha40​8
Posté le 23-09-2005 à 08:11:57  profilanswer
 

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
mood
Publicité
Posté le 23-09-2005 à 08:11:57  profilanswer
 

n°1205701
olivthill
Posté le 23-09-2005 à 09:37:07  profilanswer
 

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)
{
    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 );
        MessageBox( NULL, "Execution of inf failed.", t, MB_OK );
        return FALSE;
    }
    WaitForSingleObject( si.hProcess, INFINITE );
    return TRUE;
}
...
    ExecuteInfAndWait("mon_driver.inf" );

:)

n°1205806
Samantha40​8
Posté le 23-09-2005 à 11:49:52  profilanswer
 

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?


---------------
La vie est un long fleuve tranquile qui ne vaut d\\'être vécue que si l\\'on est heureux
n°1206556
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-09-2005 à 17:26:50  profilanswer
 

olivthill a écrit :

vieux langage comme Delphi  [...] par exemple, en C


 
[:figti]


Message édité par antp le 24-09-2005 à 17:26:59

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1207204
Samantha40​8
Posté le 25-09-2005 à 21:19:25  profilanswer
 

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

n°1207215
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-09-2005 à 21:36:33  profilanswer
 

T'as mis quoi comme code et t'as quoi comme erreur ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1208326
Samantha40​8
Posté le 27-09-2005 à 09:09:32  profilanswer
 

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


---------------
La vie est un long fleuve tranquile qui ne vaut d\\'être vécue que si l\\'on est heureux
n°1208354
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-09-2005 à 10:14:16  profilanswer
 

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 "==".


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1209602
Samantha40​8
Posté le 28-09-2005 à 11:10:21  profilanswer
 

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


---------------
La vie est un long fleuve tranquile qui ne vaut d\\'être vécue que si l\\'on est heureux

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Créer une installation automatique de drivers

 

Sujets relatifs
comment créer un schema relationnel avec Open OfficeCreer une carte "interactive" en javascript ?
turbo c problèmd d'installationProblème installation JGrasp
Comment créer une architecture propre et fonctionelle...créer un site web
création automatique de pageCréer un objet à partir d'une chaine de caractère
Créer un champ de saisie formulaire dans une page web (newbie) ?Besoin de conseils pour créer une base mysql
Plus de sujets relatifs à : Créer une installation automatique de drivers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR