Skip to content

Release notes

Conveyor 3

New features

  • A significantly re-organized tutorial which shows how to adapt existing apps earlier and more explicitly.
  • The app.windows.start-on-login key, which ensures your application will be started automatically when the user logs in without any need for user interaction.

New features for JVM apps

  • A better Gradle plugin which:
    • Supports Jetpack Compose 1.2
    • Automatically imports the JDK from the selected Java toolchain when possible. This simplifies configuration further and eliminates duplicate configuration.
  • The template apps were cleaned up. The Compose Desktop template app now uses Compose 1.2 (beta).
  • If JDK inputs don't have a jmods directory, the JDK is bundled into the app as-is without using jlink. This helps with packaging apps using GraalVM.
  • JDK standard library was refreshed.

Smaller improvements

  • Input objects now have an extract property which controls the default behavior of extracting zips and tarballs as they're copied into the package.
  • Config under the top level temp key is dropped before conveyor json renders, allowing you to keep config clean by placing keys there that are only meant to be concatenated into other keys.
  • Fixed: tarballs/zips that contain a Mac bundle no longer trigger the single-root-directory detection.
  • Fixed: errors during EXE enhancement are no longer fatal.

Conveyor 2.1

Fixes and smaller improvements

  • The minimum macOS version for generated apps was lowered to 10.14 (Mojave). Minimum OS verson requirements are now documented.
  • A guidebook section with comparisons to alternative tools was added.
  • Fixed: packaged apps were incompatible with macOS Catalina. Thanks to Apple for assisting with debugging this.
  • Fixed: the generated certificate signing requests can now be re-exported if you deleted them whilst also having a passphrase on your key.

For JVM apps

  • The app.jvm.extract-native-libraries key was added to control JAR stripping.
  • The JDK definitions were refreshed.
  • Fixed: jdeps is no longer run if it's not actually being requested via the detect token.
  • Fixed: the jdk.accessibility module is now always included if AWT/Swing are. If this isn't done then apps might crash at startup if screen readers are installed.

Conveyor 2

New features

Improved Windows end user UX. Conveyor now gives Windows users a small EXE file that triggers download and installation of the MSIX package. This simplifies the Windows UX, makes it more familiar for end users, 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 there and used behind the scenes, so admins can easily bypass the EXE to use the packages directly.

Just like in the previous release the installation process will download only the parts of the MSIX file that the user doesn't already have on their system, will even hard link files between different apps and doesn't require admin privileges. The user will see your icon/logo whilst the download and installation proceeds, and at the end the app will launch automatically. This yields fast installs that require exactly one click. The installer EXE is a tightly written Win32 app that's just a few hundred kilobytes in size. Like any installer it can be deleted after usage, or re-run to trigger a forced upgrade check and relaunch.

Site metadata. Your download site now has a metadata.properties file in the site directory which contains information about the software in the form of key=value text. You can control what else gets written here by changing the app.site.export-keys list, which contains a list of config keys to write out. This file is useful for software that wants to know what the latest version is, without needing to deal with platform specific XML.

New features for JVM apps. You can now:

  • Specify machine-specific JVM options
  • Control the options for each launcher/machine combination independently.
  • Control the Windows console mode of each launcher independently.
  • Control the list of files that are cleaned up after JDK linking with the app.jvm.unwanted-jdk-files key.
  • Write CLI launchers using shorthand config syntax of just the class name, without an object. The name of the executable is taken by transforming the class name to kebab-case and removing any Kt extension.

Fixes and smaller improvements

  • The clipboard copy icon on the generated download page now works in Firefox.
  • The error message you get when using a JDK that doesn't supply Mac builds is now more helpful.
  • The new app task is similar to the package task - it builds an unpackaged app for the machine selected by the app.machines key.
  • The default Windows timestamping authority has changed from DigiCert to Certum due to this DigiCert issue.
  • The JDKs available via the standard library have been refreshed. The GraalVM stdlib configs have been removed from the docs and JDK table due to the need for better GraalVM support for this feature to really shine (the stdlib configs remain so existing build configs should continue to work).
  • Documentation related to code signing has been improved.
  • Fixed usage with recent Azul JDKs, which contain non-standard symlinks in the macOS download.
  • The PowerShell one-liner used for self-signed Windows apps now works when the web server doesn't set MIME types correctly (e.g. for GitHub Releases), and when the system is configured to restrict PowerShell.
  • Fixed notarization failure when using Apple certificates linked to developer accounts that are authorized for iPhone development.
  • Fixed bugs that could occur when a company name in certificates used characters requiring X.500 escape sequences.
  • The template apps no longer require the system properties set by packaging to start up.
  • The CMake template app uses the win32 subsystem (no console) on Windows.
  • Fixed bugs that affected Linux packages built on Windows.

Conveyor 1

First release with support for packaging JVM, Electron and native apps for any OS, from any OS, using a simple and intuitive config syntax and a straightforward command line tool.