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.
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.
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.
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.
Contributed by Godwin Kunale Nana Yaw
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
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.
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.
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
run command and has many usability upgrades for
developers. Let’s dive in!
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.
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
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.