Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#1

Wie kann ich das Entpacken von .exen automatisieren?

  Alt 13. Dez 2005, 16:59
Ich muss etwas automatisieren.

Konkret geht es hier um Windows-Updates, die in verschiedenen Ausprägungen (div. Windows-Versionen und div. Sprachversionen) von Microsoft heruntergeladen wurden. Alle diese Patches/Updates müssen nun aus ihren heruntergeladenen .exen entpackt werden. Leider verhalten die sich um Teil unterschiedlich.

Ein sehr gutes Beispiel ist z.B. der Patch KB823559, der für Windows9x, NT4, NT4 Terminalserver, XP jeweils in Deutsch und Englisch vorliegt.

Die 9x- und NT-Versionen lassen mit den Parametern /Tvoller Pfad) /C direkt in ein gewünschtes Verzeichnis entpacken und somit per Batch relativ einfach strukturiert ablegen. Mit den Versionen ab 2k/XP/2003 geht das nicht mehr, dort gibt es keine konkrete Möglichkeit den Patch zu entpacken ausser ihn mit dem Parameter /? aufzurufen und das vom Patch erstellte temporäre Verzeichnis wegzukopieren. Da das termporäre Verzeichnis immer anders heisst lässt sich das nicht mit einfachen Windows-Hausmitteln automatisieren da zudem eine Datei gesperrt ist und man nach dem Wegkopieren noch eine Meldung wegklicken muss damit sich das Update wieder aus dem temp. Verzeichnis löscht.

Hier mal die Batch für die Win9x und NT-Versionen:
Code:
@echo off
pushd "C:\"
mkdir tmp
popd
call %1 /T:"C:\tmp\" /C /Q
move %1 "C:\tmp\"
move "C:\tmp" %1
Es dreht sich hier allerdings um mindestens 7000 Dateien (knapp 4GB) - die ich, hoffentlich verständlicherweise, wirklich nicht alle einzeln zum entpacken anpacken will.

Hat jemand eine Idee wie ich all diese Dateien die sich ja wie beschrieben noch unterschiedlich verhalten können alle automatisiert entpackt und strukturiert abgelegt (am besten in einem Unterverzeichnis das so heisst wie die .exe) bekomme (siehe Beispiel-Batch)?

Ich dachte an etwas wie eine Fileüberwachung (Prozess starten, gucken wo der hinschreibt, die Dateien wegkopieren, rausfinden wie das neue Fenster heisst und das automatisch wegklicken), aber habe dafür gerade keinen Ansatz. Wonach muss ich suchen (in der Win32 API oder auch unter .NET, mir egal)? Wenn mir dabei noch weitere Sonderfälle unterkommen sollten die idealerweise auch noch erkannt und zumindest protokolliert werden, damit ich die hinterher nochmal anpacken kann.

Also, ein bisschen Brainstorming ist gefragt, ich brauche mögliche Lösungsansätze
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat