I filed https://bugs.openjdk.java.net/browse/JDK-8230920 to fix this.

/Andy

On 9/12/2019 11:26 AM, Andy Herrick wrote:
yes - clearly something wrong here - it is supposed to find MuseIDE-launcher.cfg and create shortcut to MuseIDE-launcher - but it has come up with jvm.cfg - a completely unrelated file.

lets see - your input dir is the lib dir of your runtime-image. the app dir will be populated with everything in the input dir, so it gets jvm.cfg which is in every runtime's lib dir.

Not sure why you want to do this, but I think it points out we should not be satisfied that a file has extension "cfg", we should also look at it and confirm it looks like a valid jpackage app-image <app>.cfg file, before deriving the name of the app from the name of the cfg file.

/Andy

On 9/12/2019 11:08 AM, Christopher Merrill wrote:
Thanks Andy.

Ok, so the image was created in the previous step using:
C:\Apps\OpenJDKs\jdk-14/bin/jpackage.exe --input D:\Work\MuseProject\ide\closed\install\build\image\lib --main-jar MuseIDE-launcher-3.1.jar --main-class org.musetest.ide.launcher.Bootstrap --output D:\Work\MuseProject\ide\closed\install\build\jpackage --name MuseIDE-launcher --identifier org.musetest.ide.launcher.Bootstrap --runtime-image D:\Work\MuseProject\ide\closed\install\build\image

There is only one .cfg file in the .../build/image folder, 'jvm.cfg', which contains:
-server KNOWN
-client IGNORE

However, the output folder (../build/jpackage/MuseIDE-launcher/app) of the second jpackage step which I referenced in the previous message contains a MuseIDE-launcher.cfg file with:
[Application]
app.name <http://app.name>=MuseIDE-launcher
app.version=1.0
app.runtime=$APPDIR\runtime
app.identifier=org.musetest.ide.launcher.Bootstrap
app.classpath=$APPDIR\app\MuseIDE-launcher-3.1.jar;$APPDIR\app\dynamic-classloader-0.2.jar;$APPDIR\app\IdeLaunchUpdate-2.3.jar;$APPDIR\app\jrt-fs.jar;$APPDIR\app\update4j-1.2.2.jar
app.mainjar=$APPDIR\app\MuseIDE-launcher-3.1.jar
app.mainclass=org.musetest.ide.launcher.Bootstrap
[JavaOptions]
[ArgOptions]

I didn't create or supply that file...so I assume jpackage did.

Could it be the missing windows start menu item be affected by the location of the main class?  In my case, it isn't in the main jar. In fact, the main jar is empty except for the manifest, which contains only the manifest version declaration. The main class is located in one of the other jar files, which are correctly included in the resulting image and installer. The .cfg correctly includes those JARs on the classpath (and it all works fine when installed). I don't really see how that should affect the creation of a shortcut to the .exe, but thought I would mention it.

TIA!
Chris



On Thu, Sep 12, 2019 at 10:34 AM Andy Herrick <andy.herr...@oracle.com <mailto:andy.herr...@oracle.com>> wrote:

    Strange ...

    I can't seem to reproduce any scenario where msi installer created by
    jpackage won't install a shortcut, but from the message:

    "Multiple launchers found in predefined app-image. jvm will be
    used as
    primary launcher."

    It seems that  you are using a predefined app-image  and there are
    multiple launchers in the app-image, and the code is choosing
    "jvm" as
    the primary one (the one a shortcut will be created for).

    This may be the wrong launcher.  When an installer is built for an
    existing app-image, it doesn't know the name of the app, it looks for
    the config file  in <root>/app/

    If there are multiple cfg files (like you built the app-image with
    --add-launcher jvm=jvm-launcher.properties) it is just taking the
    first one.

    Is it possible this is what is happening in your case ?

    /Andy

    On 9/12/2019 9:54 AM, Christopher Merrill wrote:
    > I am using build 14-jpackage+1-35 with WiX 3.11.1.2318 to build
    an MSI
    > installer. If I am understanding the comments in thread "RFR:
    JDK-8229779:
    > Shortcut creation policy", a start menu entry (and desktop
    shortcut?)
    > should always be produced with this version of jpackage command line
    > options? The MSI installer I've created does not create a start
    menu entry,
    > even when I include the --win-menu option. Other people seem to
    have the
    > opposite problem (start menu item when they don't want it), so
    clearly I'm
    > doing something wrong...
    >
    > C:\Apps\OpenJDKs\jdk-14/bin/jpackage --package-type msi --output
    > D:\Work\MuseProject\ide\closed\install\build\jpackage --name
    > MuseIDE-launcher --app-image
    >
D:\Work\MuseProject\ide\closed\install\build\jpackage/MuseIDE-launcher
    > --win-per-user-install --win-menu --app-version 3.1 --name
    MuseIDE-Launcher
    >
    > Other than this message, which I assume is a warning, the
    execution is
    > successful:
    >    Multiple launchers found in predefined app-image. jvm will be
    used as
    > primary launcher.
    >
    > Are there other options that would influence getting a start
    menu item
    > added by the installer?
    >
    > FWIW, I am using gradle with the org.beryx.runtime plugin to
    create the
    > image and installer. Are there settings/options/stuff in the
    image that
    > would affect creation of the start menu item?
    >
    > TIA!
    > Chris
    >



--
¡ɹǝʌo ǝɯ lloɹ 'sıɥʇ pɐǝɹ uɐɔ noʎ ɟı

Reply via email to