From b0a2c6ead5cf28628f8d3ae3a1fe6a60ea05cba9 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Thu, 2 Sep 2021 16:13:13 +0200 Subject: [PATCH 1/2] Allow users to adjust WIX conf for 64 bit apps And actually default to 64 bit (which should be the more likely) --- .../packager/cli/commands/WindowsOptions.scala | 11 ++++++++--- .../scala/packager/config/WindowsSettings.scala | 3 ++- .../scala/packager/windows/WindowsPackage.scala | 8 +++++++- .../scala/packager/windows/WindowsWixConfig.scala | 14 +++++++++++--- .../packager/windows/WindowsPackageTests.scala | 3 ++- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala b/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala index 1050178..f164f97 100644 --- a/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala +++ b/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala @@ -1,7 +1,7 @@ package packager.cli.commands import caseapp.core.help.Help -import caseapp.{Group, HelpMessage, Parser, ValueDescription} +import caseapp.{Group, HelpMessage, Name, Parser, ValueDescription} import SettingsHelpers.{Mandatory, Validate} import packager.config.{SharedSettings, WindowsSettings} @@ -25,7 +25,11 @@ final case class WindowsOptions( @Group("Windows") @HelpMessage("Path to extra WIX config content") @ValueDescription("path") - extraConfig: List[String] = Nil + extraConfig: List[String] = Nil, + @Group("Windows") + @HelpMessage("Whether a 64-bit executable is getting packaged") + @Name("64") + is64Bits: Boolean = true ) { def toWindowsSettings( @@ -56,7 +60,8 @@ final case class WindowsOptions( os.read(path0, Codec(Charset.defaultCharset())) } .mkString(System.lineSeparator()) - } + }, + is64Bits = is64Bits ) } diff --git a/modules/packager/src/main/scala/packager/config/WindowsSettings.scala b/modules/packager/src/main/scala/packager/config/WindowsSettings.scala index aff06c8..90cce72 100644 --- a/modules/packager/src/main/scala/packager/config/WindowsSettings.scala +++ b/modules/packager/src/main/scala/packager/config/WindowsSettings.scala @@ -7,5 +7,6 @@ case class WindowsSettings( productName: String, exitDialog: Option[String], suppressValidation: Boolean, - extraConfig: Option[String] + extraConfig: Option[String], + is64Bits: Boolean ) extends BuildSettings diff --git a/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala b/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala index 93827b8..11eba78 100644 --- a/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala +++ b/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala @@ -45,7 +45,8 @@ case class WindowsPackage( version = buildSettings.shared.version, maintainer = buildSettings.maintainer, launcherAppName = launcherAppName, - extraConfig = buildSettings.extraConfig + extraConfig = buildSettings.extraConfig, + is64Bits = buildSettings.is64Bits ) createConfFile(wixConfig) @@ -59,9 +60,14 @@ case class WindowsPackage( if (buildSettings.suppressValidation) Seq("-sval") else Nil + val extraCandleOptions = + if (buildSettings.is64Bits) Seq("-arch", "x64") + else Nil + os.proc( candleBinPath, wixConfigPath, + extraCandleOptions, "-ext", "WixUIExtension" ) diff --git a/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala b/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala index 92ef06d..9605bd3 100644 --- a/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala +++ b/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala @@ -14,7 +14,8 @@ case class WindowsWixConfig( version: String, maintainer: String, launcherAppName: String, - extraConfig: Option[String] + extraConfig: Option[String], + is64Bits: Boolean ) { lazy val wixExitDialog = @@ -45,17 +46,24 @@ case class WindowsWixConfig( def randomGuid: String = java.util.UUID.randomUUID.toString + private def extraPackage = + if (is64Bits) """Platform="x64"""" + else "" + private def programFiles = + if (is64Bits) "ProgramFiles64Folder" + else "ProgramFilesFolder" + def generateContent(): String = s""" - + - + diff --git a/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala b/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala index 5de8c05..daa853c 100644 --- a/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala +++ b/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala @@ -41,6 +41,7 @@ class WindowsPackageTests extends munit.FunSuite with PackageHelper { productName = "Scala packager product", exitDialog = None, suppressValidation = true, - extraConfig = None + extraConfig = None, + is64Bits = false ) } From aa60600680a48a9c7abfa756f5d6cfa8efc38312 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Thu, 2 Sep 2021 16:14:41 +0200 Subject: [PATCH 2/2] Allow users to change the WIX installer version --- .../main/scala/packager/cli/commands/WindowsOptions.scala | 8 ++++++-- .../src/main/scala/packager/config/WindowsSettings.scala | 3 ++- .../src/main/scala/packager/windows/WindowsPackage.scala | 3 ++- .../main/scala/packager/windows/WindowsWixConfig.scala | 5 +++-- .../test/scala/packager/windows/WindowsPackageTests.scala | 3 ++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala b/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala index f164f97..36efbd9 100644 --- a/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala +++ b/modules/cli/src/main/scala/packager/cli/commands/WindowsOptions.scala @@ -29,7 +29,10 @@ final case class WindowsOptions( @Group("Windows") @HelpMessage("Whether a 64-bit executable is getting packaged") @Name("64") - is64Bits: Boolean = true + is64Bits: Boolean = true, + @Group("Windows") + @HelpMessage("WIX installer version") + installerVersion: Option[String] = None ) { def toWindowsSettings( @@ -61,7 +64,8 @@ final case class WindowsOptions( } .mkString(System.lineSeparator()) }, - is64Bits = is64Bits + is64Bits = is64Bits, + installerVersion = installerVersion ) } diff --git a/modules/packager/src/main/scala/packager/config/WindowsSettings.scala b/modules/packager/src/main/scala/packager/config/WindowsSettings.scala index 90cce72..6c4234d 100644 --- a/modules/packager/src/main/scala/packager/config/WindowsSettings.scala +++ b/modules/packager/src/main/scala/packager/config/WindowsSettings.scala @@ -8,5 +8,6 @@ case class WindowsSettings( exitDialog: Option[String], suppressValidation: Boolean, extraConfig: Option[String], - is64Bits: Boolean + is64Bits: Boolean, + installerVersion: Option[String] ) extends BuildSettings diff --git a/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala b/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala index 11eba78..ff97f7b 100644 --- a/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala +++ b/modules/packager/src/main/scala/packager/windows/WindowsPackage.scala @@ -46,7 +46,8 @@ case class WindowsPackage( maintainer = buildSettings.maintainer, launcherAppName = launcherAppName, extraConfig = buildSettings.extraConfig, - is64Bits = buildSettings.is64Bits + is64Bits = buildSettings.is64Bits, + installerVersion = buildSettings.installerVersion ) createConfFile(wixConfig) diff --git a/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala b/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala index 9605bd3..1401078 100644 --- a/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala +++ b/modules/packager/src/main/scala/packager/windows/WindowsWixConfig.scala @@ -15,7 +15,8 @@ case class WindowsWixConfig( maintainer: String, launcherAppName: String, extraConfig: Option[String], - is64Bits: Boolean + is64Bits: Boolean, + installerVersion: Option[String] ) { lazy val wixExitDialog = @@ -58,7 +59,7 @@ case class WindowsWixConfig( - + diff --git a/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala b/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala index daa853c..b4fb5f9 100644 --- a/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala +++ b/modules/packager/src/test/scala/packager/windows/WindowsPackageTests.scala @@ -42,6 +42,7 @@ class WindowsPackageTests extends munit.FunSuite with PackageHelper { exitDialog = None, suppressValidation = true, extraConfig = None, - is64Bits = false + is64Bits = false, + installerVersion = None ) }