diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/dsl/PlatformSettings.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/dsl/PlatformSettings.kt index d70ca65adf9..3396ebababe 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/dsl/PlatformSettings.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/dsl/PlatformSettings.kt @@ -36,6 +36,8 @@ abstract class AbstractMacOSPlatformSettings : AbstractPlatformSettings() { var appCategory: String? = null var minimumSystemVersion: String? = null + var dmgContents: String? = null + /** * An application's unique identifier across Apple's ecosystem. @@ -85,6 +87,7 @@ open class InfoPlistSettings { abstract class LinuxPlatformSettings : AbstractPlatformSettings() { var shortcut: Boolean = false + var packageDeps: String? = null var packageName: String? = null var appRelease: String? = null var appCategory: String? = null @@ -100,9 +103,11 @@ abstract class WindowsPlatformSettings : AbstractPlatformSettings() { var dirChooser: Boolean = true var perUserInstall: Boolean = false var shortcut: Boolean = false + var shortcutPrompt: Boolean = false var menu: Boolean = false get() = field || menuGroup != null var menuGroup: String? = null + var updateUrl: String? = null var upgradeUuid: String? = null var msiPackageVersion: String? = null var exePackageVersion: String? = null diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/internal/configureJvmApplication.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/internal/configureJvmApplication.kt index 83d51089ef6..cc5a9140263 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/internal/configureJvmApplication.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/internal/configureJvmApplication.kt @@ -371,6 +371,7 @@ internal fun JvmApplicationContext.configurePlatformSettings( packageTask.linuxAppRelease.set(provider { linux.appRelease }) packageTask.linuxDebMaintainer.set(provider { linux.debMaintainer }) packageTask.linuxMenuGroup.set(provider { linux.menuGroup }) + packageTask.linuxPackageDeps.set(provider { linux.packageDeps }) packageTask.linuxPackageName.set(provider { linux.packageName }) packageTask.linuxRpmLicenseType.set(provider { linux.rpmLicenseType }) packageTask.iconFile.set(linux.iconFile.orElse(defaultResources.get { linuxIcon })) @@ -384,8 +385,10 @@ internal fun JvmApplicationContext.configurePlatformSettings( packageTask.winDirChooser.set(provider { win.dirChooser }) packageTask.winPerUserInstall.set(provider { win.perUserInstall }) packageTask.winShortcut.set(provider { win.shortcut }) + packageTask.winShortcutPrompt.set(provider { win.shortcutPrompt }) packageTask.winMenu.set(provider { win.menu }) packageTask.winMenuGroup.set(provider { win.menuGroup }) + packageTask.winUpdateUrl.set(provider { win.updateUrl }) packageTask.winUpgradeUuid.set(provider { win.upgradeUuid }) packageTask.iconFile.set(win.iconFile.orElse(defaultResources.get { windowsIcon })) packageTask.installationPath.set(win.installationPath) @@ -394,6 +397,7 @@ internal fun JvmApplicationContext.configurePlatformSettings( } OS.MacOS -> { app.nativeDistributions.macOS.also { mac -> + packageTask.macDmgContents.set(provider { mac.dmgContents }) packageTask.macPackageName.set(provider { mac.packageName }) packageTask.macDockName.set( if (mac.setDockNameSameAsPackageName) diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/tasks/AbstractJPackageTask.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/tasks/AbstractJPackageTask.kt index 20c3926cd9c..f67d8176426 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/tasks/AbstractJPackageTask.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/desktop/application/tasks/AbstractJPackageTask.kt @@ -132,6 +132,10 @@ abstract class AbstractJPackageTask @Inject constructor( @get:Optional val linuxShortcut: Property = objects.nullableProperty() + @get:Input + @get:Optional + val linuxPackageDeps: Property = objects.nullableProperty() + @get:Input @get:Optional val linuxPackageName: Property = objects.nullableProperty() @@ -200,6 +204,10 @@ abstract class AbstractJPackageTask @Inject constructor( @get:PathSensitive(PathSensitivity.ABSOLUTE) val macRuntimeProvisioningProfile: RegularFileProperty = objects.fileProperty() + @get:Input + @get:Optional + val macDmgContents: Property = objects.nullableProperty() + @get:Input @get:Optional val winConsole: Property = objects.nullableProperty() @@ -216,6 +224,10 @@ abstract class AbstractJPackageTask @Inject constructor( @get:Optional val winShortcut: Property = objects.nullableProperty() + @get:Input + @get:Optional + val winShortcutPrompt: Property = objects.nullableProperty() + @get:Input @get:Optional val winMenu: Property = objects.nullableProperty() @@ -224,6 +236,10 @@ abstract class AbstractJPackageTask @Inject constructor( @get:Optional val winMenuGroup: Property = objects.nullableProperty() + @get:Input + @get:Optional + val winUpdateUrl: Property = objects.nullableProperty() + @get:Input @get:Optional val winUpgradeUuid: Property = objects.nullableProperty() @@ -438,6 +454,7 @@ abstract class AbstractJPackageTask @Inject constructor( when (currentOS) { OS.Linux -> { cliArg("--linux-shortcut", linuxShortcut) + cliArg("--linux-package-deps", linuxPackageDeps) cliArg("--linux-package-name", linuxPackageName) cliArg("--linux-app-release", linuxAppRelease) cliArg("--linux-app-category", linuxAppCategory) @@ -449,11 +466,21 @@ abstract class AbstractJPackageTask @Inject constructor( cliArg("--win-dir-chooser", winDirChooser) cliArg("--win-per-user-install", winPerUserInstall) cliArg("--win-shortcut", winShortcut) + cliArg("--win-shortcut-prompt", winShortcutPrompt) cliArg("--win-menu", winMenu) cliArg("--win-menu-group", winMenuGroup) + cliArg("--win-update-url", winUpdateUrl) cliArg("--win-upgrade-uuid", winUpgradeUuid) } - OS.MacOS -> {} + OS.MacOS -> { + if (macDmgContents.isPresent) { + if (jvmRuntimeInfo.majorVersion >= 18) { + cliArg("--mac-dmg-content", macDmgContents) + } else { + logger.warn("Option --mac-dmg-content is only supported from jdk 18") + } + } + } } }