Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native Application Packaging #8

Open
multimeric opened this issue Jul 26, 2017 · 2 comments
Open

Native Application Packaging #8

multimeric opened this issue Jul 26, 2017 · 2 comments

Comments

@multimeric
Copy link
Contributor

multimeric commented Jul 26, 2017

Problem

The XMage launcher is provided as a jar file, which is cross-platform, but does not install as a native application.

Advantages of Solution

Packaging the launcher as a native application means users get:

  • A desktop shortcut
  • A menu launcher (Start menu for Windows, launcher for Ubuntu etc.)
  • Installation of XMage into a sane location. For most users, they download the launcher, and then run it in their Downloads directory, meaning XMage ends up being installed there (which is not a good place for it to live)
  • Once we have native packages for all main OSes (msi, dmg, deb, rpm), we can also start phasing out the Java downloader in the launcher
@multimeric
Copy link
Contributor Author

multimeric commented Jul 27, 2017

Tasks needed for full application packaging:

  • Enable Travis CI builds for the launcher. This will do the Linux and Mac builds
  • Enable Appveyor builds for the launcher. This will do the Windows builds
  • Make Windows builds with packaged JRE using javabuilder
  • Make iOSX builds with packaged JRE using javabuilder
  • Make separate deb build that has java-8 as a dependency
  • Make separate rpm build that has java-8 as a dependency
  • Get the launcher to only download Java if it isn't already installed (for platforms that can't use any of the above packages)
  • Get the launcher to install everything where the user has write permissions (not into the current directory). This is limiting installation into Program Files

@multimeric
Copy link
Contributor Author

multimeric commented Aug 27, 2017

JRE Packaging

Requirements

  • Both the launcher and XMage itself need the JRE to run.
  • XMage needs to regularly update its version of the JRE
  • Ideally users will not ever have to install Java themselvs

Solutions

  • The simplest solution is to use the bundled JRE that comes with the javapackager bundle for the launcher, and let the launcher install another version of Java for XMage. However this means installing Java twice, which is unfortunate
  • We could also not bundle the JRE with the installer, but this means the users have to install Java themselves, which is somewhat annoying
  • The best option so far is to package the launcher with the latest JRE, and then get XMage to run using that same JRE. This prevents the JRE being installed multiple times, and we don't have to change our system much at all - the launcher and XMage can still be update separately

Tasks

To achieve this, we have to:

  • Ensure the bundled JRE includes executables (see here and here)
  • Ensure we are building bundles with the latest JRE always. This means changing the Appveyor and Travis builds to update Java before building the bundle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant