Enterprise signing services in Conveyor 14

Conveyor 14 is out and we’ve added a long-awaited feature: support for swapping out the built-in signing engine. For companies that operate in-house signing servers this is often a mandatory requirement, and now it’s easy to integrate Conveyor based releases with those processes. Conveyor 14 also includes numerous bug fixes and usability improvements, driven by user feedback on what they find easy and hard. So let’s take a look at what’s new.

Read more ...

December 2023 release

Our December release of Conveyor is primarily a bugfix and maintenance update. Even so, we found time to add a few small features that should make your life easier. Conveyor has always had a laser-like focus on making code signing painless and in this release we’ve done even more work on making it a breeze.

Read more ...

Conveyor 12: The Halloween Release

The November updates to Conveyor add some great new features, polishes the appearance of the generated assets and makes it easier to migrate Electron install bases from Squirrel. Let’s see what’s new.

Read more ...

ARM support for Windows and Linux

The 64-bit ARM CPU architecture (aarch64) is on a tear right now. Not only has Apple Silicon pushed new boundaries in desktop performance but Amazon, NVIDIA and other companies have also developed their own high end ARM CPUs. Conveyor 12 completes our support for the AARCH64 CPU architecture by adding support for Windows and Linux ARM packages.

Read more ...

Shipping Electron Apps From CI

Developers want deployment of their application to be handled by their CI/CD service, often in the cloud where hardware is managed for you. Shipping Electron apps from a continuous build was already complicated, and this summer’s changes to Microsoft’s signing rules make it even moreso. Starting from May 2023 new certificates may no longer be stored in files. You have to use hardware security modules instead. Although this can improve security by avoiding the need to revoke stolen keys, it can seriously complicate your setup. Hardware headaches can be eliminated by using a cloud signing service, so let’s take a look at different ways to do it.

Read more ...

Deltas diffed

You’ve got piles of files. I’ve got newer piles of files. How can you catch up with me most efficiently?

This is the delta update problem and there are competing algorithms for solving it. Unfortunately there’s not much out there that compares them, so today we’re going to fix that. We’ll take a look at the “classic” binary delta approach as used by Sparkle (we recently added support for these deltas), Chrome’s Courgette and Zucchini, the Windows MSIX block map, Docker, ChromeOS and the approach taken by casync. These are all different schemes, which gives us good coverage of the ideas in this space. These algorithms have critical importance to the UX of software updates. Plus, they’re just interesting! So let’s dive in and take a look.

Read more ...

Conveyor updates for August

The latest Conveyor update adds delta updates for macOS, lets you migrate your update site URL, has a new tutorial on how to use HOCON and updates to the latest version of the Apple notarization protocol. Let’s take it for a test drive!

Read more ...

How to Package Electron Apps for distribution with Conveyor

Contributed by Godwin Kunale Nana Yaw

In this blog post, I’ll delve into Conveyor and discover how it simplifies the deployment of Electron apps. Whether you’re starting a new project or working with an existing one, I’ll guide you through the setup process of Conveyor. Additionally, I’ll provide insights into potential challenges when dealing with JavaScript package managers other than npm. Let’s dive in!

Read more ...

Conveyor updates for July

It’s that time again! The Conveyor July release focuses on code signing improvements. It adds support for cloud code signing services, lets you change your signing identity, improves HSM compatibility and finally also improves the conformance of our generated Mac signatures. You can update in the usual manner, by starting the app GUI and clicking “Check for updates”, or on Linux using apt-get.

Code signing is an obscure topic for most developers, so we plan to do a series of blog posts over the coming months covering some of the less well known aspects. In this post we’ll cover the new support for signing services and identity changes.

Read more ...

Serving a download site with AWS

Conveyor can deploy and update desktop apps without needing app stores or special update servers. Many of our users like to use AWS S3 to serve their files, but configuring S3 can be complicated. The goal of this guide is to provide simple, step-by-step instructions to set up a state-of-the-art static website using Amazon AWS that:

  1. Uses HTTPS.
  2. Is safe and fast.
  3. Sends correct result codes, which S3 out of the box may not do.
  4. Doesn’t list the contents of your site.
  5. Can be easily customized for advanced behavior like cache control or custom error pages.

Read more ...

Conveyor updates for May

The May 2023 release (v9) simplifies releasing to the Microsoft store, better protects your root key when using a Mac, improves usability in various ways and contains the usual set of bug fixes.

Read more ...

Conveyor updates for March

The March Conveyor update makes it simple to define file associations for every OS, and can automatically release to Amazon S3 and GitHub Releases. It improves the UX of self-signed apps on Windows, adds a new conveyor run command and has many usability upgrades for developers. Let’s dive in!

Read more ...

Deploying apps with JCEF

The Chromium Embedding Framework (CEF) makes it easy to instantiate a Chrome webview inside your C++ app. The same team also provides JCEF which brings that capability to any JVM language. Recently a customer came to us with an interesting request: how exactly do you deploy an app that uses JCEF? There are over 100 million installs of CEF around the world, and now we’ll show you how to add a few more.

Read more ...

GitHub Actions

Our goal at Hydraulic is to make deploying desktop apps as easy as deploying a web app. The new Conveyor GitHub Action makes it simple to get continuous deployment of your app with nothing more than a git push. This is especially useful for apps written in languages that compile ahead of time to native code like C++, Rust or Dart.

The new action takes care of downloading, installing and running Conveyor, as well as caching both the installation and the build cache, so releasing is faster on subsequent runs. Read on to learn how to use it.

Read more ...

In-JAR signing for the JVM

The latest Conveyor update introduces a new solution for an old problem faced by many JVM apps: how to code sign native libraries bundled inside JARs?

Read more ...

Flutter support

You can now easily package and update Flutter apps with Conveyor, a tool that makes desktop distribution as easy as it is on mobile (or easier!). Distributing your Flutter app with Conveyor not only gives you useful features like online updates, but also a really simple config and workflow. Let’s dive in and see just how fast we can create a new app and get it online.

Read more ...

February updates

Our February update is here, with some great new features and usability improvements.

Conveyor can now distribute Flutter apps, draw icons for you if you don’t have them already, do in-JAR code signing to make using native libraries easier for JVM apps, use EV certificates stored in YubiKeys, bundle the Microsoft VC++ redistributables, and catches many common errors.

Read more ...

Packaging Electron apps

Distributing Electron apps with Conveyor has a bunch of advantages and doesn’t take long. Packaging GitHub Desktop lets us see what the configuration looks like for a production-grade app. We’ll also use other GitHub services like Releases, Pages and Actions. The benefits can be seen in the nearly 2,000 lines of code that can be deleted vs the original Squirrel based solution.

Read more ...

December Updates

Christmas is approaching and we have a pile of new features for you to unwrap! Our December update makes it easy to keep your client in sync with a changing server protocol using aggressive updates, Electron support has been improved and you can now easily associate your app with URL handlers, set HTTP headers on URL inputs, upload your site via SFTP and more.

Please note that this release is the last major feature release of the introductory period. Starting in the new year Conveyor will transition to being a normal billed product in line with our announced plans from the start.

Read more ...

Why desktop apps matter

I’ve been meaning to write this essay for a while, but the recent kerfuffle over Chrome killing off JPEG XL pushed me to finally do it. This will be an argument in three parts: firstly that desktops are more important than they’re given credit for, secondly that browsers are poorly serving us on those desktops, and finally a sketch of what can concretely be done about it (which is why we built Conveyor).

Read more ...

October Updates

For the October release we’ve focused on polishing, bug fixes and community awareness. On Windows we improved the appearance of icons in the task bar. We upgraded certificate handling, made it easier to customize the generated download page, fixed some bugs, refreshed the AtlantaFX sampler and integrated Conveyor with the docs for Jetpack Compose. Read on for details.

Read more ...

September Updates

We’ve updated Conveyor with some new features, and in particular better support for Kotlin/Jetpack Compose. With the improved support we’re laying the groundwork for one possible post-web future.

Read more ...

Case study: AtlantaFX

AtlantaFX is a new CSS theme for JavaFX that implements a modern design language using the GitHub Primer color system. JavaFX is an advanced and mature desktop UI toolkit that can be used from any language with a JVM implementation, not just Java. You can of course use JVM-first languages like Kotlin, Scala and for Lispers Clojure (via the cljfx functional/reactive UI library). But in addition, thanks to GraalVM, you can also use languages like Python 3, JavaScript, Ruby, R, and even binary languages like WebAssembly or LLVM bitcode (i.e. any language that can compile to these targets can also access JVM libraries).

You can now download the AtlantaFX sampler app packaged with Conveyor and it’ll keep itself up to date as the project evolves from the current early development stage to full production maturity.

In this article we’ll show how the packages were made and along the way, see how to package JavaFX apps that don’t use Gradle. The packaging was contributed upstream and is now a part of the AtlantaFX project itself.

Read more ...

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.

Read more ...

Introducing Conveyor

Hello world! Conveyor is a new tool that makes distributing desktop and command line apps as easy as shipping a web app. It generates self-upgrading packages for Windows, macOS and Linux using each platform’s native package formats, you don’t need to have those operating systems to build them, and it looks like this:

It can do all this from whatever operating system you like because it implements all the packaging, signing and Apple notarization logic itself. Drop it into any continuous build system or run it from your laptop. The results will be the same: a simple config file goes in one end, an incremental and parallel build system processes it and out the other end comes a fully fledged repository ready for publishing. Try installing a sample app and see for yourself.

Read more ...