Créer un fichier DMG [dupliquer]

Cette question a déjà une réponse ici:

je développe une application en cacao. J'ai besoin de créer un fichier DMG pour installer mon application comme Adium (qui fournit une bonne interface utilisateur pour faire glisser le fichier app dans le dossier Application). Est-il pour cela l'outil?

19
demandé sur Quinn Taylor 2009-08-06 13:47:09

8 réponses

si vous avez un seul fichier que l'utilisateur copierait probablement dans le répertoire des Applications, une image disque "internet-enabled" est une bonne alternative. Quand vous en téléchargez un en utilisant Safari (je sais, tout le monde n'utilise pas Safari), il le monte automatiquement, copie le contenu à l'emplacement de téléchargement, puis démonte le DMG et le déplace à la corbeille. L'application ne va pas automatiquement aux Applications, mais il est sur la HD de l'utilisateur et ils n'ont pas à s'inquiéter de jouer avec le disque image.

les images de disque peuvent être activées sur internet avec une seule commande de Terminal:

hdiutil internet-enable -yes "MyDiskImage.dmg"

ceci devrait fonctionner sur n'importe quel fichier DMG. Si vous voulez que les utilisateurs voient votre joli fond, vous pourriez ne pas vouloir faire cela. Cependant, pour les charges utiles simples, c'est une bonne façon de procéder. (Bien sûr, certaines personnes préféreraient de toute façon créer un fichier ZIP Pour ce genre de déploiement.)


je trouve que la création manuelle d'un DMG peut être pénible. Vous pouvez réellement automatiser création d'un simple DMG dans votre projet Xcode. Il suffit de créer une cible de Script Shell (projet → nouvelle cible)...) et utiliser hdiutil dans le script. La commande ressemblerait à quelque chose comme ceci (en substituant les noms et répertoires appropriés):

hdiutil create -fs HFS+ -volname "MyApp 1.0" -srcfolder \
"/directory/with/contents/to/package/" "~/Desktop/MyApp-1.0.dmg"`

Vous aurez besoin de mettre tous les trucs que vous voulez inclure dans l'image disque dans un répertoire unique, mais si vous n'avez pas peur d'utiliser cp EN Terminal, c'est facile à faire.

Si vous voulez voir un exemple, j'utilise cette approche dans CHDataStructures.framework moi-même. Si vous vérifiez le code et ouvrez Xcode, le second script de la cible de déploiement crée le DMG.

19
répondu Quinn Taylor 2009-08-06 15:45:16

Utilitaire De Disque (C'est dans les Applications\Utilitaires)

File>New>Disk Image From Folder, puis sélectionnez le dossier dont vous voulez créer une image. Le résultant .dmg répliquera le dossier que vous avez utilisé pour faire l'image, jusqu'aux positions des icônes.

16
répondu Amber 2009-08-06 09:55:50

Dr. Nic a assemblé un joli joyau ruby qui fait la plupart de ce travail pour vous, vous avez juste besoin de fournir le projet xcode et quelques graphiques. Le lien est ici:

http://drnicwilliams.com/2009/02/03/choctop-packaging-and-deployment-of-cocoa-applications/

c'est un bon paquet, il s'occupe de tâches qui sont autrement une douleur...

-- Evan

8
répondu Evan 2009-08-06 13:25:15

et parce qu'il n'y a déjà pas assez de réponses...

j'ai créé un DMG en lecture-écriture avec la mise en page que je voulais -- image de fond, taille, raccourci vers l'icône de L'Application, et un dossier vide pour se tenir debout pour mon application. J'ai écrit un simple bash script pour faire une copie de ce DMG, le monter, copier mon application sur le dossier vide, démonter le DMG, puis le convertir en lecture seule.

mais DMG Canvas peut faire tout ce processus pour vous, et fournit également une commande outil de ligne que vous pouvez utiliser pour automatiser ce processus à partir de vos constructions Xcode, donc je recommande vraiment que sur ma solution.

3
répondu Alex 2009-08-06 16:56:18

Mozilla scripts de compilation sont une excellente source si vous voulez écrire votre propre script. En utilisant pkg-dmg vous pouvez personnaliser l'image de fond, le nom du volume, ajouter une licence, icône, etc. Exemple:

pkg-dmg \
    --verbosity 2 \
    --volname "MegaFinder" \
    --source MegaFinder.app \
    --sourcefile \
    --target MegaFinder.dmg \
    --license Licence.txt  \
    --icon MegaFinderVolumenIcon.icns  \
    --copy MegaFinderCustomizedDS_Store:.DS_Store \
    --mkdir .background \
    --copy MegaFinderBackgroundImage.jpg:.background/backgroundImage.jpg \
    --symlink  /Applications:Applications \
    --attribute V:.background \
    2>&1 > /dev/null

Le problème, c'est de créer la parfaite .DS_Store. Pour les cas simples, vous pouvez créer .DS_Store personnaliser le volume dmg monté dans Finder (afficher les Options). Vous aurez besoin de créer une image Accessible en écriture, de la personnaliser, de la démonter (pour propager les changements) et enfin, montez à nouveau pour copier le résultat .DS_StoreMegaFinderCustomizedDS_Store (tel qu'il apparaît dans l'exemple ci-dessus)

si votre application supporte Leopard je recommande DMG Canvas gérer l'ensemble du processus ou au moins obtenir le .DS_Store. Il dispose d'un outil de ligne de commande.

2
répondu djromero 2018-08-02 14:22:41

La meilleure façon de faire cela comme une construction automatique étape est de créer un modèle.dmg qui ressemble exactement à ce que vous voulez( en utilisant finder / diskutility etc mais en ne faisant pas la dernière étape de la compression), puis dans votre script de construction:

  1. utilisez hdiutil pour attacher l'image
  2. Utilisation cp etc pour copier l'application dans l'image montée
  3. hdiutil détacher
  4. compresser l'image: hdiutil convertir".dmg" -calme -format UDZO -imagekey zlib-niveau=9 -o "MyApp-0.3.dmg"

il y a un makefile à https://github.com/remko/fancy-dmg/ qui contient ces étapes.

1
répondu JosephH 2013-11-25 13:56:08

Macbreak Dev a fait un joli petit screencast sur la création de fichiers DMG en utilisant un workflow Automator. Rend les choses très facile, très rapide et vous pouvez avoir un arrière-plan personnalisé à votre DMG. Vous pouvez le voir à: http://www.pixelcorps.tv/mbkd_010

0
répondu Ian Turner 2009-08-06 17:51:59

Vous pouvez utiliser DropDMG pour configurer une mise en page avec une image de fond, un lien symbolique vers le dossier Applications, les positions de vos icônes, etc. Puis, quand vous avez besoin de faire votre .fichier dmg, vous pouvez simplement faire glisser l'application sur DropDMG (ou le script via AppleScript ou l'outil en ligne de commande dropdmg) et lui faire construire l'image du disque en une seule étape.

0
répondu Michael Tsai 2013-09-26 11:48:09