在WiX Toolset设置中(作为这方面的初学者)我尝试使用Powershell({5},用于ExeCommand
解压缩zip存档为CustomAction
; 4.5安装)。
<CustomAction Id='UncompressZipFile' Directory='INSTALLFOLDER' Execute='immediate'
ExeCommand='powershell.exe -nologo -noprofile -command "Add-Type -A System.IO.Compression.FileSystem; [\[]IO.Compression.ZipFile[\]]::ExtractToDirectory('foo.zip', '.');"'
Return='check'/>
正确调用Powershell,但它会尝试解释"
并因此抛出异常。这意味着esacpe字符由WiX转发为文字。但是,似乎CustomAction
的所有WiX示例都在使用转义字符。
是否存在我缺少的WiX设置,它控制如何处理XML转义字符或对它们产生影响?
以下是有效的,但这不是有效的XML("
和'
未转义。)
<!--
The separate variable for Powershell command call is needed for quote
characters, since the escape characters (&, ", ' etc) are
forwarded as literals to Powershell (reason unknown).
-->
<?define psUnzipCmd = "Add-Type -A System.IO.Compression.FileSystem; [\[]IO.Compression.ZipFile[\]]::ExtractToDirectory('foo.zip', '.');" ?>
<CustomAction Id='UncompressZipFile' Directory='INSTALLFOLDER' Execute='immediate'
ExeCommand='powershell.exe -nologo -noprofile -command "$(var.psUnzipCmd)"'
Return='check'/>
我知道在安装中使用zip有几个原因是不好的。但是在这种特殊情况下,我处理的是100k +非常小的文件和很多文件夹,这些文件经常发生变化。不使用Windows安装程序升级/更改/修复。