Deinstallation/Update alter Pakete generelle Frage

Post Reply
czimmer
Posts: 19
Joined: 01. Feb 2019, 13:23
Contact:

Deinstallation/Update alter Pakete generelle Frage

Post by czimmer » 21. Oct 2021, 09:43

Hallo zusammen,

wir haben mal eine generelle Frage zum Thema Deinstallation alte Pakete bzw. Update eines Paketes.

Wenn wir ein neues Paket erstellen für die Verteilung, kann ich das sauber installieren und deinstallieren.
Wenn ich das Paket in den Verteilungsoptionen auf "Deinstallieren" stelle, müsste er sich (wenn ich das richtig verstehe) das Paket nochmals herunterladen, sofern es nicht mehr im lokalen PackageCache liegt.

Wenn wir nun eine neue Version des Paketes erstellen und das ein Update sein soll, laufen wir immer wieder mal auf den Fehler, dass die Deinstallation des alten Paketes nicht funktioniert.
Wir können natürlich "AskUninstallOld" auf "0" setzen, damit die neue Version einfach "drüber gebügelt" wird. Das ist bei vielen Applikationen, die einen halbwegs intelligenten Installer haben, kein Problem.
Bei manchen muss aber einfach vorher die alte Version weg. Und bei "AskUninstallOld=1" klappt das manchmal nicht.
Müsste sich der Client nicht dann auch nochmal das alte Paket ziehen, damit die Deinstallation läuft oder wie ist hier die normale Funktionsweise?

Eine unserer Vermutungen wäre: Beim "AskUninstallOld=1" greift er auf die lokal abgelegte setup.inf zu, kann die Deinstallation dann aber nicht durchführen, weil das Paket nicht mehr im PackageCache liegt und dementsprechend die Sourcen für die Deinstallation fehlen...?

Bestes aktuelles Beispiel bei uns 7-Zip. Neue Version wird installiert, er erkennt es aber nicht als Update, sondern installiert das dann einfach als "Neuinstallation" drüber. Das hat leider den Nachteil, dass in der Registry beide Versionen als installiert eingetragen sind.

Vielleicht sitzen wir jetzt gerade auch nur auf dem Schlauch oder haben einen generellen Denkfehler, aber wir kommen da gerade nicht weiter.

Wir haben uns schon durch's Internet gekämpft und auch hier schon gesucht, aber so richtig fündig geworden sind wir nicht.
Wenn das schon mal erklärt wurde, bin ich auch über Links sehr dankbar.

Vielen Dank für die Hilfe/Aufklärung :)

Gruß
Christian
Empirum 24.0.1, UEM Agent 2312.1.2

ArthurDent
Posts: 60
Joined: 19. Dec 2018, 17:22
Contact:

Re: Deinstallation/Update alter Pakete generelle Frage

Post by ArthurDent » 26. Oct 2021, 17:13

Nach meinem Kenntnissstand nutzt empirum bei Askuninstallold die Setup inf im Matrix Cache - C:\ProgramData\$Matrix42Scripts$\Hersteller\Software\..etc.

Ich hatte euer beschriebenes Phänomen auch, und da war meistens das alte Skript fehlerhaft.

tim.v
Posts: 111
Joined: 01. Feb 2013, 07:54
Location: Berlin
Contact:

Re: Deinstallation/Update alter Pakete generelle Frage

Post by tim.v » 28. Oct 2021, 10:21

Hallo,

es ist korrekt das mit AskUninstallOld=1 die lokale Setup.inf für die Deinstallation verwendet wird.

Für Paketierer gilt daher seit dem AdvancedAgent, dafür Sorge zu tragen das sämtliche für eine Deinstallation benötigte Dateien lokal verbleiben. Kniffelig gerade bei InstallShield-Paketen, sofern man eine Uninstall.iss-Datei generiert hat ;)

Work-A-Round, da ich selbst auch schon davon betroffen war:

- das Alte Paket auf Deinstallation stellen, aber VORHER die Setup.inf noch einmal minmal anpassen. nur Dateidatum reicht nicht!

Dann prüft seit geraumer Zeit, ich glaube seit Empirum 19.x.x der Advanced als auch der UEM Agent ob die Setup.inf für die Deinstallation mit der auf dem Server übereinstimmt oder nicht. Ist die Version auf dem Server neuer, wird auch das ALTE Paket noch einmal neu geladen und deine Deinst. müsste dann laufen.

Wichtig: Installationsreihenfolge beachten - altes Paket muss natürlich VOR dem neuen im Depot stehen. Hilfreich ist hier auch eine Abhängigkeit im neuen Paket das die neue Version ERST installiert werden darf, wenn die alte deinstalliert wurde ;)


LG
Tim

Markus S.
Posts: 53
Joined: 16. Sep 2013, 14:05
Contact:

Re: Deinstallation/Update alter Pakete generelle Frage

Post by Markus S. » 11. Feb 2022, 08:08

Hallo,

das Thema ist schon etwas älter, dennoch möchte ich meine 10 Jährige Erfahrung hier einbringen, um zu helfen:

Als ich damals mit der Paketierung angefangen habe, waren die Pakete meines Vorgängers teilweise mit fehlerhaften Deinstallationsroutinen bestückt, bzw. fehlten diese teilweise auch komplett. Deshalb habe ich begonnen in meinen Paketen auch immer die Deinstallation der vorherigen Version mit durchzuführen.

Das hat folgende Vorteile:
1) Die Deinstallation der alten Version erfolgt direkt mit Installation der neuen Version. (Vergleich zu Variante mit Verteilungsoption Uninstall der alten Version)
2) Die Deinstallation der alten Version erfolgt immer an die aktuelle Umgebung, die bei Installation der Neuen Version vorliegt, angepasst. (Eventuell muss gar keine Deinstallation der alten Version durchgeführt werden, dann werden nur die Matrix42 Regkeys gelöscht / durch ein automatisches Update haben sich Deinstallationspfade geändert / ...)
3) Ich muss nicht dafür sorge tragen, dass die Teile des alten Pakets noch vorhanden sind, die ich brauche.

Konkret bedeutet das für ein neues Paket:
- AskUninstallOld wird auf 0 gesetzt.
- Im neuen Paket (Bei mir direkt im Template) sind Sektionen enthalten die sich um die Deinstallation, abhängig von der Variante (Exe, MSI, WMI Abfrage) auswählbar kümmern und zusätzlich oder nur die RegKeys der alten Version löschen. Je nach Bedarf lösche ich die Sektionen aus der Setup.inf die ich dann nicht brauche.

Ich hoffe damit konnte ich weiterhelfen.

Viele Grüße
Markus

tim.v
Posts: 111
Joined: 01. Feb 2013, 07:54
Location: Berlin
Contact:

Re: Deinstallation/Update alter Pakete generelle Frage

Post by tim.v » 21. Feb 2022, 14:28

Das hört sich ja sehr konsequent an :D

Wie räumst du die Reste der alten Pakete auf?

Ich habe mir für den AskUninstallOld=0-Fall mal folgendes gebastelt wenn das Setup sich aber um das Update/DeinstallOld selbst kümmert:

viewtopic.php?f=18&t=20719

8)

LG
Tim

Markus S.
Posts: 53
Joined: 16. Sep 2013, 14:05
Contact:

Re: Deinstallation/Update alter Pakete generelle Frage

Post by Markus S. » 01. Apr 2022, 08:42

Bitte entschuldige die späte Antwort Tim.

Im Prinzip mache ich es dir wie in deinem Post beschrieben, ähnlich. Ich arbeite nur nicht mit Variablen (könnte man natürlich tun, aber die Erfahrung sagt, das verwirrt den ein oder anderen einfach nur) und habe in meiner Vorlage die verschiedenen Möglichkeiten, die je nach Bedarf verwendet werden, der Rest bleibt auskommentiert oder wird rausgelöscht. Die Abfrage auf M42Install (alten Key) habe ich mittlerweile aus der Vorlage entfernt, da inzwischen alle Pakete neuer sind.

Code: Select all

[Set:ScanPreviousVersion]
If DoesRegKeyExist ("HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Matrix42 - $$$,UnInstallString") == "1" Then "Set:UninstallPreviousVersion" EndIf
;#Set:CleanPreviousVersion
;#Reg:CleanPreviousVersion

[Set:UninstallPreviousVersion]
;Je nach Bedarf verwenden
[Exe]
AddMeter -1
Call "%Src%\$$$" 
Set M42ErrorModule = 
Set M42ErrorAction = UninstallPreviousExe
If %ErrorLevel% <> "0" Then "Set:ReturnCode" EndIf
[WMIC]
AddMeter -1
CallHidden wmic product where "name like '%%$$$%%'" call uninstall /nointeractive
Set M42ErrorModule = 
Set M42ErrorAction = UninstallPreviousWmic
If %ErrorLevel% <> "0" Then "Set:ReturnCode" EndIf
[MSI]
AddMeter -1
Call MsiExec /X $$$ REBOOT=REALLYSUPPRESS /qn
Set M42ErrorModule = 
Set M42ErrorAction = UninstallPreviousMSI
If %ErrorLevel% <> "0" Then "Set:ReturnCode" EndIf

[Set:CleanPreviousVersion]
DelTree "%ProgramData%\$Matrix42Scripts$\$$$"

[Reg:CleanPreviousVersion]
;Regkeys der alten Version löschen
-HKLM,SOFTWARE\$Matrix42Packages$\$$$
-HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Matrix42 - $$$

Post Reply

Return to “Paketierung”

Who is online

Users browsing this forum: No registered users and 1 guest