Seite 1 von 1

[ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 15 Jan 2010, 14:20
von mr.quickly
Hallo zusammen,

wir haben soeben eine Geräteabhängige Treiberinstallation realisiert. Dies könnte einigen von euch, sowie den Opsi-Support interessieren.

Es geht darum, dass einige Treiber per Setup installiert werden müssen, um alle Geräte Funktionen zu aktivieren (z.B. Fingerprint, Bluetooth, UMTS, usw.).
Wir haben dazu ein Visual Basic Script (.vbs) erstellt, welches das Computermodell abprüft und dann entsprechende Treiber mit dem lokalen Admin nachinstalliert.

Hier das Script (einfach z.B. als "install_device_drivers.vbs" speichern):

Code: Alles auswählen

'Getinfo.vbs - used to get information on your computer
'

Dim strComputer, objWMIService, colSettings, intProc, strUser, strPassword, strDriveLetter, strHomeServer, strProfile

strDriveLetter = "Z:"
strHomeServer = "\\opsi\opt_pcbin\install"
strProfile = "False"   ' Mapping (not) stored in user Profile
strUser = "pcpatch"
strPassword = "<DEIN PASSWORT>"

strComputer = "."

' Attach to WMI

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("Wscript.Network")
Set ObjFSO = CreateObject("Scripting.FileSystemObject")

Set colSettings = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings 

	'Check and disconnect if the drive is already mapped.
	if(ObjFSO.DriveExists(strDriveLetter)) then
	objNetwork.RemoveNetworkDrive strDriveLetter, True, True
	end if

	'Map opsi drive.
	objNetwork.MapNetworkDrive strDriveLetter, strHomeServer, strProfile, strUser, strPassword
    
	'Check computer model.
		If objComputer.Model = "CELSIUS H270" Then
		
				Wscript.Echo "Gerätetyp ""Fujitsu Celsius H270"" erkannt." & VBCRLF & VBCRLF & "Installiere zusätzliche Gerätetreiber ..." & VBCRLF & VBCRLF & VBCRLF
				WScript.Sleep 2000
			
				Wscript.Echo "Installiere AuthenTec Fingerabdruck Scanner ..." & VBCRLF & VBCRLF
				WshShell.Run("Z:\additional_device_drivers\H270\AuthenTec_Fingerprint_Reader\x32\AT8MinFujitsu.msi " & "/qb! /norestart"), 0, true
				Wscript.Echo "Installiere GlobeTrotter Connect ..." & VBCRLF & VBCRLF
				WshShell.Run("Z:\additional_device_drivers\H270\Globetrotter_Connect_3\x32\GlobeTrotterConnect.msi " & "/qb! /norestart"), 0, true
				Wscript.Echo "Installiere STM Micro Accelerometer ..." & VBCRLF & VBCRLF
				WshShell.Run("cmd /c start """" /wait ""Z:\additional_device_drivers\H270\STM_Micro_Accelerometer\setup.exe"" " & "-s"), 0, true
				Wscript.Echo "Installiere Synaptics Touchpad ..." & VBCRLF & VBCRLF
				WshShell.Run("cmd /c start """" /wait ""Z:\additional_device_drivers\H270\Synaptics_Pointing_Device\setup.exe"" " & "/s"), 0, true
				Wscript.Echo "Installiere Toshiba Bluetooth Stack ..." & VBCRLF & VBCRLF
				WshShell.Run("cmd /c start """" /wait ""Z:\additional_device_drivers\H270\Toshiba_Bluetooth_Stack\setup.exe"" " & "/S /V""/qb! /norestart"""), 0, true
		
		Elseif objComputer.Model = "LIFEBOOK E8110" Then
		
				Wscript.Echo "Gerätetyp ""Fujitsu-Siemens Lifebook"" erkannt." & VBCRLF & VBCRLF &  "Installiere zusätzliche Gerätetreiber ..." & VBCRLF & VBCRLF & VBCRLF
				WScript.Sleep 2000
				
		Else
		
				Wscript.Echo "Gerätetyp nicht erkannt, es handelt sich um ein: " & objComputer.Model & VBCRLF & VBCRLF & "Bitte Admin Bescheid geben. Danke"
				WScript.Sleep 10000
		
		End If
		
	'Disconnect opsi drive.
	objNetwork.RemoveNetworkDrive strDriveLetter, True, True

Next
Ihr müsst die Dateipfade und ggf. das Netzwerklaufwerk noch an eure Gegebenheiten anpassen. Auch die Treiber Installation gilt es noch entsprechend zu ändern bzw. auf eure Geräte anzupassen.
Habe das aber extra zur Illustration und zum Verständnis drin gelassen.

Bei uns läuft nach der eigentlichen Windows 7 Installation ein Script "firstrun.cmd" ab, welches wir über den Registry Key RunOnce im Default User eingetragen haben.

Code: Alles auswählen

Windows Registry Editor Version 5.00

[HKEY_USERS\Default\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"firstrun"="cmd /c \"%systemroot%\\system32\\firstrun.cmd\""
Damit sich der lokale Admin direkt nach der Grundinstallation automatisch anmeldet, müssen diese Schlüssel in der Registry eingetragen werden:

Code: Alles auswählen

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" /d "1" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /d "Administrator" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultPassword" /d "<DEIN PASSWORT>" /f
Das kann man am Ende des "firstrun.cmd" Scripts einfach wieder deaktivieren mit:

Code: Alles auswählen

echo Deaktiviere Auto Admin Login ...
echo.
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" /f >nul
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultUserName" /f >nul
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "DefaultPassword" /f >nul
Für Fragen stehe ich gerne zur Verfügung.

@Opsi-Support

Bitte drüber Nachdenken das zum implementieren. Danke.

Re: [ADD-ON-WIN-7] Geräteabhängige Treiberinstallation

Verfasst: 15 Jan 2010, 14:33
von minidump
Genial !!!!!

Das Problem hab ich auch schon eine Weile im Hinterkopf und wollte mir dafür irgendwann was einfallen lassen, bisher fehlte mir die Zeit.

Danke dass du das zur Verfügung stellst.

Grüße

Re: [ADD-ON-WIN-7] Geräteabhängige Treiberinstallation

Verfasst: 15 Jan 2010, 14:35
von mr.quickly
Bitte, bitte.

Es handelt sich ja um ein Open Source Produkt, welches ja vom gemeinsamen Wissensaustausch lebt :-)

Ich habe hier ja auch oft Hilfe bekommen, also freue ich mich jedes Mal, wenn ich mal was zurück geben kann.

Übrigens funktioniert das .vbs Script nicht während der Windows 7 Installation nicht. Zu diesem Zeitpunkt scheint da noch kein Wert drin zu stehen unter Model, daher der Weg über den lokalen Admin.

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 10 Feb 2010, 07:49
von mr.quickly
@Opsi Support

Bitte Info seitens des Opsi Supports ob diese Funktionalität in Zukunft eingebunden wird.

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 10 Feb 2010, 08:19
von d.oertel
Hi mr quickly,

erstmal danke für die Mühe und die Veröffentlichung.

Als erstes stellt sich mir die Frage wo man sowas am geschicktesten einbindet.
Die RunOnce/firstrun.cmd Lösung gefällt mir nicht so sehr.
Opsi-typische Einstiegpunkte wären
- als opsi-Produkt
oder
- in den custom/postinst.d Bereich.
Die Lösung als opsi-Produkt halte ich für flexibler und gibt auch keine Probleme mit dem sharehandling.
Wichtig wäre es zu wissen, wenn es die Erfahrung gibt das viele dieser Treiber sich nicht ohne lokalen Admin installieren lassen.

Auf Basis dessen könnten wir dann ein Scripttemplate zur Verfügung stellen das so vorgeht wie das vbs-Script.

gruss
d.oertel

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 10 Feb 2010, 11:24
von mr.quickly
Ich hatte anfangs auch versucht viele über die den custom/postinst.d Bereich zu lösen. Aber während der Windows 7 Grundinstallation kann man bestimmt Sachen einfach nicht mehr abfragen oder laufen lassen wie unter XP, daher habe ich es mittels des firstrun Registry Schlüssels gelöst.

Man könnte es aber auch mittels eines Paketes lösen, wobei man aber wie schon erwähnt ggf. das Problem mit dem Adminrechten hat.

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 10 Feb 2010, 20:54
von d.oertel
Hi,
Aber während der Windows 7 Grundinstallation kann man bestimmt Sachen einfach nicht mehr abfragen oder laufen lassen wie unter XP
Verstehe leider nicht was Du meinst.
ggf. das Problem mit dem Adminrechten hat
Ich vermute Du meinst den engeloggten User - weil die Adminrechte sind ja da !

Gibt es da definitiv Erfahrungen ?

d.oertel

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 12 Feb 2010, 14:05
von mr.quickly
Beim Windows welches zur Installation geladen wird handelt es sich ja um eine abgespeckte Version, daher laufen z.B. einige WMI Abfragen da noch nicht. Auch kann man bestimmte Programme nicht benutzen oder Registry Keys setzen/bearbeiten.

Mit dem eingeloggten Benutzer kann schon sein.

Re: [ADD-ON-WIN-XP/7] Geräteabhängige Treiberinstallation

Verfasst: 14 Feb 2010, 15:39
von d.oertel
Hi,
mr.quickly hat geschrieben:Beim Windows welches zur Installation geladen wird handelt es sich ja um eine abgespeckte Version, daher laufen z.B. einige WMI Abfragen da noch nicht. Auch kann man bestimmte Programme nicht benutzen oder Registry Keys setzen/bearbeiten.

Mit dem eingeloggten Benutzer kann schon sein.
mein Vorschlag ist es ja auch hieraus ein opsi-Produkt zu machen, welches dann auf dem fertigen Windows läuft........

gruss
d.oertel