First update release

Conveyor 2 is out with a huge number of fixes, usability improvements and even a few new features.

It’s been just over a month since we launched Conveyor to the world. Since then we’ve been hard at work fixing bugs, improving the documentation and adding features in response to feedback from the initial wave of users. Before turning to what’s new we’d like to offer a big thanks to our early adopters for their high quality bug reports and suggestions.

In Conveyor 2 we’ve made strides in several key areas.

Improved Windows install UX

Windows users now get a small EXE file that triggers download and installation of the MSIX by the Windows package manager. This simplifies the Windows UX, makes it more consistent with other Windows apps, avoids problems with a small minority of machines that have fallen behind on software updates, and enables other future features. The .appinstaller file is still generated and used behind the scenes so all the same features are available, and IT admins can easily bypass the EXE to deploy the packages directly across a managed Windows network.

The download process is efficient - it will only fetch the parts of the app that the user doesn’t already have on their system. It will even hard link files between different apps to conserve disk space and speed up the install! The user doesn’t require admin privileges and once complete the app will launch automatically. This yields ultra-fast and lightweight installs that require exactly one click and don’t ask the user any questions. The installer EXE itself is a tightly written Win32 app that’s just a few hundred kilobytes in size. Like any installer it can be deleted after usage. You can also re-run it to force an upgrade check. If an update is available the delta will be downloaded and applied, with the app being restarted if it’s running.

Site metadata

The generated download site now has a simple key=value format file in it. Your app can poll this file to learn about the current release. By default this file includes the app name, version and revision number so your app no longer has to parse complicated platform specific XML to find out if there’s been a new release. The keys to export are configurable and can include custom keys, making this an easy way to supply extra data like release notes.

New features for JVM apps

When packaging JVM apps Conveyor generates the executables the end user actually runs. These small binaries then load the JVM and invoke your app’s code. In this release we’ve added several new config options that let you control these binaries more precisely, especially for the case where an app contains one GUI app and several separate helper binaries. You can now:

  • Specify machine-specific JVM options.
  • Control the options for each CLI launcher and machine combination independently.
  • Control the Windows console mode of each launcher.

We’ve also made the config file syntax simpler for the common case of an extra CLI launcher that differs only by main class name. You can now write just the class name instead of a whole config object. The name of the executable is calculated by transforming the class name to kebab-case and removing any Kt extension.

Simpler and more robust

This release also ships over a dozen bug fixes, usability upgrades, improved error messages and refined pieces of documentation. We’ve improved the scripts used to install self-signed apps, increased compatibility with Apple certificates, fixed build errors that could occur with some specific JDKs and made the download page copy/paste icon work in Firefox.

Since launch we’ve been pretty quiet due to a strict focus on product quality upgrades. With Conveyor now rapidly maturing we’re keen to start blogging about all the new possibilities it enables!