diff --git a/.changeset/little-chairs-march.md b/.changeset/little-chairs-march.md new file mode 100644 index 00000000000..8fd57e40c57 --- /dev/null +++ b/.changeset/little-chairs-march.md @@ -0,0 +1,6 @@ +--- +"app-builder-lib": patch +"builder-util-runtime": patch +--- + +feat: generate minimumSystemVersion into latest.yml from platform config diff --git a/packages/app-builder-lib/scheme.json b/packages/app-builder-lib/scheme.json index b5b431f0f73..42255ed5c53 100644 --- a/packages/app-builder-lib/scheme.json +++ b/packages/app-builder-lib/scheme.json @@ -1975,6 +1975,13 @@ ], "description": "The mime types in addition to specified in the file associations. Use it if you don't want to register a new mime type, but reuse existing." }, + "minimumSystemVersion": { + "description": "The minimum os kernel version required to install the application.", + "type": [ + "null", + "string" + ] + }, "packageCategory": { "description": "backward compatibility + to allow specify fpm-only category for all possible fpm targets in one place", "type": [ @@ -2327,6 +2334,13 @@ "MacConfiguration": { "additionalProperties": false, "properties": { + "LSMinimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, "additionalArguments": { "anyOf": [ { @@ -2737,7 +2751,7 @@ "type": "boolean" }, "minimumSystemVersion": { - "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "description": "The minimum os kernel version required to install the application.", "type": [ "null", "string" @@ -2959,6 +2973,13 @@ "MasConfiguration": { "additionalProperties": false, "properties": { + "LSMinimumSystemVersion": { + "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "type": [ + "null", + "string" + ] + }, "additionalArguments": { "anyOf": [ { @@ -3369,7 +3390,7 @@ "type": "boolean" }, "minimumSystemVersion": { - "description": "The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`.", + "description": "The minimum os kernel version required to install the application.", "type": [ "null", "string" @@ -6569,6 +6590,13 @@ "string" ] }, + "minimumSystemVersion": { + "description": "The minimum os kernel version required to install the application.", + "type": [ + "null", + "string" + ] + }, "protocols": { "anyOf": [ { @@ -7438,6 +7466,13 @@ ], "description": "MAS (Mac Application Store) development options (`mas-dev` target)." }, + "minimumSystemVersion": { + "description": "The minimum os kernel version required to install the application.", + "type": [ + "null", + "string" + ] + }, "msi": { "anyOf": [ { diff --git a/packages/app-builder-lib/src/macPackager.ts b/packages/app-builder-lib/src/macPackager.ts index 73422d676e9..09ea315186e 100644 --- a/packages/app-builder-lib/src/macPackager.ts +++ b/packages/app-builder-lib/src/macPackager.ts @@ -499,7 +499,7 @@ export class MacPackager extends PlatformPackager { appPlist.CFBundleName = appInfo.productName appPlist.CFBundleDisplayName = appInfo.productName - const minimumSystemVersion = this.platformSpecificBuildOptions.minimumSystemVersion + const minimumSystemVersion = this.platformSpecificBuildOptions.LSMinimumSystemVersion if (minimumSystemVersion != null) { appPlist.LSMinimumSystemVersion = minimumSystemVersion } diff --git a/packages/app-builder-lib/src/options/PlatformSpecificBuildOptions.ts b/packages/app-builder-lib/src/options/PlatformSpecificBuildOptions.ts index cfef22c0ce7..b646f247bb4 100644 --- a/packages/app-builder-lib/src/options/PlatformSpecificBuildOptions.ts +++ b/packages/app-builder-lib/src/options/PlatformSpecificBuildOptions.ts @@ -199,6 +199,11 @@ export interface PlatformSpecificBuildOptions extends TargetSpecificOptions, Fil cscKeyPassword?: string | null readonly defaultArch?: string + + /** + * The minimum os kernel version required to install the application. + */ + readonly minimumSystemVersion?: string | null } export interface ReleaseInfo { diff --git a/packages/app-builder-lib/src/options/macOptions.ts b/packages/app-builder-lib/src/options/macOptions.ts index b03f1460193..19ce1fa2ce6 100644 --- a/packages/app-builder-lib/src/options/macOptions.ts +++ b/packages/app-builder-lib/src/options/macOptions.ts @@ -132,7 +132,7 @@ export interface MacConfiguration extends PlatformSpecificBuildOptions { /** * The minimum version of macOS required for the app to run. Corresponds to `LSMinimumSystemVersion`. */ - readonly minimumSystemVersion?: string | null + readonly LSMinimumSystemVersion?: string | null /** * Path of [requirements file](https://developer.apple.com/library/mac/documentation/Security/Conceptual/CodeSigningGuide/RequirementLang/RequirementLang.html) used in signing. Not applicable for MAS. diff --git a/packages/app-builder-lib/src/publish/updateInfoBuilder.ts b/packages/app-builder-lib/src/publish/updateInfoBuilder.ts index 76f3bce4213..ad2e839c265 100644 --- a/packages/app-builder-lib/src/publish/updateInfoBuilder.ts +++ b/packages/app-builder-lib/src/publish/updateInfoBuilder.ts @@ -170,6 +170,7 @@ async function createUpdateInfo(version: string, event: ArtifactCreated, release const customUpdateInfo = event.updateInfo const url = path.basename(event.file) const sha512 = (customUpdateInfo == null ? null : customUpdateInfo.sha512) || (await hashFile(event.file)) + const minimumSystemVersion = customUpdateInfo == null ? null : customUpdateInfo.minimumSystemVersion const files = [{ url, sha512 }] const result: UpdateInfo = { // @ts-ignore @@ -180,10 +181,14 @@ async function createUpdateInfo(version: string, event: ArtifactCreated, release path: url /* backward compatibility, electron-updater 1.x - electron-updater 2.15.0 */, // @ts-ignore sha512 /* backward compatibility, electron-updater 1.x - electron-updater 2.15.0 */, + minimumSystemVersion, ...(releaseInfo as UpdateInfo), } if (customUpdateInfo != null) { + if (customUpdateInfo.minimumSystemVersion) { + delete customUpdateInfo.minimumSystemVersion + } // file info or nsis web installer packages info Object.assign("sha512" in customUpdateInfo ? files[0] : result, customUpdateInfo) } diff --git a/packages/app-builder-lib/src/targets/ArchiveTarget.ts b/packages/app-builder-lib/src/targets/ArchiveTarget.ts index 272c25fc76d..34c84240638 100644 --- a/packages/app-builder-lib/src/targets/ArchiveTarget.ts +++ b/packages/app-builder-lib/src/targets/ArchiveTarget.ts @@ -79,6 +79,10 @@ export class ArchiveTarget extends Target { } } + if (updateInfo != null && this.packager.platformSpecificBuildOptions.minimumSystemVersion) { + updateInfo.minimumSystemVersion = this.packager.platformSpecificBuildOptions.minimumSystemVersion + } + await packager.info.emitArtifactBuildCompleted({ updateInfo, file: artifactPath, diff --git a/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts b/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts index 7dada0bf66f..73f0e61302d 100644 --- a/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts +++ b/packages/app-builder-lib/src/targets/nsis/NsisTarget.ts @@ -373,6 +373,10 @@ export class NsisTarget extends Target { updateInfo.isAdminRightsRequired = true } + if (updateInfo != null && this.packager.platformSpecificBuildOptions.minimumSystemVersion) { + updateInfo.minimumSystemVersion = this.packager.platformSpecificBuildOptions.minimumSystemVersion + } + await packager.info.emitArtifactBuildCompleted({ file: installerPath, updateInfo, diff --git a/test/snapshots/mac/macPackagerTest.js.snap b/test/snapshots/mac/macPackagerTest.js.snap index 81045cf9347..378efcf500d 100644 --- a/test/snapshots/mac/macPackagerTest.js.snap +++ b/test/snapshots/mac/macPackagerTest.js.snap @@ -131,6 +131,7 @@ exports[`one-package 1`] = ` "url": "Test App ßW-1.1.0.dmg", }, ], + "minimumSystemVersion": "22.0.4", "path": "Test App ßW-1.1.0-mac.zip", "releaseDate": "@releaseDate", "sha512": "@sha512", diff --git a/test/src/mac/macPackagerTest.ts b/test/src/mac/macPackagerTest.ts index c0c2d0f3c31..644c3ea60de 100644 --- a/test/src/mac/macPackagerTest.ts +++ b/test/src/mac/macPackagerTest.ts @@ -82,7 +82,8 @@ test.ifMac("one-package", ({ expect }) => }, ], }, - minimumSystemVersion: "10.12.0", + minimumSystemVersion: "22.0.4", + LSMinimumSystemVersion: "10.12.0", fileAssociations: [ { ext: "foo",