Hallo zusammen,
ich habe eine Frage zur Funktion RemovePackagesWithSameProductGUID. Ich möchte diese Funktion erstmals in einem bzw. zwei Paketen einsetzen. Wir verwenden Empirum für die Softwareverteilung.
Ich habe eine Anwendung, die einmal jährlich erscheint, sowie dazugehörige Service Packs, die monatlich veröffentlicht werden. Es handelt sich jeweils um Inno-Setups.
Meine Idee ist, zwei Pakete zu erstellen. Ein Paket für die Anwendung und ein separates Paket für die regelmäßigen Service Packs. Die Pakete haben eine einzigartige PackageGUID aber eine identische ProductGUID.
Das Problem ist, dass die Anwendung nach der Deinstallation eines Service Packs nicht mehr gestartet werden kann. Das Service Pack ersetzt einzelne Dateien im Programmverzeichnis. Bei der Deinstallation werden diese Dateien wieder entfernt und fehlen dadurch auch der eigentlichen Anwendung.
Ich würde deshalb gerne erreichen, dass bei einer Deinstallation, Installation oder Reinstallation der Anwendung automatisch alle zugehörigen Service Packs deinstalliert und deregistriert werden. Meine Idee war, im Paket der Anwendung RemovePackagesWithSameProductGUID = true zu setzen.
Im Service-Pack-Paket prüfe ich im Custom Begin, ob die Anwendung installiert ist. Falls nicht, wird die Installation mit einem Fehler beendet.
Bei einer Neuinstallation der Anwendung würde sich nichts ändern, da zu diesem Zeitpunkt noch kein Service Pack installiert sein kann. Wird die Anwendung deinstalliert, soll auch das Service Pack deinstalliert und das Paket deregistriert werden. Solange die Zuweisung des Service Packs bestehen bleibt, würde Empirum zwar weiterhin versuchen, das Paket zu installieren, die Installation würde aber aufgrund der Prüfung im Custom Begin fehlschlagen. Erst wenn die Zuweisung entfernt wird, würden diese Installationsversuche aufhören.
Interessant wird es bei einer Reinstallation der Anwendung. Meine Hoffnung war, dass dabei ebenfalls das Service Pack deinstalliert und deregistriert wird. Anschließend könnte Empirum das Service Pack automatisch wieder installieren. Dadurch müsste ich im Fehlerfall lediglich das Anwendungspaket neu installieren und nicht zusätzlich das Service-Pack-Paket anfassen.
Nach meinen bisherigen Tests scheint das bei der Deinstallation auch zu funktionieren. Bei einer Installation bzw. Reinstallation wird das Service Pack zwar deinstalliert, das Paket jedoch nicht deregistriert. Grundsätzlich kann ich dieses Verhalten nachvollziehen, für meinen Anwendungsfall wäre es allerdings unpraktisch.
Übersehe ich hier etwas oder gibt es für diesen Anwendungsfall einen besseren Ansatz?
Gruß