2017-07-28 1 views
0

J'ai un script bash qui crée un fichier .dmg pour mon application node.js. Toutefois, l'icône du fichier .dmg qui apparaît dans le Finder est l'icône de disque standard. J'ai besoin que ce soit la même icône que l'application.comment programmer (de préférence bash) ajouter l'icône à dmg?

Je sais que je peux cmd+I sur mon .app dans le Finder, copier l'icône, et cmd+I sur mon fichier .dmg et coller. Mais je veux que mon processus de construction soit entièrement automatisé. Je préfère ne pas utiliser d'outil tiers pour cela, puisque la signature et la localisation du code fonctionnent déjà dans mon script bash.

J'ai essayé de copier mes icns comme .VolumeIcon.icns dans la racine de mon dmg. Cela n'a aucun effet.

J'ai également essayé SetFile -a C "path/to/dmg/.VolumeIcon.icns". Cela n'a aucun effet non plus, et man SetFile dit qu'il est de toute façon déprécié. Je construis sur macOS Sierra 10.12.6.

Depuis un simple copier-coller fonctionne, il doit y avoir un moyen de le faire par programmation! Mais comment???

Mise à jour

Cela fonctionne partiellement:

hdiutil create -srcfolder "my/build/dir" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -volname MyAppName -ov -attach "my/output/dir/MyAppName.uncompressed.dmg" 
SetFile -c icnC "/Volumes/MyAppName/.VolumeIcon.icns" 
SetFile -a C "/Volumes/MyAppName" 

Il n'associe pas l'icône avec le fichier .dmg lui-même, mais si je double-cliquez sur le fichier .dmg, la fenêtre du Finder est affiché a mon icône.

Le besoin principal, cependant, est pour le fichier .dmg lui-même. Lorsque quelqu'un télécharge mon fichier .dmg, j'ai besoin du fichier .dmg situé dans le dossier Téléchargements pour avoir mon icône au lieu de l'icône de disque standard. Comme mentionné ci-dessus, c'est facile manuellement, mais comment puis-je le faire à partir d'un script bash ou AppleScript?

+0

Jetez un oeil ici: http://www.owsiak.org/?p=683 - Je parle d'un livre assez ancien, mais toujours très bon.Malheureusement, il est disponible via SafariBooksOnline - service payant. – mko

+0

@mko J'ai trouvé des instructions pour l'image d'arrière-plan, mais pas pour définir l'icône affichée dans le Finder pour le fichier dmg lui-même. –

Répondre

1

Disons que vous avez l'image comme celui-ci

enter image description here

et il est enregistré comme: cc.png. Ne suivant

cp cc.png cc_copy.png 
sips -i cc_copy.png 
DeRez -only icns cc_copy.png > icns.rsrc 
mkdir some_installer 
hdiutil create -volname installer -srcfolder ./some_installer -ov -format UDZO my_app.dmg 
Rez -append icns.rsrc -o my_app.dmg 
SetFile -a C my_app.dmg 

et vous finirez avec:

enter image description here

Est-ce ce que vous cherchez?

Mise à jour:

devrait fonctionner pour icns ainsi

cp /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/macOS.icns . 
cp macOS.icns macOS_copy.icns 
sips -i macOS_copy.icns 
DeRez -only icns macOS_copy.icns > icns.rsrc 
hdiutil create -volname installer -srcfolder ./some_installer -ov -format UDZO my_app.dmg 
Rez -append icns.rsrc -o my_app.dmg 
SetFile -a C my_app.dmg 

enter image description here

+0

Merci, je pense que c'est exactement ce que je cherche, mais je commence par un .icns, pas un .png. Y a-t-il un moyen de le faire à partir d'un .icns, ou dois-je d'abord le convertir en .png? –

+0

Bon travail, merci! Ma seule préoccupation est la page man de Terminal on Sierra 10.12.6 dit "Les outils supportant le développement Carbon, y compris/usr/bin/SetFile, ont été abandonnés avec Xcode 6." Même chose pour DeRez et Rez. Y a-t-il un autre moyen qui ne soit pas déconseillé? –

+1

Pour être honnête, je n'ai jamais utilisé autre chose, donc, je ne connais pas d'autres façons de travailler avec les fichiers dmg. En fait, j'utilise également Rez pour ajouter une déclaration de licence dans le fichier dmg: http://www.owsiak.org/?p=700 – mko

1

Il se peut qu'une étape soit manquante avant votre commande SetFile. Essaye ça.

SetFile -c icnC "path/to/dmg/.VolumeIcon.icns" 
SetFile -a C "path/to/dmg" 

Plus d'informations ici: http://docplayer.net/20858155-How-to-create-a-yosemite-installer.html

+0

Merci - ceci obtient l'icône dans la fenêtre du Finder qui s'ouvre lorsque vous double-cliquez sur le programme d'installation. Pas ce que j'essayais de demander, mais aussi utile. –