Search code examples
macosswingnetbeansjavafxdmg

javafxpackager Positions Applications Folder Incorrectly On Mac OS X


I'm using Mac OS X Mavericks and JDK 1.7.45 to package a Swing application using the javafxpackager tool for Mac. Unfortunately the end result looks like this (hid the icon/name):

enter image description here

Scrolling a bit to the right clarifies the picture:

enter image description here

Apparently the Applications image was placed incorrectly within the DMG. I have no idea how that can happen or what I might have done that triggered this, I just used the standard NetBeans packaging script. Any hints or directions would be appreciated.


Solution

  • OK this turned out to be rather simple, it seems that the tool generates the script:

    tell application "Finder"
      tell disk "MyApplication"
        open
        set current view of container window to icon view
        set toolbar visible of container window to false
        set statusbar visible of container window to false
    
        -- size of window should match size of background
        set the bounds of container window to {400, 100, 917, 370}
    
        set theViewOptions to the icon view options of container window
        set arrangement of theViewOptions to not arranged
        set icon size of theViewOptions to 128
        set background picture of theViewOptions to file ".background:background.png"
    
        -- Create alias for install location
        make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
    
        -- First, move all files far enough to be not visible if user has "show hidden files" option set
        -- Note: this only make sense if "hidden" files are also visible on the build system
        --   otherwise command below will only return list of non-hidden items
        set filesToHide to the name of every item of container window
        repeat with theFile in filesToHide
             set position of item theFile of container window to {1000, 0}
        end repeat
    
        -- Now position application and install location
        set position of item "MyApplication" of container window to {120, 135}
        set position of item "Applications" of container window to {390, 135}
    
        close
        open
        update without registering applications
        delay 5
      end tell
    end tell
    

    Which is problematic since it only delays for 5 (I assume seconds) so I increased this to 20 and it worked. The script should be placed under package/macosx/MyApplication-dmg-setup.scpt.