Reihenfolge von Installationen/Deinstallationen

holgerv
Beiträge: 278
Registriert: 20 Aug 2012, 09:35

Reihenfolge von Installationen/Deinstallationen

Beitragvon holgerv » 06 Aug 2019, 15:52

Mit Abhängigkeiten und Prioritäten kann man in opsi sehr genau die Reihenfolge von Installationen festlegen. Schwieriger scheint es aber zu sein, wenn es auch um Deinstallationen ("uninstall"-Aktionen) geht.

Wir hätten gerne die Situation, dass "uninstall"-Aktionen grundsätzlich vor "setup"-Aktionen ausgeführt werden.

Konkret haben wir ein Problem, wenn wir Pakete mit sehr ähnlicher Software haben und ein Paket durch ein anderes ablösen wollen:
"software-old" soll abgeschafft und durch "software-new" ersetzt werden. Also wird "software-old" auf "uninstall" und "software-new" auf "setup" gestellt. Leider ist das "uninstall"-Skript von "software-old" so gründlich, dass es auch "software-new" löscht.
Das führt dazu, dass der gewünschte Zustand nur zustande kommt, wenn erst das "uninstall" und erst später das "setup" durchgeführt wird.

Kennt ihr ähnliche Probleme? Habt ihr irgendwelche Ideen, wie wir unser Problem lösen können?

Vielen Dank!


Holger

feltel
Beiträge: 93
Registriert: 09 Dez 2014, 07:22

Re: Reihenfolge von Installationen/Deinstallationen

Beitragvon feltel » 06 Aug 2019, 16:42

Ich mache das aktuell bei unserer ownCloud zu Nextcloud-Migration so, das ich im Installscript des Nextcloud-Client auf das Vorhandensein von ownCloud prüfe, und falls das der Fall ist, dann wird es deinstalliert und per serviceCall dann auf "nicht installiert" gesetzt. Zusätzlich habe ich eine Phantomversion in einem neuen ownCloud-Paket hinterlegt und per Dependency Nextcloud eingetragen. So würde, falls man so herum das ownCloud-Paket updaten würde, ebenfalls Nextcloud installiert.

Das mag insgesamt "von hinten durch die Brust" sein, aber ich wusste mir auch nicht anders zu behelfen, da es scheinbar auch keine sichere Uninstall-Dependency bzw. Conflicts-Eigenschaft gibt, mit der man das eleganter machen könnte.

Hier mal meine Codefragemente dazu:

im Nextcloud-Paket:

Code: Alles auswählen

if (FileExists("%ProgramFiles32Dir%\ownCloud\owncloud.exe"))
                Comment "ownCloud Client found, uninstalling"
                WinBatch_Uninstall_ownCloud
                Registry_Uninstall_ownCloud
                opsiServiceCall_setProductState_ownCloud
else
                Comment "ownCloud Client not found, no uninstall necessary"
endif

.....
[WinBatch_Uninstall_ownCloud]
%ProgramFiles32Dir%\ownCloud\uninstall.exe /S

[Registry_Uninstall_ownCloud]
deletekey [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\ownCloud]

[opsiServiceCall_setProductState_ownCloud]
"method": "setProductState"
"params": [
           "owncloud-client",
           "%hostID%",
           "not_installed",
                                         "",
                                         "",
                                         "",
                                         "",
                                         ""
          ]


und das Control-File vom ownCloud-Paket

Code: Alles auswählen

......
[Product]
type: localboot
id: owncloud-client
name: ownCloud Client
description: Transitional package! The only purpose of this package is to enable upgrades to the new 'nextcloud-client' package on new machines. This package can safely be removed.
advice:
version: 99.0.0.2.4.3.10188
priority: 0
licenseRequired: False
productClasses:
setupScript: _install.ins
uninstallScript:
updateScript:
alwaysScript:
onceScript:
customScript:
userLoginScript:

[ProductDependency]
action: setup
requiredProduct: nextcloud-client
requiredStatus: installed
requirementType: after
.....

Benutzeravatar
SisterOfMercy
Beiträge: 999
Registriert: 22 Jun 2012, 19:18

Re: Reihenfolge von Installationen/Deinstallationen

Beitragvon SisterOfMercy » 07 Aug 2019, 01:35

I have this for our office 2016 package. It seems to have worked, otherwise I think I would have seen a lot more errors about trying to install a 64-bit office together with a 32-bit office.

Code: Alles auswählen

[ProductDependency]
action: setup
requiredProduct: microsoft-office-2007
requiredStatus: not_installed
requirementType: before


However, I tried a similar thing with OpenVPN, and could not get it to work.
Was I lucky because of the alphabetical order?
Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!

Benutzeravatar
r.roeder
uib-Team
Beiträge: 450
Registriert: 02 Jul 2008, 10:08

Re: Reihenfolge von Installationen/Deinstallationen

Beitragvon r.roeder » 07 Aug 2019, 16:33

Der Algorithmus, der die Produktreihenfolge bestimmt, beachtet nur dependencies für die Aktion setup und entweder required_status/required_action installed oder setup

Das ist daher "Zufall", wenn mit anderen Werten für eine dependency das Gewünschte passiert.

Wie so oft, wir planen eine Erweiterung der Optionen :-)
opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.


Wondering who's using opsi? Have a look at the opsi map: http://opsi.org/opsi-map/.