RFR: 8150442: Enforce Supported Platforms in Packager for MSI bundles

Alexey Semenyuk asemenyuk at openjdk.org
Thu Feb 6 21:39:50 UTC 2025


Enable MSI installers to block installation if the version of Windows is too old.

jpackage will read major and minor OS versions from PE headers of the main launcher and `java.dll` in the app image. The combined version is the minimal Windows version these executables can run. Thus, it will be a lower bound for the Windows version the installer supports. 

The value of the combined version is passed as `JpExecutableOSVersion` WiX variable to a new `os-condition.wxf` WiX fragment. The fragment compares the value of `JpExecutableOSVersion` WiX variable with the value of `VersionNT` MSI property. If the value of the latter is less the installation is blocked.

The fragment can be overridden in the resource directory. This makes this feature fully customizable.

-------------

Commit messages:
 - Bugfix and corresponding unit test
 - Copyright year updated
 - Clean trailing whitespaces
 - Make it work when both the main launcher and java.dll are missing
 - Update doc and add "os-condition.wxf" to the resources
 - Remove debug output
 - Remove accidentally added file
 - Merge branch 'master' into JDK-8150442
 - Merge branch 'master' into JDK-8150442
 - Add ExecutableOSVersionTest test
 - ... and 2 more: https://git.openjdk.org/jdk/compare/64bd8d25...c208cfc5

Changes: https://git.openjdk.org/jdk/pull/23472/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23472&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8150442
  Stats: 407 lines in 14 files changed: 396 ins; 2 del; 9 mod
  Patch: https://git.openjdk.org/jdk/pull/23472.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23472/head:pull/23472

PR: https://git.openjdk.org/jdk/pull/23472


More information about the core-libs-dev mailing list