Psake, PowerShell & Wix
-
20-09-2019 - |
Domanda
Ho la funzione qui sotto come una parte della mia psake build. Quando la costruzione è in esecuzione Candle.exe getta questo errore:
candle.exe: avviso CNDL1098:. 'Ext \ Costruire \ Packages \ WixWeb \ bin \ WixIIsExtension.dll' non è un argomento della riga di comando valido
Credo che questo sia un problema con il modo in cui sto passando argomenti della riga di comando, ma non posso per la vita di me capire.
Qualsiasi scimmie PowerShell ha suggerimenti?
function buildMsi($build_dir, $template, $directory) {
"Building Msi"
"Build Folder: $build_dir"
"Wix Template: $template"
"Website: $directory"
$wixXml = [xml](Get-Content $template)
$namespaceManager = New-Object Xml.XmlNamespaceManager($wixXml.PSBase.NameTable)
$namespaceManager.AddNamespace("wi", "http://schemas.microsoft.com/wix/2006/wi")
$components = $wixXml.Wix.Fragment.ComponentGroup
WalkDirectory $wixXml.PSBase.SelectSingleNode("/wi:Wix/wi:Fragment/wi:DirectoryRef", $namespaceManager) $directory
$wixXml.Save("$build_dir\WebContent.wxs")
.\Build\WixWeb\bin\Candle.exe """-dProductName=Foo""`
""-dVersion=1.0.0.0""`
""-dProductID=0cd64670-5769-4e34-8b21-c6242e7ca5a2""`
""-dUpgradeCode=307601e9-4eea-4b5c-938a-354115d5c419""`
""-dAppPool=FooAppPool""`
""-dInstallDirectory=Foo""`
""-dWebAppDirectoryComponentId=CF57E626-1E95-4a89-A0E9-C1AD03C51B12""`
""-dIIsAppPoolComponentId=D9138380-19B3-4123-9E22-AB2994B1024B""`
""-dIIsWithAppPoolSettingsComponentId=02ca3f08-a1e8-48a3-b4d7-6f5f67c61b96""`
""-dIIsWithoutAppPoolSettingsComponentId=d97791b0-f597-46c6-b159-541817527453""`
""-ext "".\Build\WixWeb\bin\WixIIsExtension.dll""""`
""-ext "".\Build\WixWeb\bin\WixUIExtension.dll""""`
"".\Build\WixWeb\Shell.wxs""`
"".\Build\stage\WebContent.wxs"" "
}
Soluzione
Provare a sostituire i tuoi virgolette doppie interne con apici, in questo modo:
.\Build\WixWeb\bin\Candle.exe " ""-dProductName=Foo"" `
""-dVersion=1.0.0.0"" `
""-dProductID=0cd64670-5769-4e34-8b21-c6242e7ca5a2"" `
""-dUpgradeCode=307601e9-4eea-4b5c-938a-354115d5c419"" `
""-dAppPool=FooAppPool"" `
""-dInstallDirectory=Foo"" `
""-dWebAppDirectoryComponentId=CF57E626-1E95-4a89-A0E9-C1AD03C51B12"" `
""-dIIsAppPoolComponentId=D9138380-19B3-4123-9E22-AB2994B1024B"" `
""-dIIsWithAppPoolSettingsComponentId=02ca3f08-a1e8-48a3-b4d7-6f5f67c61b96"" `
""-dIIsWithoutAppPoolSettingsComponentId=d97791b0-f597-46c6-b159-541817527453"" `
""-ext '.\Build\WixWeb\bin\WixIIsExtension.dll'"" `
""-ext '.\Build\WixWeb\bin\WixUIExtension.dll'"" `
"".\Build\WixWeb\Shell.wxs"" `
"".\Build\stage\WebContent.wxs"" "
Futhermore, si potrebbe trovare più facile se si sfuggire correttamente le doppie virgolette usando `" (backtick seguita da doublequote); lo script potrebbe essere più robusto, anche L'esempio di codice sarebbe poi diventato:.
.\Build\WixWeb\bin\Candle.exe " `"-dProductName=Foo`" `
`"-dVersion=1.0.0.0`" `
`"-dProductID=0cd64670-5769-4e34-8b21-c6242e7ca5a2`" `
`"-dUpgradeCode=307601e9-4eea-4b5c-938a-354115d5c419`" `
`"-dAppPool=FooAppPool`" `
`"-dInstallDirectory=Foo`" `
`"-dWebAppDirectoryComponentId=CF57E626-1E95-4a89-A0E9-C1AD03C51B12`" `
`"-dIIsAppPoolComponentId=D9138380-19B3-4123-9E22-AB2994B1024B`" `
`"-dIIsWithAppPoolSettingsComponentId=02ca3f08-a1e8-48a3-b4d7-6f5f67c61b96`" `
`"-dIIsWithoutAppPoolSettingsComponentId=d97791b0-f597-46c6-b159-541817527453`" `
`"-ext '.\Build\WixWeb\bin\WixIIsExtension.dll'`" `
`"-ext '.\Build\WixWeb\bin\WixUIExtension.dll'`" `
`".\Build\WixWeb\Shell.wxs`" `
`".\Build\stage\WebContent.wxs`" "
YMMV, però.