Mit diesem kleinen HowTo möchte ich euch zeigen, wie ihr eure Programme vollständig silent installieren könnt, ohne dass während der Installation eine Nachfrage auftaucht, ob ihr die dazugehörigen Treiber auch installieren wollt.
Wie so eine Treibernachfrage aussieht, hat jeder von euch sicherlich schon erlebt.
Hinweis: Meine hier dargestellte Methode funktioniert nur mit
digital signierten Treibern.

Mit unsignierten Treibern oder denen die nicht verifiziert werden können funktioniert dies nicht.
Am Beispiel von Virtualbox möchte ich euch nun zeigen, wie ihr diese Abfrage während der Silent-Installation umgehen könnt.
Diese Methode funktioniert so, als würdet ihr wie in Bild1 zu sehen einen Haken bei "Software von xxx immer vertauen" setzen. Damit wird das Treiberzertifikat dauerhaft auf eurem Computer installiert. Bei einer erneuten Installation werdet ihr nicht mehr danach gefragt, ob ihr diesen Treiber auch wirklich installieren möchtet. Optional dazu zeige ich euch noch wie ihr das Treiber-Zertifikat wieder löschen könnt, sodass ihr bei einer erneuten Installation die Nachfrage wieder auftritt, falls ihr der "Software NICHT immer vertrauen" wollt.
Vorbereitungen:
Am besten macht man dies in einer VM. Das klingt zwar jetzt lustig, VirtualBox in einer VM zu installieren, aber es funktioniert, genauso wie mit jedem anderen Programm.
- Sicherungspunkt erstellen (Optional)
VirtualBox hat den großen Vorteil, dass man sich Sicherungspunkte erstellen kann. Möchte man nur ein Programm ausprobieren oder wie wir temporär installieren ist das eine optimale Möglichkeit, ohne das nach Wiederherstellen des Sicherungspunktes irgendwelche Überreste des Programmes vorhanden sind.
- VirtualBox-Setup entpacken
Dieser Schritt ist nur bei VirtualBox notwendig, da jeweils die Setups für x86 und x64 enthalten sind. Damit das SFX/Addon nicht zu groß wird kann man das Setup mit folgendem Befehl entpacken:
|
Source code
|
1
|
VirtualBox-3.1.6-59338-Win.exe -x -path C:\VirtualBoxSetup
|
Damit erhält man eine *.cab und zwei *.msi Dateien in dem Ordner "C:\VirtualBoxSetup" für die jeweilige Windows-Architektur. Die *.msi kann man später entweder mit dem Silent-Schalter "/qb!" aufrufen oder wie bei meinem Addon/SFX der Fall wird das ganze über Autoit realisiert.
- Temp-Ordner löschen
Zunächst solltet ihr euren Temp-Ordner löschen, da ihr später dort einige Dateien suchen müsst. Dazu einfach %Temp% in die Adresszeile des Windows-Explorers eingeben und dort alle Dateien und Ordner löschen.
- Optional: Software immer vertrauen?
Wenn ihr auf dem laufenden System dieser "Software immer vertauen" wollt, kann dieser Schritt übersprungen werden (ebenso Schritt 7). Anderfalls ist dieser Schritt notwendig um die installierten Treiber-Zertifikate wieder zu deinstallieren.
Gebt nun in Start-->Ausführen "certmgr.msc" ein.

Es öffnet sich der Zertifikate-Manager.

Unter "Vertrauenswürdige Herausgeber" wird das Treiber-Zertifikat gespeichert, wenn ihr der "Software immer vertrauen" aktiviert. Hier solltet ihr sicherstellen, dass sich dort keine Einträge befinden, da wir später nur die Einträge wieder löschen wollen, die durch die Installation des Zertifikats installiert wurden. Sollten sich dort bereits Einträge befinden (die ihr behalten möchtet), müsst ihr euch die "Seriennummer" dieser Zertifikate notieren. Öffnet dazu ein CMD-Fenster (standardmäßig wird der Pfad C:\Users\BENUTZERNAME geöffnet) und gebt folgende Befehle ein:
|
Source code
|
1
2
|
CD Desktop
certutil.exe -store "TrustedPublisher">Zertifikate-vorhanden.txt
|
Damit werden in der "Zertifikate-vorhanden.txt" auf dem Desktop die Seriennummer der bereits installierten Zertifikate gespeichert, die ihr behalten möchtet. In Schritt 8 müsst ihr dann die Seriennummer aus "Zertifikate-vorhanden.txt" und "Zertifikate.txt" vergleichen, damit nur die neu hinzugefügten Zertifikate wieder gelöscht werden.
- Installation starten
Habt ihr die Vorbereitungen abgeschlossen, könnt ihr die Installation starten. Ihr klickt euch ganz normal durch den Setup-Prozess und installiert das gewünschte Programm. Im Fall von VirtualBox werden ihr dann gefragt, ob ihr die notwendigen Treiber installieren möchtet.

Nun navigiert ihr in den zuvor bereinigten %Temp%-Ordner. Dort findet ihr in einem Unterordner eine Datei Names "xxx.cat". Eventuell müsst ihr euch den Zugriff auf diesen Ordner verschaffen.

Die darin enthaltene "VBoxUSB.cat" sichert ihr euch (z.B. auf den Desktop).
Nun kann die Installation des Treibers abgebrochen werden, indem ihr auf "Nicht Installieren" klickt. Im Fall von VB wird damit die gesamte Installation abgebrochen. Bei "Virtual CloneDrive" z.B. wird die Installation trotzdem weitergeführt, obwohl der Treiber nicht installiert wurde. Hier müsst ihr dann das Programm deinstallieren oder den letzten Sicherungspunkt der VM laden.
- Treiber-Zertifikat exportieren
Nun exportieren wir das Treiber-Zertifikat der zuvor gesicherten "VBoxUSB.cat", welches wir dann vor der Silent-Installation importieren werden.
Rechtsklick auf "VBoxUSB.cat"-->Eigenschaften-->Tab "Digitale Signaturen"-->Details

Dann auf "Zertifikat anzeigen"--> Tab "Details"--> "In Datei kopieren"
Es öffnet sich der "Zertifikateexport-Assistent". Nach dem Klick auf "Weiter" müsst ihr wie im folgenden Bild das Format festlegen.

Im nächsten Dialog legt ihr den Dateinamen und Speicherort des Zertifikats fest. Am besten speichert man es dort, wo auch die Setup-Datei liegt. Zum Abschluss solltet ihr eine Erfolgsmeldung über den Exportvorgang erhalten. Nun können alle Eigenschaftsfenster geschlossen werden. Die Datei "VBoxUSB.cat" wird nicht mehr benötigt und kann somit gelöscht werden.
- Optional: Zertifikat temporär Installieren
Dieser Schritt ist nur notwendig, wenn ihr Schritt 4 auch durchgeführt habt und der "Software NICHT immer vertrauen" wollt. D.h. das importierte Zertifikat wird nach der Installation der Software wieder gelöscht.
Nun müssen wir das Zertifikat temporär installieren, damit wir wissen, welche Zertifikate später gelöscht werden müssen, damit der "Software nicht immer vertaut" wird.
Öffnet ein CMD-Fenster mit Administrativen Rechten. Navigiert zum Speicherort des Zertifikats:
- Wechsel in das übergeordnete Verzeichis:
|
Source code
|
1
|
CD..
|
- Wechsel in das Unterverzeichnis:
|
Source code
|
1
|
CD "Ordnername"
|
Gebt nun folgenden Befehl ein um das Zertifikat zu Installieren:
|
Source code
|
1
|
certutil.exe -f -addstore "TrustedPublisher" VirtualBox-Zertifikat.p7b
|
In der letzen Zeile sollte eine Erfolgsmeldung stehen:
CertUtil: -addstore-Befehl wurde erfolgreich ausgeführt.
Nach dem Aufruf von "certmgr.msc" über Start-->Ausführen seht ihr die importierten Zertifikate unter "Vertrauenswürdige Herausgeber".

Um diese nach der Silent-Installation wieder zu löschen, müssen wir die "Seriennummer" des Zertifikats herausbekommen. Gebt im CMD-Fenster folgenden Befehl ein:
|
Source code
|
1
|
certutil.exe -store "TrustedPublisher">Zertifikat.txt
|
Damit wird die Auflistung der installierten Zertifikate in die Datei "Zertifikat.txt" im aktuellen Ordner gespeichert. In dieser Datei finden wir nun 3 Zertifikate mit jeweils einer Seriennummer. Diese 3 Seriennummern brauchen wir damit wir die Zertifikate wieder löschen können. Später dazu mehr (Schritt 9).
- Abschliessen der Vorbereitungen
Habt ihr nun alle Schritte durchgeführt, müssen wir unsere getätigten Änderungen noch sichern bzw. rückgängig machen.
Am einfachsten ist dies, indem ihr den letzten Sicherungspunkt der VM wiederherstellt.
Wichtig: Bevor ihr das tut, müsst ihr euch die in der VM erstellten Dateien (VirtualBox-Zertifikat.p7b, Zertifikate.txt) in das reale System kopieren (z.B. über Netzwerk, Freigegebene Ordner, USB, o.ä.), da diese zum Zeitpunkt der Erstellung des Sicherungspunktes noch nicht existieren.
Es geht auch indem ihr die Software deinstalliert und die importierten Zertifikate wieder löscht. Öffnet dazu wieder "certmgr.msc" und löscht die 3 Zertifikate unter "Vertrauenswürdige Hersteller". Nach einem Neustart oder Herstellen des Sicherungspunktes könnt ihr nun die Installation testen.
- Installations-Sequenz
Habt ihr die Software deinstalliert und bereinigt bzw. den Sicherungspunkt geladen, können wir die Installation zusammenbauen. Wie ihr das macht ist ganz euch überlassen. Ich werde es hier anhand der "_VirtualBox-Install.cmd" erklären. Dazu solltet ihr das Setup, das exportierte Zertifikat (VirtualBox-Zertifikat.p7b) und die CMD im selben Ordner haben. Gegebenfalls noch die "Zertifikate.txt", wenn ihr diese wieder löschen wollt.
Je nachdem sind 2 oder 3 Befehle in der CMD nötig um die Installation silent durchzuführen:
- Installation des Treiber-Zertifikats:
certutil.exe -f -addstore "TrustedPublisher" VirtualBox-Zertifikat.p7b
- Start des Setups mit Silent-Parameter (oder alternativ mit AutoIT)
VirtualBox-3.1.6-r59338-MultiArch_x86.msi /qb!
- Optional: Löschen der importierten Zertifikate
certutil.exe -delstore TrustedPublisher SERIENNUMMER
Wie schon geschrieben erhaltet ihr die Seriennummern der Zertifikate wie in Schritt 7 beschrieben. Diese stehen in der erzeugten "Zertifikate.txt". Hattet ihr, wie in Schritt 4 beschrieben, schon vorher Zertifikate installiert, müsst ihr nun die "Zertifikate-vorhanden.txt" mit der "Zertifikate.txt" vergleichen, damit nur die Zertifikate gelöscht werden, welche neu hinzugekommen sind. Die Befehle zum Löschen der VirtualBox-Zertifikate sind folgende:
certutil.exe -delstore TrustedPublisher 4191a15a3978dfcf496566381d4c75c2
certutil.exe -delstore TrustedPublisher 693a64818c1e086b1b15aee63fa054a2
certutil.exe -delstore TrustedPublisher 70bae41d10d92934b638ca7b03ccbabf
Meine "_VirtualBox-Install.cmd" enthält noch einiges mehr an Befehlen, da ich überprüfe ob der Import der Zertifikate erfolgreich war. Ebenfalls wird alles nach "%Temp%\VirtualBox-Install.txt" protokolliert.
|
VB.Net/VB6 source code
|
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
@echo off
Title Virtualbox Installation v3.1.6
REM wechsle ins aktuelle Verzeichnis
CD /D %~dp0
Echo.
Echo Installiere Treiber-Zertifikat
certutil.exe -f -addstore "TrustedPublisher" VirtualBox-Zertifikat.p7b >%temp%\VirtualBox-Install.txt
Echo.
Echo Fehler: %errorlevel%
Echo.
if %errorlevel%==0 (
goto install
) else (
Title !!! Fehler !!!
Echo Schreibe Log nach %temp%\VirtualBox-Install.txt
Echo.
Echo Fehler: %errorlevel% >>%temp%\VirtualBox-Install.txt
Echo Installation wird abgebrochen ...
REM 10 Sekunden Pause
ECHO wscript.sleep 10000 >%temp%\sleep.vbs
wscript.exe %temp%\sleep.vbs
DEL "%temp%\sleep.vbs" /f /q >nul
exit
)
:install
Echo Installiere VirtualBox
Echo Bitte Warten ...
Virtualbox-3.1.6-AutoITScript-x86.exe
Echo.
Echo Done.
Echo.
Echo Deinstalliere Treiber-Zertifikate
Echo Deinstalliere Treiber-Zertifikate >>%temp%\VirtualBox-Install.txt
certutil.exe -delstore TrustedPublisher 70bae41d10d92934b638ca7b03ccbabf >>%temp%\VirtualBox-Install.txt
certutil.exe -delstore TrustedPublisher 693a64818c1e086b1b15aee63fa054a2 >>%temp%\VirtualBox-Install.txt
certutil.exe -delstore TrustedPublisher 4191a15a3978dfcf496566381d4c75c2 >>%temp%\VirtualBox-Install.txt
Echo Fehler: %errorlevel%
Echo.
REM 5 Sekunden Pause
ECHO wscript.sleep 5000 >%temp%\sleep.vbs
wscript.exe %temp%\sleep.vbs
DEL "%temp%\sleep.vbs" /f /q >nul
exit
|
Im Fall eines Fehler wird die Installation von VB übersprungen, damit der Rest der Addons weiter silent installiert wird.
Habt ihr euch eure CMD erstellt, könnt ihr euch ein SFX erstellen. Die notwendigen Dateien sind:
- die CMD: _VirtualBox-Install.cmd
- das Setup: VirtualBox-3.1.6-r59338-MultiArch_x86.msi + common.cab sowie die compilierte Autoit.exe (falls ihr VB damit installiert)
- das Zertifikat: VirtualBox-Zertifikat.p7b
Als Startdatei im Winrar-SFX wird die CMD angegeben, welche die Installation durchführt.
Wichtig: Damit der Import des Treiber-Zertifikats gelingt (und somit die silent Installation) muss die CMD mit Administrativen Rechten gestartet werden. Bei Winrar habt ihr die Möglichkeit dies unter "SFX-Optionen"-->"Erweitert"-->"Administratorzugriff erfragen" einzustellen.
Das ganze könnt ihr dann noch als Addon packen und so in eure DVD integrieren.
Viel Spaß und Erfolg beim Ausprobieren wünscht
testesser