Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Wie kann ich das Entpacken von .exen automatisieren? (https://www.delphipraxis.net/58846-wie-kann-ich-das-entpacken-von-exen-automatisieren.html)

Phoenix 13. Dez 2005 15:59


Wie kann ich das Entpacken von .exen automatisieren?
 
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 /T:(voller 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 :)

Christian Seehase 13. Dez 2005 16:04

Re: Wie kann ich das Entpacken von .exen automatisieren?
 
Moin Sebastian,

für das Aufspüren des Verzeichnisses: Hier im Forum suchenReadDirectoryChangesW (Voraussetzung NT-System, sonst Hier im Forum suchenFindFirstChangeNotification)
für das Fenster: Hier im Forum suchenEnumWindows

shmia 13. Dez 2005 16:11

Re: Wie kann ich das Entpacken von .exen automatisieren?
 
Zitat:

Zitat von Phoenix
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.

Du bist mit Sicherheit nicht der 1., der viele Rechner im lokalen Netzwerk updaten möchte.
Jede Idee ist verschwendet, da so nur das Rad nochmals erfunden wird.
Verwalten von Updates in Netzwerken
Zum Aktualisieren von Windows-Betriebssystemen und anderen Microsoft-Produkten innerhalb Ihres Firewalls verwenden Sie die Windows Server Update Services. Mit dieser Lösung, die früher unter dem Namen "Software Update Services (SUS) 2.0" bekannt war, können Administratoren Systeme für die Bereitstellung ansteuern, Benutzerinteraktionen regeln, Updates entfernen, die Häufigkeit und Priorität von Updates planen und weitere Aufgaben durchführen.

http://go.microsoft.com/fwlink/?LinkId=24462

Phoenix 13. Dez 2005 16:18

Re: Wie kann ich das Entpacken von .exen automatisieren?
 
Shmia: Darum geht es (leider) nicht, das wäre viel zu einfach ;-)

Ich brauche tatsächlich jede einzelne Datei der Updates für verschiedene Systeme und Sprachen zu Prüf- bzw. QS-Zwecken, nach dem Entpacken werden etwaige Doubletten entfernt um das Datenaufkommen zu reduzieren und dann müssen über diese Files regelmässig Testläufe gefahren werden. Wenn's doch nur so einfach wäre ;-)

@Chris: Ich schau mir das mal an.. danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz