ich stolpere gerade ueber die Dependencies einiger meiner Pakete (wahrscheinlich ist es wirklich zu heiss).
Ein Beispiel:
Paket: firefox-esr-legacy (Postition 157):
Code: Alles auswählen
[ProductDependency]
action: setup
requiredProduct: firefox-esr
requiredStatus: not_installed
requirementType: before
Code: Alles auswählen
[ProductDependency]
action: setup
requiredProduct: firefox-esr-legacy
requiredStatus: not_installed
requirementType: before
Allerdings fuehrt der Client nun doch zunaechst die Installation von firefox-esr-legacy (gemaess Position) aus und entfernt erst anschliessend das firefox-esr. (Da beide Pakete die Software im gleichen Verzeichnis installieren, ist im Anschluss keines der Pakete mehr installiert, obwohl firefox-esr-legacy das von sich logischerweise behauptet.)
Workaround 1
Ich lasse die ProductDependency weg.
Da die jeweiligen Pakete beim Setup ohnehin jede bestehende Installation zuvor sauber tilgen (egal ob ESR, nicht-ESR, ESR-legacy, Test-Paket), ist zumindest keine alte Version im Wege. Per opsiServiceCall-Methode productOnClient_updateObjects wird dann targetConfiguration und installationStatus fuer das "zu entfernende" Paket bereinigt.
Nachteil:
- Die Pakete werden etwas komplexer, auch wenn die jeweiligen Funktionen in Local Functions ausgelagert werden koennen.
- Das ganze funktioniert nur, wenn der Uninstaller von Paket A auch Paket B sauber deinstallieren kann. Damit ist dieser Ansatz leider nicht universell.
Auch hier gibt es keine ProductDependency.
Es wird ein Meta-Paket erstellt, in dem die gewuenschte Version per Property gewaehlt wird. Per opsiServiceCall-Methode setProductActionRequest werden die jeweiligen Pakete fuer install bzw. uninstall markiert.
Problem:
- Die Methode hostControlSafe_fireEvent laesst sich hier nicht verwenden. ("Backend permission denied error: Access to method 'hostControlSafe_fireEvent' denied for user ...") Das erscheint hier ohnehin nicht sinnvoll.
- Ich kann aus einem Setup-Skript eines Paketes m.W. kein anderes Paket gemaess seiner Objekteinstellungen ausfuehren.
- Der Client muss also ein weiteres Mal die Paketliste durchlaufen (Reboot oder OnDemand) um die (De)Installation letztendlich auszufuehren. Dabei schlaegt aber wieder das Problem der Position der Pakete zu. Insofern ist das keine Loesung fuer das eigentliche Problem.
Jens