deploy java macos javafx-2 packaging app-bundle

deploy - exe javafx



Iconos personalizados para el fondo DMG para el empaquetado de aplicaciones en MacOSX (2)

¿Has probado CHMODing? He encontrado que este es el problema con experiencias similares.

chmod 777 backgroundpathhere

En la terminal. (En caso de que no lo sepas)

Tengo problemas para agregar íconos personalizados para un fondo DMG en un paquete autónomo construido en MacOSX. He añadido un paquete en el directorio raíz de mi proyecto. El icono personalizado se está cargando desde él, pero el icono de fondo DMG no lo está. Estoy usando Java fx 2.2.3 y jdk1.7.0_09. Aquí está el resultado detallado generado para el mismo.

Detected JavaFX Ant API version 1.2 Launching <fx:jar> task from /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar Launching <fx:deploy> task from /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar Copying 102 files to /Users/apple/NetBeansProjects/JavaFXApplication2/dist Using base JDK at: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk Using default package resource [Bundle config file] (add package/macosx/Info.plist to the class path to customize) Using custom package resource [icon] (loaded from file /Users/apple/NetBeansProjects/JavaFXApplication2/package/macosx/javaFXApplication2.icns) Creating app bundle: /Users/apple/NetBeansProjects/JavaFXApplication2/dist/bundles/JavaFXApplication2.app Config files are saved to /var/folders/vd/nyxf14z53tx56g2_lbqcnfrr0000gn/T/build1722966263281326253.fxbundler/macosx. Use them to customize package. Building DMG package for JavaFXApplication2 Using default package resource [Bundle config file] (add package/macosx/Info.plist to the class path to customize) Using custom package resource [icon] (loaded from file /Users/apple/NetBeansProjects/JavaFXApplication2/package/macosx/javaFXApplication2.icns) Config files are saved to /var/folders/vd/nyxf14z53tx56g2_lbqcnfrr0000gn/T/build1722966263281326253.fxbundler/macosx. Use them to customize package. Using default package resource [dmg background] (add package/macosx/JavaFXApplication2-background.png to the class path to customize) Using custom package resource [volume icon] (loaded from file /Users/apple/NetBeansProjects/JavaFXApplication2/package/macosx/javaFXApplication2.icns) Using default package resource [script to run after application image is populated] (add package/macosx/JavaFXApplication2-post-image.sh to the class path to customize) Using default package resource [DMG setup script] (add package/macosx/JavaFXApplication2-dmg-setup.scpt to the class path to customize) Result DMG installer for JavaFXApplication2: /Users/apple/NetBeansProjects/JavaFXApplication2/dist/bundles/JavaFXApplication2.dmg Config files are saved to /var/folders/vd/nyxf14z53tx56g2_lbqcnfrr0000gn/T/build1722966263281326253.fxbundler/macosx. Use them to customize package.

Aquí está el directorio donde se enumeran todos mis archivos de iconos:

Apples-MacBook-Pro-2:~ apple$ ls -l /Users/apple/NetBeansProjects/JavaFXApplication2/package/macosx/ total 136 -rw-r--r--@ 1 apple staff 1251 Nov 1 19:02 Info.plist -rw-r--r-- 1 apple staff 18017 Nov 1 18:22 JavaFXApplication2-background.png -rw-r--r--@ 1 apple staff 902 Nov 2 13:55 JavaFXApplication2-dmg-setup.scpt -rw-r--r-- 1 apple staff 38115 Jan 19 2006 JavaFXApplication2.icns

Como puede ver, el ícono se carga desde el paquete pero el archivo de fondo DMG no lo está, a pesar de que también he agregado ese archivo en el mismo directorio.


Los fondos para las carpetas en OS X se establecen en el archivo .DS_Store mediante el Finder. Si tiene cuidado de no cambiar la ruta de la carpeta y el nombre del archivo de fondo, puede configurar la imagen de fondo con el Finder y luego copiar el archivo .DS_Store y copiarlo durante el proceso de compilación. Si desea algo mejor, usamos este script de Perl para establecer fondos en las carpetas (depende de otras bibliotecas de Perl, debería poder encontrarlas).

#!/usr/bin/perl use Mac::Finder::DSStore::BuddyAllocator; use Mac::Finder::DSStore; use IO::File; use Data::Dumper; use Config; use Mac::Files; use Mac::Memory; use Mac::Finder::DSStore qw( writeDSDBEntries makeEntries ); use Sys::Filesystem::ID; use File::Basename; die "Usage: $0 <Folder path> <bg path relative to folder>/n" unless @ARGV == 2; $folderPath=$ARGV[0]; while ($folderPath =~ ///$/) { chop($folderPath); } die "$folderPath is not a directory" unless -d $folderPath; $bgPath=$folderPath."/".$ARGV[1]; die "$bgPath is not a file" unless -f $bgPath; # When we''re setting the background for the root, the info lives # in the .DS_Store file in the directory, otherwise it lives in # the parent directory if (Sys::Filesystem::ID::_arg_to_mount_point($folderPath) eq $folderPath) { $dsStoreFile=$folderPath."/.DS_Store"; $ourName="."; } else { $dsStoreFile=$folderPath."/../.DS_Store"; ($ourName, $path, $suffix) = fileparse($folderPath); } #print "Setting bg for $folderPath to $bgPath, .DS_Store file = $dsStoreFile ourName=$ourName/n"; #We use byFilename to keep track of the records for everybody # we will pull out the records for . and remove any BKGD records @otherRecs=(); @ourRecs=(); if (-f $dsStoreFile) { $store = Mac::Finder::DSStore::BuddyAllocator->open(new IO::File $dsStoreFile, ''<''); @records=&Mac::Finder::DSStore::getDSDBEntries($store); foreach my $curRec (@records) { if ($curRec->filename ne $ourName) { push(@otherRecs, $curRec); } else { push(@oldRecs, $curRec); } } if ( @oldRecs != 0) { foreach $curRec(@oldRecs) { if ($curRec->strucId ne "BKGD" && $curRec->strucId ne "pict" && $curRec->strucId ne "bwsp" && $curRec->strucId ne "icvp") { push(@ourRecs, $curRec); } } } } undef $store; if ($ourRec == 0) { push(@ourRecs, &makeEntries($ourName, ICVO => 1, icvo => pack(''A4 n A4 A4 n*'', "icv4", 48, "none", "botm", 0, 0, 0, 0, 0, 1, 0, 100, 1))); } @bgRecs=&makeEntries($ourName, BKGD_alias => NewAliasMinimal($bgPath)); @ourRecs=(@ourRecs,@bgRecs); &writeDSDBEntries($dsStoreFile, @ourRecs, @otherRecs);