Psake, Powershell y Wix
-
20-09-2019 - |
Pregunta
Tengo la función de abajo como parte de mi psake acumulación. Cuando la construcción se está ejecutando Candle.exe lanza este error:
candle.exe: advertencia: CNDL1098. 'Ext \ build \ Packages \ WixWeb \ bin \ WixIIsExtension.dll' no es un argumento de línea de comando válido
Creo que esto es un problema con la manera en que yo estoy pasando argumentos de línea de comandos, pero no puedo por la vida de mí averiguarlo.
Cualquier monos PowerShell tienen sugerencias?
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"" "
}
Solución
Trate de reemplazar sus comillas dobles interiores con comillas simples, así:
.\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, puede que le resulte más fácil si escapas sus comillas correctamente usando `" (comilla invertida seguida de comillas dobles); el guión podría ser más robusto, también el ejemplo de código se convertiría entonces en:.
.\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`" "
Tu caso es distinto, sin embargo.