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);