Entwickler-Ecke

Dateizugriff - Druckertreiber über INF-Dateien installieren


bis11 - Fr 21.03.03 21:33
Titel: Druckertreiber über INF-Dateien installieren
Hi,

jeder von euch hat sich schon mal einen Druckertreiber installiert. Da sind ja meisten Setup's mit bei oder INF-Dateien. Wenn ich jetzt mit der rechten Maustaste auf die INF-Datei klicken bekomme ich ein Menü, mit der Option Installieren. Wie kann ich jetzt diese Option mit Delphi aufrufen, so dass er mir den Druckertreiber installiert ? Ich habe natürlich die nötigen Rechte etc.


Delete - Sa 22.03.03 10:59

1. Einfach, aber nicht unbedingt richtig: ShellExecute mit dem Verb 'install' und dem Namen der INF-Datei aufrufen.

2. Der richtige Weg: du beschäftigst dich mal mit der Setup-API von Microsoft. Dazu ist ein Blick ins PSDK immer gut, und bei den JEDIs findest du eine Übersetzung der entsprechenden Headerdatei als Delphi-Unit.


toms - Sa 22.03.03 12:17

Musst mal probieren, ob das geht:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
uses 
  ShellAPI; 

function InstallINF(const PathName: string; hParent: HWND): Boolean; 
var 
  instance: HINST; 
begin 
  instance := ShellExecute(hParent, 
    PChar('open'), 
    PChar('rundll32.exe'), 
    PChar('setupapi,InstallHinfSection DefaultInstall 132 ' + PathName), 
    nil, 
    SW_HIDE); 

  Result := instance > 32; 
end; { InstallINF } 

// Aufruf:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  InstallINF('C:\XYZ.inf', 0); 
end;


(Quelle: SDC)


bis11 - Sa 22.03.03 13:39

Hi,

erstmal danke für eure Antworten.

@Toms

Dein Code-Beispiel habe ich ausprobiert, aber leider installiert er mir nicht den Druckertreiber. Gibt es noch einen anderen Weg einen Druckertreiber zu installieren, wenn ich keine Setup - EXE habe.

@MathiasSimmack

Über ShellExecute mit dem Verb 'install' geht es auch nicht. Ich bekomme auch keine Fehlermeldung. Und aus der PSDK werde ich auch nicht richtig schlau.


bis11 - Di 25.03.03 20:26

Ich danke nochmals allen Dir mir eine Antwort gegeben haben, aber ich habe jetzt mein Problem selber gelöst, da nach 3 Tagen nach meinem letzten Posting keine Antwort gekommen ist.


toms - Di 25.03.03 20:49

Zitat:
aber ich habe jetzt mein Problem selber gelöst


Wie denn?


bis11 - Di 25.03.03 20:53

Ich habe einen Novell-Server, mit dem ich eine Softwareverteilung machen kann. Da habe ich für jede Treiberversion ein Packet erstellt. Dieses Packet schreibt mir einen Registry-Key und dieser wird dann abgefragt und es wird damit auch passend reagiert drauf.


bis11 - Do 03.04.03 14:39

Hi,

nun habe ich meine Idee dem Chef gezeigt und er war schon ganz zufrieden. Nur möchte er gerne, dass ich die Druckertreiber über die INF-Dateien installiere. Den Code den mir freundlicher Weise toms gepostet hat funktioniert zwar, damit meine ich, ich kann Ihn compilieren, aber mein Druckertreiber wird nicht installiert. Dann habe ich es schon über verschiedene rundll32 - Befehle probiert, was auch keinen Erfolg gebracht hat. Hat jemand noch eine Idee für mich ?