Feedback JEP 343: jpackage --win-menu

Andy Herrick andy.herrick at oracle.com
Thu Sep 12 15:53:17 UTC 2019


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.herrick at oracle.com <mailto:andy.herrick at 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ʎ ɟı


More information about the core-libs-dev mailing list