Compatibility levels¶
Configs are versioned via the conveyor.compatibility-level
key. When missing it's set to the current major version of Conveyor. The idea
is that you keep this setting along with the rest of your config in version control, and that allows defaults to change over time. You can
opt-in to new behaviour that might not be fully backwards compatible at your leisure.
Additionally, using new config keys requires increasing your compatibility level. This is to catch the case where the Conveyor being used is older than the one expected by the author of the config.
Here is how behaviour changes at each level.
Level 12¶
The default value for app.windows.manifests.msix.background-color
is now transparent
. Previously, the default was #ffffff
.
From level 12 onwards, the Temp directory is no longer devirtualized on Windows. This avoids problems with Microsoft Store permission reviews. Instead, for JVM apps the temp directory is pointed into the user's home directory, to work around bugs in the Windows kernel that would otherwise break TCP connections.
These new keys were added:
- app.electron.asar
- app.electron.prune
- app.windows.installer.theme
- app.site.theme
- app.theme
Level 11¶
These new keys were added:
- app.mac.deltas
- app.site.move-from.base-url
- app.site.move-from.copy-to
- app.site.move-from.github.oauth-token
- app.site.move-from.github.pages-branch
- app.site.move-from.s3.region
- app.site.move-from.s3.access-key-id
- app.site.move-from.s3.secret-access-key
- app.windows.exe-installer-basename
Sparkle deltas are generated for up to 5 previous versions by default.
Level 10¶
These new keys were added:
- app.linux.debian.distribution.mirrors
- app.linux.debian.distribution.name
- app.site.ignore-connection-issues-for-hosts
- app.site.show-conveyor-badge
- app.windows.manifests.msix.append-publisher-id-to-appinstaller
- app.windows.manifests.msix.reinstall-if-required
- app.windows.manifests.msix.update-escape-hatch.exe
- app.windows.manifests.msix.update-escape-hatch.run-if
- app.windows.manifests.msix.use-update-escape-hatch
The escape hatch mechanism is enabled by default starting from compatibility level 10. It may be enabled for all compatibility levels in a later release.
The distribution package index used for computing dependencies for Linux DEB packages changes from Ubuntu Focal to Ubuntu Jammy.
Level 9¶
These new keys were added:
- app.compression-level
- app.mac.check-binary-versions
- app.windows.manifests.msix.application-id
- app.windows.store.publisher
- app.windows.store.publisher-display-name
- app.windows.store.identity-name
Optional inputs are now supported.
Level 8¶
These new keys were added:
- app.site.github.oauth-token
- app.site.github.pages-branch
- app.site.s3.bucket
- app.site.s3.access-key-id
- app.site.s3.secret-access-key
- app.windows.manifests.msix.additional-properties-xml
- app.jvm.windows.override-appdata-env
- app.windows.manifests.msix.virtualization.excluded-directories
At level 8 or higher the LocalAppData\Temp
directory is de-virtualized automatically for JVM apps. This is to work around a Windows bug.
Some defaults change at this level. When the compatibility level is 7 or lower:
- The app icons are assumed to match
icon-*.png
and be next to theconveyor.conf
file. - On Linux, some symlinks are added to your app directory which point into /var
- For JVM apps:
- library extraction is on by default
- Some extra system properties are added
At level 8 or higher these defaults were changed:
- Icons are now generated automatically.
- The default symlinks were removed.
- Native library extraction from JARs is turned off and the extra system properties were moved to an include file.
To re-activate library extraction add this to your config:
include required("https://raw.githubusercontent.com/hydraulic-software/conveyor/master/configs/jvm/extract-native-libraries.conf")
The old default config added before level 8 looked like this:
app {
icons = [ "icon-*.png" ]
linux.symlinks = [
${"$"}{app.linux.prefix}/bin/${"$"}{app.fsname} -> ${"$"}{app.linux.install-path}/bin/${"$"}{app.fsname}
logs -> /var/log/${"$"}{app.long-fsname-dir}
data -> /var/lib/${"$"}{app.linux.var-lib-dir}
cache -> /var/cache/${"$"}{app.long-fsname-dir}
]
jvm {
extract-native-libraries = true
system-properties {
// Java Native Access: https://github.com/java-native-access/jna/issues/384
jna.nosys = false
// FlatLAF: a modern Swing theme.
flatlaf.nativeLibraryPath = system
}
}
}
Level 7¶
The following keys were added:
- app.site.consistency-checks
- app.windows.manifests.msix.dependencies
- app.windows.override-icon
At level 7 or above:
- Windows installs will no longer downgrade. This is to align behavior with macOS and Linux which don't support downgrades.
- DLLs in the generic app inputs for JVM apps are also moved to the JVM directory out of the
app
directory. This places them in the same location as other libraries and ensures they can be found bySystem.loadLibrary
.
Level 6¶
The following keys were added:
- app.site.flat
Level 5¶
The following keys were added:
- app.url-schemes
- app.site.copy-to
- app.mac.bundle-extras
- app.mac.bundle-extras.amd64
- app.mac.bundle-extras.aarch64
- app.updates
Level 4¶
The following keys were added:
- app.site.extra-header-html
At level 4 or above, EXEs in JVM generic app inputs are moved to the JVM directory, out of the app
directory.
Level 3¶
The following keys were added:
- app.windows.start-on-login
Level 2¶
Keys were added to control JVM options per machine, and additionally:
- app.jvm.unwanted-jdk-files
- app.jvm.extract-native-libraries