Skip to content

Comparisons

How does Conveyor compare to ...

Alternatives for JVM desktop apps

1. jpackage

  • It creates packages/installers that can't update themselves.
  • It can only build packages for the platform it's being run on, so you'll need a CI setup to make packages for every platform. Conveyor can build packages for all supported platforms from your developer laptop regardless of OS. That makes it a lot more convenient to knock out quick, low effort, low maintenance apps.
  • It doesn't attempt to simplify code signing in any way. Conveyor can derive all the signing keys you need from a single small piece of root entropy you can write down with a pen and paper, can create certificate signing requests for you and has deep support for self-signing.
  • It is driven by command line flags, rather than a configuration file.
  • It generates .MSI or installer EXEs on Windows. MSI is a deprecated format that Microsoft no longer develop, and installer EXEs cause headaches for IT departments. Conveyor generates MSIX packages with a small optional EXE that invokes the Windows package management API to trigger the install. This offers a variety of benefits and Microsoft regularly adds new features to this format.
  • It is free, open source and comes with the JDK. Conveyor is free only during the introductory period; after that it will be free only for open source apps.
  • jpackage is, as the name implies, only for Java apps. Conveyor works for any kind of app including Electron and native.

2. install4j

  • install4J has been around a lot longer than Conveyor and is essentially an IDE for creating interactive installers. If you have complex installation needs like user interaction or device driver setup, you should check it out. Conveyor builds packages rather than installers and has no plans to enable user interaction.
  • install4j is GUI driven and uses XML to store its configuration. Conveyor doesn't have a GUI, so you'll have to read the user guide, but the config syntax is more convenient and powerful than XML. For example you can easily include configuration generated by external programs, include statements are supported, you can import JSON or .properties files as config and so on.
  • They are both commercial products. Conveyor is cheaper than install4j.
  • It is, as the name implies, only for Java apps. Conveyor supports any kind of app including Electron and native.

3. jdeploy

  • jdeploy yields a non-standard user experience somewhat similar to Java Web Start e.g. with a custom installer app on macOS that then downloads a "JRE" separately. Conveyor provides a relatively standard experience with a small installer EXE on Windows (or MSIX packages for admins), and a bundled / linked JVM.
  • Apps are hosted on NPM and must be accessed via the jdeploy website. Conveyor's output doesn't rely on any servers other than your own (or GitHub Releases).
  • On macOS the signing infrastructure is effectively bypassed by using a stub that will download and execute anything un-sandboxed.
    • This is convenient for the developer but leads to the risk of jdeploy being permanently revoked if malware ever abuses it. If that were to happen there would be no way to execute any jdeploy-using apps, nor update them.
    • Conveyor follows the spirit of each operating system's rules by making it as easy as possible for developers to sign their apps, whilst also allowing for self signed apps using small CLI scripts that enable non-CA-signed installs.
    • Conveyor may support the execution of sandboxed apps without CA signing in future, similar to how web browsers do it.
  • jdeploy is free and open source. Conveyor is free only during the introductory period; after that it will be free only for open source apps.
  • jdeploy is, as the name implies, only for Java apps. Conveyor works for any kind of app including Electron and native.

Alternatives for servers

Conveyor also supports server apps and can thus be compared to container tools like Docker. In contrast to those tools, Conveyor generates Linux packages containing systemd services. As of August 2022 Conveyor only supports DEB packages, but RPM support is in development.

It's not always an appropriate choice but when you can use such servers these provide a variety of advantages over containers, especially for single instance servers:

  • SystemD has better service management features like task dependencies, activation, logging etc. Conveyor packages will configure your server to automatically start at boot, terminate cleanly on shutdown or reboot, and stop/restart across upgrades, all without you doing anything.
  • Conveyor lets you specify dependencies on other packages like database engines which will then be installed, configured and started by your distribution. This would require additional setup in Docker. Conveyor will automatically discover dependencies on third party shared libraries by examining ELF headers and generate the package dependencies for you.
  • SystemD has support for sophisticated sandboxing. Conveyor provides standard config for fast, quick sandboxing of servers so they don't run as root, and systemd service keys provide fine grained permission control if you need it.
  • SystemD has better command line tools, including neat third party tools like sysz.
  • Software managed by Conveyor doesn't need a separate container manager like the Docker daemon.
  • Docker requires care to avoid accidentally deleting persistent data saved to disk by the server. SystemD is harder to misconfigure.
  • Distribution package managers have evolved a wealth of features useful for devops and sysadmin teams, like merging changes to config files in /etc (DEBs produced by Conveyor support the Debian conffiles mechanism).

You can run clusters of servers using Conveyor packages with a tool like Ansible, but if you want to use Kubernetes then you'll need to create containers. Containers, systemd and Conveyor can be nicely combined if you use a Docker-compatible container manager like podman, which would give you the best of all worlds.

Alternatives for Electron apps

The Electron website points users towards Electron Forge for app packaging. Compared to Conveyor:

  • Electron Forge must be run on each platform it's building packages for. With Conveyor there's no need to find machines for each target OS to build packages. You can make packages for every OS on your laptop. That makes it a lot more convenient to knock out quick, low effort, low maintenance apps.
  • Electron Forge is relatively poorly documented. For example, as of the time of writing (August 2022), the documentation pages for the "makers" (output formats) link directly to JavaScript object API docs rather than examples, some of which (e.g. the RPM maker and the AppX maker) don't provide any descriptions or usage information at all.
  • Electron Forge has more real world usage. As of August 2022, Conveyor's Electron support is still quite new.
  • Electron Forge supports ASAR files, which are a startup time optimization. Conveyor doesn't currently produce these.
  • Electron Forge is free and open source. Conveyor is free only during the introductory period; after that it will be free only for open source apps.
  • Electron Forge, as the name implies, only works for Electron apps. Conveyor can be used for any kind of app, including JVM and native apps.

There are several update engines that can be used with Electron. The official/standard engine is called Squirrel and comes with it out of the box. However these update systems all have a variety of problems:

The other standard features of Conveyor can also save a lot of time and hassle vs tools like Electron Forge:

  • Use a convenient config syntax with more features than raw JSON, whilst still being able to import JSON if you need it.
  • Handles all the details of code signing without native tools, which are often awkward to use.
  • Can self-sign if you don't want to use signing keys. Other tools make unsigned apps if you don't have keys, but these don't integrate with the host operating system or virus scanners properly and can be extremely hard to install.
  • You get a self-contained download site with HTML that detects your users operating system and CPU.