Conveyor 15 adds update control API
Our July release is here and adds a much demanded new feature: the ability to check for and control the update process from inside your app.
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.
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.
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.
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.
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.
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.
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!
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!
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.
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:
- Uses HTTPS.
- Is safe and fast.
- Sends correct result codes, which S3 out of the box may not do.
- Doesn’t list the contents of your site.
- Can be easily customized for advanced behavior like cache control or custom error pages.
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.
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!
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.
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.
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?
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.