2016-07-01 6 views
0

Ce problème a été discuté plusieurs fois sur Stackoverfl0w, mais malheureusement, je n'ai trouvé aucune solution vraiment satisfaisante.Comment interdire au programme d'installation .pkg de rechercher .app (s) inclus dans des emplacements différents du répertoire d'installation spécifié,

La situation:

(inclus uniquement parce que la plupart des réponses précédentes sont allés avec la ligne de « Just Do not faire Il n'y a aucune raison d'avoir plusieurs versions d'une application .. etc. », que je d'accord avec dans la plupart des cas, mais pas celui-ci.)

Nous livrons actuellement un fichier .pkg qui installe notre progiciel dans/Applications/$ CompanyName/$ SoftwareName_ $ VersionNumber. Inclure le numéro de version dans le nom du dossier et ne pas supprimer les anciennes versions est nécessaire car beaucoup de nos clients utilisent notre version actuelle et la version bêta en parallèle, et de nombreux clients travaillent avec une ancienne version car ils l'ont certifiée cas d'utilisation, mais ils utilisent une version actuelle pour les projets en cours.

Nous ne livrions que des outils en ligne de commande et des bibliothèques pour macOS, donc cela a fonctionné parfaitement pendant de nombreuses années.

Cependant, nous avons commencé à transférer nos applications graphiques de Windows uniquement à Windows/macOS/Linux, qui sont livrés au format .app sous macOS.

La question:

Si un .app est expédié dans un installateur .pkg, le programme d'installation du disque de recherches trou pour les anciennes instances du même .app. S'il en trouve un, il remplace l'instance qu'il a trouvée (très mauvaise) et ne place pas non plus le fichier .app dans le répertoire d'installation spécifié (également mauvais).

Solutions Je TROUVÉS:

a) Modification du CFBundleIdentifier du .app pour chaque version publiée. Ça ne me semble pas un moyen propre. Je suppose que cela provoquera également le .app à apparaître plusieurs fois dans le Launchpad
b) Recherche toutes les instances du fichier .app avant que le programme d'installation ne le fasse, les compresser et les extraire à nouveau après l'installation. (Cela ne semble pas non plus une bonne solution.)

Est-ce que quelqu'un a un moyen propre pour cela? Je ne peux pas croire que Apple n'a pas le moyen de spécifier que ce comportement doit être omis lors de la création du fichier .pkg.

Y at-il une meilleure documentation puis celui que je trouve ?:

https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW15

http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html (bonne documentation, mais après ~ 8 ans de disponibilité, beaucoup de champs sont encore marqués avec « Description À venir. ")

EDIT: Ajout de XCode en tant que balise. Cogner après avoir gagné le tumbleweed avec cette question. Apprécierait toute suggestion :)

Répondre

0

La propriété "relocate" dans le fichier de distribution semble contrôler cela. Malheureusement, il semble que vous ne pouvez activer "relocalisation" qu'en ajoutant cette clé, mais ne la désactivez pas en omettant la clé.Selon la documentation XML d'Apple, la valeur par défaut pour les ensembles .app est "relocate".