Softwarepakete: Updateverhalten, Verteilen von neuen Versionen

Nachdem die ersten Softwarepakete erstellt und verteilt wurden, kommen immer wieder die folgenden Fragen auf:

  • Wie verteile ich neue Versionen von bestehender Software?
  • Wie rolle ich diese Versionen aus?
  • Was ist zu beachten?

Wichtige Grundlagen zu diesem Thema sind bereits in diesem Beitrag erläutert: Empirum Paket – Registry, SoftwareDepot, Version.

In Kurzform ist folgendes für die neue Version wichtig:

  • Der Herstellername (DeveloperName) und Softwarename (ProductName) der Versionen sind identisch.
  • Es ist lediglich die Version unterschiedlich und in diesem Falle die neuere Version höher als die alte.
  • Die MachinekeyName Einträge (und somit im SoftwareDepot: Registrierung, Schlüssel) sind identisch.

Sind diese Voraussetzungen erfüllt kann das neue Paket dem Computer, der die Vorgängerversion zugewiesen hat, zugewiesen werden. Dazu die neue Version dem Computer mit den Verteilungsoptionen „Installieren, Erneuern“ zuweisen. Die alte Version aus der Zuweisung löschen. Bei der kommenden Abfrage: „Löschen“ auswählen. Dies bedeutet, dass der Verteilbefehl gelöscht wird und somit nur noch der Verteilbefehl für die neuere Version aktiv ist.

Findet nun die Softwareverteilung auf dem Zielcomputer eine Altversion anhand der MachineKeyName Werte in der Registry vor, so wird eine Deinstallation mit der lokal vorgehaltenen Setup.inf durchgeführt (AskUninstallOld=1). Dazu ist es wichtig, dass die Deinstallationsbefehle oder Zugriffe alle lokal erfolgen können! Häufig sorgen Zugriffe, in den betroffenen Sektionen für die Deinstallation, auf %SRC% oder ähnlich für Fehler bei der Deinstallation der Altversion. Ist die Altversion erfolgreich deinstalliert, beginnt die Installation der neuen Version.

Gibt es beim Testen (Deinstallation der Altversion), wie zuvor beschrieben, Probleme – und diese Probleme tauchen zumeist erst auch dann auf, wenn man die Nachfolgeversion paketiert hat, hat man noch „Handlungsspielraum“. Entweder man setzt nun die Vorgängerversion auf „Deinstallieren…“ anstatt „Löschen“ oder man passt das „neue“ Paket an (AskUninstallOld=0 und die Deinstallation auf Bedarf durchführen).

In einem anderen Beitrag werde ich der zumeist nachfolgenden Frage: „Wann passe ich die Version und wann die Revision an?“ nachgehen.

6 Kommentare Schreibe einen Kommentar

  1. Hallo Jochen,

    wird beim Deinstallieren nicht eh noch mal das betreffende Paket lokal gecacht, sodass die Zugriffe auf die Dateien immer lokal sind für die Deinstallation?

    Gruß
    Udo

    • Hallo Udo,

      das Paket wird dann nochmals lokal gecached, wenn das gleichnamige Paket die Verteilungsoption „Deinstallieren“ gesetzt bekommt. Das ist das, was ich als „Workaround“ im letzten Absatz beschrieben habe. Wenn die Version 2.0 die Version 1.0 ersetzt und das Paket 1.0 aus der Verteilung genommen wird, wird lokal (ohne gesonderten Deinstallationsbefehl) auch eine Deinstallation der 1.0 angestoßen. Dazu werden jedoch keine Quellen erneut synchronisiert und lediglich die lokal gespeicherte Setup.inf herangezogen. In diesem Falle (Deinstallation) hat %SRC% auch nicht mehr den gleichen Wert wie bei der Installation – und genau das führt zumeist zu Problemen.

      Viele Grüße
      Jochen

      • Hallo Jochen,

        ok, wie umgehe ich denn dann geschickt das %SRC% Problem. Soll man die Pakete lokal cachen?
        Beim Sofware Pakete ersetzen, wähle ich doch i.d.R. immer den Befehl löschen, weil ich das alte Paket aus dem Profil haben möchte.

        Viele Grüße
        Udo

      • Hallo Udo,

        bei den MSI Installationen ist es schon umgangen, wenn man MSIEXEC /X {GUID} aufruft, anstatt den Weg zur MSI anzugeben, was auch ginge.
        Es geht darum bei der Deinstallation einen Uninstall Aufruf zu nutzen der lokal vorliegt, wie z.B. die Uninstall.exe bei einem FileZilla, die im Ordner „%ProgramFiles (x86)%FileZilla FTP Client“ liegt, oder die SapSetup.exe die im %ProgramFiles% bzw. %WinDir% Ordner liegt, usw. Benötigt man für die Deinstallation noch eine zusätzliche Datei, wie ein Tool, Antwortdatei, etc. so sollte man diese dann auch während der Installation auf dem Computer ablegen (Copy) und bei der Deinstallation gezielt (Beispiel: %WinDir%EmPack%Developername%%ProductName%%Version%Antwort.iss) aufrufen.

        Viele Grüße
        Jochen

  2. Meine Frage ist, wir benutzen zur zeit sicherheitssoftware Symantec Endpoint Protation und schön eine Paket vorhanden und auf Clinets installiert. Wenn wir neuen Version von Symantec Endpoint Protation auf Clinets zuweisen „entweder via Empirum oder direkt“ dann lass sich alte Version installieren und dazu installiert neue auch und behält auch Ordner für alten Version unten den Pfad „C:\programm (x86)Symantec“ und unter Registrierung die Registrierungseinteag. Wie kann man in Setup.inf ändern, dass alle vorherigen Einstellungen von alten Version löscht extra manuell oder per Emirum deinstallieren durchzuführen. Ich bedanke mich voraus.

    • Hallo Asim,
      du kannst das nächste mal gerne in englisch schreiben, das ist kein Problem.
      Wenn das neue Paket im Sinne HerstellerSoftwarenameVersion (nun höhere Version) erstellt wurde, sollten alle alten Einträge weg sein (Platform=) muss dann natürlich auch identisch sein.
      Wenn Du im neuen Paket die alten Verzeichnisse und Registry Einträge löschen möchtest, so musst du ggf. DELTREE „C:program files(x86)Symantec“ in eine SET: Sektion einbauen, sowie -HKLM,Software… Einträge in die Reg: Sektion.
      Viele Grüße
      Jochen

Schreibe einen Kommentar


/* */