2016-09-20 6 views
4

Ich habe ein Paket mit 2 Komponenten gemäß --component-plist erstellt.pkgbuild OSX, Erzwingen eines Installationsfehlers im Falle eines Downgrades

BundleIsVersionChecked: Don't install bundle if newer version on disk? (bool) 

wenn ich Herabstufung Szenario durchführen, ich die folgende Meldung erhalten:

Sep 15 11:42:49 os-x-10 installd[284]: PackageKit: Skipping component \ 
"com.my.driverAE21E" (<current_version>) because the version \ 
<new_version> is already installed at <my_component> 

Dies ist zu erwarten, aber leider die Installation Ich habe die folgende Flagge zu verhindern Herabstufung auf der plist-Datei hinzugefügt geht weiter, und die andere Komponente wird korrekt installiert, und das tun auch die preinstall und postintsall Skripte - so bekomme ich eine Mischung aus beiden Versionen.

Gibt es eine Möglichkeit, die Überprüfung der Komponentenversion vor dem eigentlichen Installationsversuch zu erzwingen und den Installationsprozess zu stoppen, falls die Validierung nicht bestanden wurde.

UPDATE:

Ein weiterer Ansatz, der mir helfen kann, ist die Ausführung von Preinstall und post Skripte, falls ein Versuch, zu verhindern, wird zu degradieren.

Ich habe Bezug auf unbeantwortete Frage zu diesem Thema here gesehen.

Antwort

1

Was Sie tun müssen, ist die Versionsüberprüfung zu Ihrer distribution.xml für das Produktarchiv hinzufügen, und führen Sie dann die gewünschte Überprüfung in JavaScript-Code. Dadurch können Sie verhindern, dass die Installation so früh wie möglich beginnt, indem Sie false von der Prüffunktion zurückgeben. Ich kann Ihnen kein Beispiel geben, da ich die benutzerdefinierte Version selbst nie überprüft habe, aber die Verwendung von my.target.receiptForIdentifier() und system.compareVersions() sollte Sie in Schwung bringen.

Weitere Informationen zum Thema: https://developer.apple.com/reference/installerjs (folgen Sie dem Link "Verteilungsdefinition XML-Schemareferenz" dort für die Beschreibung von distribution.xml).

Verwandte Themen