AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Wie kann ich das Entpacken von .exen automatisieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich das Entpacken von .exen automatisieren?

Ein Thema von Phoenix · begonnen am 13. Dez 2005 · letzter Beitrag vom 13. Dez 2005
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

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

Wie kann ich das Entpacken von .exen automatisieren?

  Alt 13. Dez 2005, 15: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
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 13. Dez 2005, 16:04
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

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

  Alt 13. Dez 2005, 16:11
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.618 Beiträge
 
#4

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

  Alt 13. Dez 2005, 16:18
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz