2012-11-03 15 views
19

Ich habe Probleme beim Hinzufügen von benutzerdefinierten Symbolen für einen DMG-Hintergrund in einem eigenständigen Paket auf MacOSX. Ich habe ein Paket im Stammverzeichnis meines Projekts hinzugefügt. Das benutzerdefinierte Symbol wird geladen, das DMG-Hintergrundsymbol jedoch nicht. Ich benutze Java fx 2.2.3 und jdk1.7.0_09. Hier ist die ausführliche Ausgabe, die für dasselbe generiert wird.Benutzerdefinierte Drop-In-Symbole für DMG-Hintergrund für die Anwendungsverpackung auf MacOSX

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. 

Hier ist das Verzeichnis, in dem alle meine Icon-Dateien aufgelistet sind: -

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

Wie Sie das Symbol aus dem Paket, aber die DMG Hintergrund Datei ist allerdings nicht geladen sehen können, wird auch Ich habe diese Datei auch im selben Verzeichnis hinzugefügt.

+0

Ich habe das gleiche Problem, aber mit der Datei '.icns' auch. Interessiert, wenn eine Fehlerbehebung gefunden wird. Ich wünschte, man könnte den Pfad direkt angeben oder die Ressourcenauflösung debuggen. – metasim

Antwort

-1

Haben Sie versucht CHMODing es? Ich habe festgestellt, dass dies das Problem mit ähnlichen Erfahrungen ist.

chmod 777 backgroundpathhere 

Im Terminal. (Nur wenn Sie es nicht wissen)

1

Hintergründe für Ordner in OS X werden in der .DS_Store-Datei vom Finder festgelegt. Wenn Sie den Ordnerpfad und den Namen der Hintergrunddatei nicht ändern, können Sie das Hintergrundbild mithilfe des Finders festlegen und dann die .DS_Store-Datei kopieren und während des Erstellungsprozesses kopieren. Wenn Sie etwas Besseres wollen, verwenden wir dieses Perl-Skript, um Hintergründe für Ordner zu setzen (es beruht auf einigen anderen Perl-Bibliotheken, Sie sollten sie finden können).

#!/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);