You are not logged in.

testesser

... und Feinschmecker

  • "testesser" started this thread

Posts: 542

Date of registration: Oct 1st 2008

Thanks: 230 / 25

  • Send private message

1

Friday, March 26th 2010, 5:00pm

[HowTo] Programme ohne Treibernachfrage in Windows7 Silent installieren

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. *DECLARE*
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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:

    Quoted

    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).

  8. 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.

  9. 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:
    1. Installation des Treiber-Zertifikats:

      Quoted

      certutil.exe -f -addstore "TrustedPublisher" VirtualBox-Zertifikat.p7b

    2. Start des Setups mit Silent-Parameter (oder alternativ mit AutoIT)

      Quoted

      VirtualBox-3.1.6-r59338-MultiArch_x86.msi /qb!

    3. Optional: Löschen der importierten Zertifikate

      Quoted

      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:

      Quoted

      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 *V*
Meine Windows-7-Projekte:Man muss Feste feiern ohne Grund *DRINK*, solange bis der Notarzt kummt *LAZY*

testesser

... und Feinschmecker

  • "testesser" started this thread

Posts: 542

Date of registration: Oct 1st 2008

Thanks: 230 / 25

  • Send private message

2

Saturday, March 27th 2010, 1:57pm

***nochmal verschoben*** ;)
Meine Windows-7-Projekte:Man muss Feste feiern ohne Grund *DRINK*, solange bis der Notarzt kummt *LAZY*

faulgott

abUser

Posts: 135

Date of registration: Sep 24th 2008

Thanks: 0 / 1

  • Send private message

3

Friday, April 30th 2010, 2:33pm

Richtig klasse HowTo Testesser, vor allem dank der Bebilderung!

Damit ist mein WPI für Win7 endlich wieder unattended trotz Open- und ShrewVPN, VirtualCloneDrive und VirtualBox, also so wie es doch sein sollte *GOOD2*

PS: die .cat/.p7d Dateien kann ich gern bei Bedarf zur Verfügung stellen, ist ja doch etwas Arbeit dort ran zu kommen
it is a historical fact that the state is the number one cause of unnatural death
in the 20. century alone over 150 million people were murdered at the hands of the state


mein Miranda-Paket (0.8.21): Download (mediafire) <-update auf 0.8.0.21, eingedeutscht