AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Security Rollup Maker für 2000/XP
Thema durchsuchen
Ansicht
Themen-Optionen

Security Rollup Maker für 2000/XP

Ein Thema von MathiasSimmack · begonnen am 21. Jan 2005 · letzter Beitrag vom 8. Feb 2005
Antwort Antwort
MathiasSimmack
Ich habe ja gestern in der Shoutbox nach mutigen Leuten zum Testen meines Tools gesucht. Hier ist es nun. Ich hänge es mal zu Test- und Lehrzwecken an , aber ich übernehme keine Verantwortung. Die Idee:

Ich habe neulich einen Windows 2000-Rechner überprüft und ca. 15 Hotfixes (Sicherheitspatches) runterladen müssen. Nichts gegen Windows Update, aber doch mal eine Neuinstallation gemacht werden muss, dann habe ich die Patches schon und muss sie nicht noch mal herunterladen. Egal.
Ihr wisst ja nun selbst, dass nach manchen Hotfixes ein Neustart fällig wird. Und bei 15 zu installierenden Paketen war meine Neustart-Rate doch recht hoch.

Aus dem Grund habe ich mal bei Microsoft nach Infos gesucht und bin auch tatsächlich fündig geworden. Das Ergebnis meiner Arbeit waren zwei Tools:
  • Der Assistent (rollup.exe) dient zur Auswahl der Hotfixes. Zuerst wird aber ein leeres Verzeichnis benötigt (kann man im Assistenten erstellen), in das dann später die Hotfixes kopiert werden sollen. Im gleichen Ordner wird auch das Setup und seine Steuerdatei (s. Punkt 2) erstellt. Der Assistent fragt vorher nach, ob er das gewählte Verzeichnis leeren kann. Ich habe dafür gesorgt, dass man keine Root-Ordner (C:\, D:\, usw.) wählen kann. Aber ihr solltet trotzdem aufpassen, dass ihr nicht ein Verzeichnis mit wichtigen Dateien auswählt und dann bei der Frage nach Leeren Ja sagt.
    Außerdem kann der Assistent eine "autorun.inf" erzeugen (falls ihr die Fixes+Setup auf CD brennen wollt), und er kann eine Steuerdatei für IExpress anlegen (falls ihr die Fixes+Setup in ein SFX-Archiv packen wollt). Im letzteren Fall fragt das Programm nach dem Titel für das Paket und bietet als Standardordner für die SFX-Exe den Ordner mit den kopierten Hotfixes an.
  • Wäre da noch das eigentliche Setup (hfsetup.exe), das vom Assistenten in den o.g. Ordner kopiert wird. Die XML-Steuerdatei wird ebenfalls vom Assistenten erzeugt. Sie enthält alle zu installierenden Hotfixes, die vom Setup der Reihe nach gestartet werden. Neustarts werden nicht ausgeführt. Am Schluss wird ein Tool von Microsoft gestartet (dazu gleich), und erst dann kommt der fällige Neustart des Rechners. Der Vorteil ist eben der, dass man mehrere Patches einspielen kann und trotzdem nur einen einzigen Neustart braucht.
    Im Temp-Ordner des Users findet man danach übrigens auch eine Log-Datei im Format "qchain.YYYY-MM-DD-hhmmss.log".

Jetzt die Pferdefüße
  • Microsoft XML 3 ist erforderlich. Ich habe extra die 3er-Version genommen, weil ich davon ausgehe, dass die unter Windows 2000 vorhanden ist. Gebraucht wird XML vom Assistenten zum Erzeugen der Setup-Steuerdatei und natürlich dann vom Setup selbst.
  • Abhängigkeiten sollte es keine geben, denn abgesehen von XML sind beide Tools (Assistent+Setup) nonVCL.
  • Das angesprochene Hilfsprogramm von Microsoft, qchain.exe, müsstet ihr euch bitte selbst herunterladen. Es ist zwar kostenlos bei Microsoft zu bekommen, aber trotzdem möchte und kann ich es nicht einfach ohne Rücksprache mitliefern. Das müsst ihr bitte verstehen. Sorry. Das Tool hat die Aufgabe, evtl. doppelt vorhandene Verweise zu überprüfen und ggf. zu korrigieren. Ich versuche es mal möglichst einfach an einem praktischen Beispiel zu erklären:

    Sagen wir, Datei XYZ ist im System als Version 1.0 vorhanden. Es gab im Sommer einen Patch auf Version 2.0, und im Winter einen auf Version 3.0. Nun hat man das aber nicht nummeriert, und anhand der Knowledge Base-Nummer erkennt man auch nicht unbedingt sofort, von wann der Patch ist. Es besteht also die Möglichkeit, dass man versehentlich zuerst den aktuellen Winter-Patch installiert. Der findet die Version 1.0, markiert sie zum Löschen und trägt seine 3er-Version als Ersatz ein und will einen Neustart.
    Den machen wir aber nicht, sondern wir starten stattdessen den älteren Sommer-Patch. Nun ist ja immer noch die Version 1.0 in Benutzung. Also markiert der Sommer-Patch die Datei ebenfalls zum Löschen und bietet (weil er von der aktuellen 3er-Version nichts weiß) nun seine 2er als Ersatz an.
    Nach dem Neustart besteht jetzt also die Gefahr, dass die 3er-Version von der 2er überschrieben wird, weil die Liste IMHO der Reihe nach abgearbeitet wird.

    Und da kommt dann Microsofts Tool ins Spiel, das nach solchen doppelten Verweisen sucht und nur die aktuellste Version behält und andere Referenzen entfernt. Das Schöne ist, dass diese Funktionalität mittlerweile in allen aktuellen Patches integriert ist, so dass die Reihenfolge keine Rolle mehr spielt. Trotzdem empfehle ich die Benutzung des Tools, denn es wäre ja möglich, dass man doch noch einen älteren Patch ohne diese Schutzfunktion hat. Außerdem ist es nur ~44k groß und fällt damit nicht wirklich ins Gewicht.

Bonus:

Wer will, der holt sich gleich noch das Internet Explorer Administration Kit (IEAK) von Microsoft. Das gibt es ebenfalls kostenlos. Ab und zu lag/liegt es auch auf Heft-CDs irgendwelcher Zeitschriften. Aus diesem IEAK werden 3 Dateien benötigt, um ein selbstentpackendes Archiv zu erzeugen: IExpress.exe, makecab.exe und wextract.exe. Findet mein Assistent diese 3 Dateien in seinem Programmordner, kann er das SFX-Archiv auf Wunsch gleich erzeugen lassen. Dazu ist ja die schon erwähnte Steuerdatei (mit der Endung "SED" übrigens, @alle Ossis ) da.
Ich weiß, dass WinRar und Co. so was auch können. Wer lieber mit seinem Tool arbeiten will, kein Problem. Ihr müsst nur dafür sorgen, dass die Dateien temporär entpackt werden, und dass nach dem Entpacken das Setup (hfsetup.exe) gestartet wird. Das habe ich in der Templatedatei für IExpress schon alles vorbereitet.


Tja, das war´s.
Wenn euch was auffällt an Fehlern, falschen Beschriftungen, Problemen, usw., dann meldet es bitte. Ach so, getestet habe ich es selbst bisher auf einem XP-Pro- und einem 2000-Rechner. Klappte sogar


Neuheiten
  • Damit ihr mir nicht in meinem Template oder dem Setup herumfummelt , stecken beide jetzt samt Symbol als Ressourcen in der Exe. Wer immer die Funktion geschrieben hat (´s kann ja eigentlich bloß Assa oder Nico gewesen sein), meinen Dank dafür.
  • Die List-View-Spalte hat jetzt auch wieder eine Bezeichnung. Mein Fehler. Sorry.
  • Eine Lizenzdatei kann beim IExpress-Template angegeben werden. Das kann man ja zweckentfremden, indem man eine Textdatei benutzt, in der man auflistet von wann das Hotfix-Paket ist und was enthält, usw.
  • Äh, ich weiß, dass das Programm am Anfang was von "Dieses Programm nur nur mit Administrator-Rechten ausgeführt werden." erzählt, wenn man selbige nicht hat. Der Tippfehler ist schon behoben, ich war aber zu faul, extra deswegen ein neues Archiv hochzuladen. Erfreut euch also daran.
Angehängte Dateien
Dateityp: zip rollup.maker_217.zip (40,9 KB, 20x aufgerufen)
 
MathiasSimmack
 
#2
  Alt 26. Jan 2005, 14:34
Die Resonanz ist ja wirklich umwerfend. Na gut. Ich wollte aber trotzdem fragen, ob jemand von euch demnächst vllt. mal ein Sicherheitsupdate installieren will oder muss. Mich würde nämlich mal das Rückgabeergebnis dieser Patches interessieren, wenn man den Neustart unterbindet. Bei der MSI-Runtime ist es so, dass das Setup ERROR_SUCCESS_REBOOT_REQUIRED sendet, falls ein Neustart notwendig ist. Und ich möchte gern wissen ob das bei den Sicherheitspatches auch so ist.

Dann könnte ich das Hotfix-Setup (mein Starter) so gestalten, dass es die Rückgabewerte abfragt und den Neustart wirklich nur auslöst, wenn er erforderlich ist. Es gibt ja auch Patches, die ohne Neustart auskommen. Und mein Starter löst im Moment grundsätzlich am Ende einen aus.

Tja, wenn jemand Interesse hat, dann möge er/sie bitte Bescheid sagen. Ich würde dann eine Debug-Version des Setups anhängen, die die Namen und Rückgabewerte der Hotfixes in einer LOG-Datei vermerkt, die ich mir dann gern ansehen würde.

Ich habe leider zu spät daran gedacht, und nun sind die mir zur Verfügung stehenden Windows-Rechner (Herr, schütze meine Verwandtschaft) "leider" alle schon aktualisiert.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin
 
#3
  Alt 26. Jan 2005, 14:40
also hört sich ja wirklich brauchbar an, nur testen kann cihs nicht: hab im moment keinerlei patches zum installieren
Leo S.
  Mit Zitat antworten Zitat
MathiasSimmack
 
#4
  Alt 8. Feb 2005, 22:15
Aus aktuellem Anlass (Patchday bei Microsoft) habe ich eine aktuelle Version meines Tools hochgeladen. Ich hatte ja angekündigt, dass ich speziell das Hotfix Setup so verbessern wollte, dass es den Neustart nur auslöst, wenn der erforderlich ist. Und ihr habt Glück. Ich hab´s mit einigen der heute veröffentlichten Updates ausprobiert, und hier wäre der Auszug aus dem Log:
Code:
Windows*****-DEU.exe
3010 (hex: 0xbc2)
Der Vorgang wurde erfolgreich beendet.


Windows*****-DEU.exe
3010 (hex: 0xbc2)
Der Vorgang wurde erfolgreich beendet.


Windows*****-DEU.exe
0 (hex: 0x0)
Der Vorgang wurde erfolgreich beendet.


Windows*****-DEU.exe
3010 (hex: 0xbc2)
Der Vorgang wurde erfolgreich beendet.


Windows*****-DEU.exe
3010 (hex: 0xbc2)
Der Vorgang wurde erfolgreich beendet.


Windows*****-DEU.exe
0 (hex: 0x0)
Der Vorgang wurde erfolgreich beendet.
4 Updates liefern, wie man sehen kann, den Wert 3010 zurück. Das ist das von mir erhoffte ERROR_SUCCESS_REBOOT_REQUIRED. Bedankt euch bei Microsoft. Ohne diesen Wert hätte ich den Neustart immer auf Verdacht auslösen lassen müssen. Mein Setup wertet das Rückgabeergebnis aus, und wenn ein Update diesen Wert sendet, wird am Ende der Neustart ausgelöst. Wenn nicht, dann nicht.

Wie gesagt, die aktuelle Version dieses Setups steckt als Ressource im Programm drin. Das Programm findet ihr im ersten Beitrag. Das Projekt ist damit für mich abgehakt, weil fertig.
  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 10:59 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