Faire OS X Installer des Packages comme un Pro - Xcode Developer ID prêt pkg
Note: C'est pour OS X Installer que des colis, paquets, pour soumission à la Mac App Store suivent des règles différentes.
À cause de la Montagne du Lion Gatekeeper j'ai finalement dû prendre mon PackageMaker script de construction derrière la grange et de le photographier. PackageMaker était déjà retiré de Xcode et déplacé dans "Outils Auxiliaires pour Xcode", alors j'espère qu'il sera vite oublié.
La question est de savoir comment dois-je utiliser pkgbuild
, productbuild
, et pkgutil
pour le remplacer?
- donc je suppose que le problème avec packagemaker est l'incapacité à bien signer fichiers pkg pour une utilisation avec gatekeeper sur la Montagne du Lion?
- C'est possible, mais PackageMaker toujours été poussette a l'enfer, et a obtenu obsolète avec Mac OS X 10.6 Snow Leopard. Elle vous fera économiser temps dans le long terme, à juste se familiariser avec les nouveaux outils.
- Avez-vous un lien officiel qui dit packagemaker a été abandonné sur 10.6?
- Le problème avec PackageMaker est qu'il ne fonctionne plus du tout sur Mtn Lion, même avec les Outils Auxiliaires. Un privé DSObjCWrappers.le cadre est désormais absent de Mtn Lion ainsi, lorsque vous essayez d'utiliser PackageMaker j'obtiens: Dyld Message d'Erreur: la Bibliothèque n'est pas chargé: /System/Library/PrivateFrameworks/DSObjCWrappers.framework/Versions/A/DSObjCWrappers Référencé à partir de: /Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker Raison: image non trouvé
- Il n'a jamais été annoncé comme étant obsolète, retiré de Xcode et finalement "disparu" comme un Birman manifestant.
- Bien que PackageMaker ne fait plus partie de la base de Xcode installer, ni une charge de autres accessoires utilitaires qui ne sont pas obsolètes. PackageMaker fonctionne toujours très bien pour moi sur 10.8.2, et j'ai téléchargé le mois de juillet 2012 version des Outils Auxiliaires d'image de disque. Il est vrai que
pbxbuild
etprojectbuild
sont progressivement remplacer (en particulier pour les App Store communiqués) et c'est probablement pour le mieux, mais ce n'est pas tout à fait exact de dire que c'est mort. ("Je ne suis pas encore mort!") - Xcode 4.6 notes de version: Abandon du Package Maker adcdownload.apple.com/Developer_Tools/xcode_4.6/...
Vous devez vous connecter pour publier un commentaire.
Notre exemple de projet a deux construire cibles: HelloWorld.application et d'assistance.app. Nous faisons un package de composant pour chaque et de les combiner dans un produit archive.
Un package de composant contient la charge utile d'être installé par le OS X Installer. Bien qu'un composant
package peut être installé sur son propre, il est généralement intégrées dans un produit archive.
Nos outils: pkgbuild, productbuild, et pkgutil
Après le succès de "Construire et d'Archives" open $BUILT_PRODUCTS_DIR dans le Terminal.
Cela nous donne le composant-plist, vous trouverez la description de la valeur dans le "Propriété D'Un Composant De La Liste" section. pkgbuild -racine génère le packages de composants, si vous n'avez pas besoin de modifier les propriétés par défaut, vous pouvez omettre le --composant-plist paramètre dans la commande suivante.
productbuild --synthétiser résultats dans un Distribution De Définition.
Dans le Distribution.xml vous pouvez changer les choses, comme le titre, fond, bienvenue, readme, de licence, et ainsi de suite. Vous tournez votre packages de composants et de distribution définition avec cette commande dans un produit archive:
Je recommande de prendre un coup d'oeil à iTunes Installateurs Distribution.xml voir ce qui est possible. Vous pouvez extraire "Installer iTunes.pkg" avec:
Permet de mettre ensemble
Habitude, j'ai un dossier nommé Paquet dans mon projet, qui inclut des choses comme Distribution.xml un composant plists, des ressources et des scripts.
Ajouter un Exécuter le Script Phase de construction nommé "Générer le Package", qui est défini à Exécuter le script uniquement lors de l'installation de:
Si vous n'avez pas à changer l'emballage après il est généré avec productbuild vous pourriez se débarrasser de la
pkgutil --expand
etpkgutil --flatten
étapes. Vous pouvez également utiliser le --signe paramenter sur productbuild au lieu de courir productsign.Signer un OS X Installer
Paquets sont signés avec les IDENTIFIANT de Développeur Installateur certificat que vous pouvez télécharger à partir de Développeur De Certificat D'Utilité.
Ils la signature se fait avec le
--sign "Developer ID Installer: John Doe"
paramètre de pkgbuild, productbuild ou productsign.Notez que si vous allez créer un signé produit archive à l'aide de productbuild, il n'y a aucune raison de signer le packages de composants.
Tout le chemin: Copier le Package dans Xcode Archive
De copier quelque chose dans le Xcode Archive nous ne pouvons pas utiliser la Exécuter le Script Phase de construction. Pour cela nous avons besoin de l'utilisation d'un Schéma d'Action.
Modifier le Schéma et développez des Archives. Ensuite, cliquez sur actions et ajouter un de l'Exécution d'un Script d'Action:
Dans Xcode 6:
Dans Xcode 5, utilisez cette valeur pour
PKG
à la place:En cas de contrôle de version n'a pas de magasin de Xcode Système d'information je suggère d'ajouter ce que l'script shell pour votre projet de sorte que vous pouvez simplement restaurer l'action en faisant glisser le script de l'espace de travail dans le post-action.
Script
Il existe deux types de scripts: JavaScript dans la Distribution des Fichiers de Définition de et des Scripts Shell.
La meilleure documentation sur les Scripts Shell, j'ai trouvé dans WhiteBox - PackageMaker Comment, mais lu avec attention, car il fait référence à l'ancien format de package.
Lecture Supplémentaire
Problèmes connus et Solutions
Destination Sélectionnez Volet
L'utilisateur est présenté avec la destination, sélectionnez l'option avec un seul choix "Installer pour tous les utilisateurs de cet ordinateur". L'option apparaît visuellement sélectionné, mais l'utilisateur doit cliquer sur afin de procéder à l'installation, provoquant une certaine confusion.
Pommes de Documentation recommande d'utiliser
<domains enable_anywhere ... />
mais cela déclenche le plus buggé de Destination, Sélectionnez Panneau de pommes qui ne veut pas l'utiliser dans l'un de leurs Forfaits.À l'aide de la rendre caduque
<options rootVolumeOnly="true" />
vous donner la vieille Destination Sélectionnez le Volet.Vous souhaitez installer des éléments dans le dossier accueil de l'utilisateur.
Réponse courte: NE PAS ESSAYER!
Réponse longue: VRAIMENT; NE PAS l'ESSAYER! Lire Installer les Problèmes et les Solutions. Vous savez ce que j'ai fait, même après la lecture de ce? J'ai été assez stupide pour essayer. En me disant que je suis sûr qu'ils ont résolu les problèmes de 10.7 ou 10.8.
Tout d'abord, j'ai vu de temps à autre, le ci-dessus mentionné de Destination, Sélectionnez le Volet de Bug. Qui aurait cessé de moi, mais je l'ai ignoré. Si vous ne voulez pas passer la semaine après le lancement de votre logiciel répondant à l'appui des e-mails qu'ils ont de cliquer une fois le joli bleu de la sélection de NE PAS utiliser ce.
Vous êtes en train de penser que vos utilisateurs sont assez intelligent pour comprendre le panneau vers l'extérieur, n'est-ce pas? Eh bien, voici une autre chose à propos du dossier d'accueil de l'installation, ILS NE TRAVAILLENT PAS!
Je l'ai testé pendant deux semaines autour de 10 machines différentes avec différentes versions de système d'exploitation et ce n'est pas, et il n'a jamais failli. Donc, je les ai envoyés. À moins d'une heure de la libération, je cœur des utilisateurs qui ne pouvaient tout simplement pas l'installer. Les journaux allusion à des problèmes d'autorisations, vous n'allez pas être en mesure de fixer.
Donc, répétons-le une fois de plus: Nous n'utilisons pas le programme d'installation pour le dossier home de des installations!
RTFD de Bienvenue, Lisez-moi, la Licence et la Conclusion n'est pas acceptée par
productbuild
.Installateur soutenu depuis le début RTFD de fichiers pour faire de jolis écrans d'Accueil avec des images, mais productbuild ne pas les accepter.
Solutions de contournement:
Utiliser un mannequin rtf fichier et de le remplacer dans le package par après
productbuild
est fait.Remarque: Vous pouvez également avoir des images de la Rétine à l'intérieur de la RTFD fichier. L'utilisation de multi-image tiff fichiers:
tiffutil -cat Welcome.tif Welcome_2x.tif -out FinalWelcome.tif
. Plus détails.Démarrage d'une application lorsque l'installation est terminée avec un BundlePostInstallScriptPath script:
Il est important d'exécuter l'application en tant qu'utilisateur connecté, pas tant que l'utilisateur du programme d'installation. C'est fait avec launchctl asuser uid chemin. Aussi, nous ne lancez quand il n'est pas une installation de ligne de commande, fait avec installateur outil ou Apple Remote Desktop.
/tmp
être traitées plus tard dans un postflight script, comment la structure de la liste des composants? Toute la documentation disponible semble supposer que le développeur a généré avec--analyze
, au moins initialement.Component Property List
vous n'avez pas besoin d'exécuter--analyze
. Pour le post-traitement des fichiers, je suggère de les mettre tous dans un groupe et de définir que le pkg de l'emplacement d'installation de/tmp
. Mais peut-être que j'ai mal compris votre question. Si donc l'afficher dans une version plus détaillée sur DONC.--expand
étape? Chaque paquet j'ai essayé d'élargir les résultats dans l'erreur, "impossible d'ouvrir le paquet pour l'expansion."pkgbuild
pour créer le.pkg
fichier, vous aurez besoin d'utiliser la--identifier com.mycompany.myproduct
drapeau où il est de votre entreprise et le nom de votre produit. Sinon, vous obtiendrez le message d'erreur "Pas de forfait identificateur spécifié et pas exactement un composant de le calculer à partir."Il est une application très intéressante par Stéphane Sudre qui s'occupe de tout pour vous, est scriptable /prend en charge la construction de la ligne de commande, il a une super belle interface et est GRATUIT. Triste, c'est: ça s'appelle des "Packages" qui rend impossible à trouver dans google.
http://s.sudre.free.fr/Software/Packages/about.html
Je souhaite que j'avais connu avant, j'ai commencé confectionnant vous-même mes propres scripts.
Un +1 à accepté de répondre à:
La Sélection de la Destination dans le programme d'installation
Si le domaine (un.k.une destination) de sélection est souhaitée entre l'utilisateur et de domaine de domaine du système alors plutôt que d'essayer
<domains enable_anywhere="true">
utilisation suivantes:<domains enable_currentUserHome="true" enable_localSystem="true"/>
enable_currentUserHome installe l'application app sous
~/Applications/
etenable_localSystem
permet à l'application d'être installé sous/Application
J'ai essayé ceci dans El Capitan 10.11.6 (15G1217) et il semble fonctionner parfaitement bien dans 1 machine de dev et 2 de différentes VMs j'ai essayé.
Voici un script de compilation qui crée un signé package d'installation d'une racine de construction.
Pour info pour ceux qui sont en train de créer un package d'installation pour un ensemble ou un plugin, c'est facile: