Skip to content

Commit

Permalink
Merge pull request #10 from alexarchambault/64-bit-installer
Browse files Browse the repository at this point in the history
Allow users to adjust WIX conf for 64 bit apps and the WIX installer version
  • Loading branch information
alexarchambault authored Sep 2, 2021
2 parents 6413ec4 + aa60600 commit 79cc492
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -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}

Expand All @@ -25,7 +25,14 @@ 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,
@Group("Windows")
@HelpMessage("WIX installer version")
installerVersion: Option[String] = None
) {

def toWindowsSettings(
Expand Down Expand Up @@ -56,7 +63,9 @@ final case class WindowsOptions(
os.read(path0, Codec(Charset.defaultCharset()))
}
.mkString(System.lineSeparator())
}
},
is64Bits = is64Bits,
installerVersion = installerVersion
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,7 @@ case class WindowsSettings(
productName: String,
exitDialog: Option[String],
suppressValidation: Boolean,
extraConfig: Option[String]
extraConfig: Option[String],
is64Bits: Boolean,
installerVersion: Option[String]
) extends BuildSettings
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ case class WindowsPackage(
version = buildSettings.shared.version,
maintainer = buildSettings.maintainer,
launcherAppName = launcherAppName,
extraConfig = buildSettings.extraConfig
extraConfig = buildSettings.extraConfig,
is64Bits = buildSettings.is64Bits,
installerVersion = buildSettings.installerVersion
)

createConfFile(wixConfig)
Expand All @@ -59,9 +61,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"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ case class WindowsWixConfig(
version: String,
maintainer: String,
launcherAppName: String,
extraConfig: Option[String]
extraConfig: Option[String],
is64Bits: Boolean,
installerVersion: Option[String]
) {

lazy val wixExitDialog =
Expand Down Expand Up @@ -45,17 +47,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"""<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" UpgradeCode="$randomGuid"
Name="$productName" Version="$version" Manufacturer="$maintainer" Language="1033">
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/>
<Package $extraPackage InstallerVersion="${installerVersion.getOrElse("200")}" Compressed="yes" Comments="Windows Installer Package"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>


<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="$programFiles">
<Directory Id="INSTALLDIR" Name="$packageName">
<Component Id="ApplicationFiles" Guid="$randomGuid">
<File Id="ApplicationFile1" Source="$sourcePath" Name="$launcherAppName.${sourcePath.ext}"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class WindowsPackageTests extends munit.FunSuite with PackageHelper {
productName = "Scala packager product",
exitDialog = None,
suppressValidation = true,
extraConfig = None
extraConfig = None,
is64Bits = false,
installerVersion = None
)
}

0 comments on commit 79cc492

Please sign in to comment.