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.
Here is how behaviour is by incrementing the level.
Level 9¶
- Optional inputs are now supported.
- New keys:
- 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
Level 8¶
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 searched for in files called
icon-*.png
- On Linux various symlinks are added to your app directory, pointing 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 migrate to the new library extraction approach, 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 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
}
}
}
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
Level 7¶
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
.
The following keys were added:
- app.site.consistency-checks
- app.windows.manifests.msix.dependencies
- app.windows.override-icon
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¶
At level 4 or above, EXEs in JVM generic app inputs are moved to the JVM directory, out of the app
directory.
The following keys were added:
- app.site.extra-header-html
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