XML转义字符在ExeCommand

时间:2017-11-29 13:48:02

标签: wix custom-action

WiX Toolset设置中(作为这方面的初学者)我尝试使用Powershell({5},用于ExeCommand解压缩zip存档为CustomAction ; 4.5安装)。

<CustomAction Id='UncompressZipFile' Directory='INSTALLFOLDER' Execute='immediate'
              ExeCommand='powershell.exe -nologo -noprofile -command &quot;Add-Type -A System.IO.Compression.FileSystem; [\[]IO.Compression.ZipFile[\]]::ExtractToDirectory(&apos;foo.zip&apos;, &apos;.&apos;);&quot;'
              Return='check'/>

正确调用Powershell,但它会尝试解释&quot;并因此抛出异常。这意味着esacpe字符由WiX转发为文字。但是,似乎CustomAction的所有WiX示例都在使用转义字符。

是否存在我缺少的WiX设置,它控制如何处理XML转义字符或对它们产生影响?

以下是有效的,但这不是有效的XML("'未转义。)

<!--
The separate variable for Powershell command call is needed for quote
characters, since the escape characters (&amp;, &quot;, &apos; 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安装程序升级/更改/修复。

0 个答案:

没有答案