Refactor Windows MSI build script to improve argument handling
All checks were successful
farmcontrol/farmcontrol-server/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-server/pipeline/head This commit looks good
- Introduced a new function, ConvertTo-WixVersion, to standardize version formatting for the MSI build process. - Updated the PowerShell script to use arrays for passing arguments to the candle and light commands, enhancing readability and reliability. - Ensured proper handling of paths with spaces by quoting arguments appropriately.
This commit is contained in:
parent
503fd6e0de
commit
6ed2347214
@ -44,20 +44,41 @@ if (Test-Path $workDir) {
|
||||
}
|
||||
New-Item -ItemType Directory -Path $workDir | Out-Null
|
||||
|
||||
function ConvertTo-WixVersion([string]$rawVersion) {
|
||||
$parts = $rawVersion.Split('.')
|
||||
while ($parts.Count -lt 4) {
|
||||
$parts += '0'
|
||||
}
|
||||
return ($parts[0..3] -join '.')
|
||||
}
|
||||
|
||||
$candle = Find-WixTool "candle"
|
||||
$light = Find-WixTool "light"
|
||||
|
||||
& $candle `
|
||||
-nologo `
|
||||
-out $wixObj `
|
||||
-dVersion=$Version `
|
||||
-dSetupExe=$SetupExe `
|
||||
$wxsPath
|
||||
$wixVersion = ConvertTo-WixVersion $Version
|
||||
$setupExePath = (Resolve-Path -LiteralPath $SetupExe).Path
|
||||
|
||||
& $light `
|
||||
-nologo `
|
||||
-out $OutputMsi `
|
||||
# Quote -d defines so PowerShell passes them as single args to candle.exe.
|
||||
# Unquoted -dVersion=$Version is parsed incorrectly; paths with spaces also break.
|
||||
$candleArgs = @(
|
||||
'-nologo'
|
||||
'-out'
|
||||
$wixObj
|
||||
"-dVersion=$wixVersion"
|
||||
"-dSetupExe=$setupExePath"
|
||||
$wxsPath
|
||||
)
|
||||
|
||||
& $candle @candleArgs
|
||||
|
||||
$lightArgs = @(
|
||||
'-nologo'
|
||||
'-out'
|
||||
$OutputMsi
|
||||
$wixObj
|
||||
)
|
||||
|
||||
& $light @lightArgs
|
||||
|
||||
if (-not (Test-Path $OutputMsi)) {
|
||||
throw "MSI was not created at $OutputMsi"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user