Wix - 使用XSLT停止卸载时删除的目录

时间:2018-01-16 14:02:54

标签: xslt wix windows-installer uninstall

我的MSI安装程序将捆绑一大堆其他文件以进行安装。这很好,但是,在卸载/升级时我们要保留这些文件。

因为它们是捆绑在一起而不是组件,所以我不能使用通常的说法来使组件永久化。

我找到了以下代码,用于识别安装目录中的文件并使其永久化

 <xsl:if test="contains(*[local-name()='File']/@Source, 'PCSTDESC')">
   <xsl:attribute name="NeverOverwrite"><xsl:text>yes</xsl:text></xsl:attribute>
   <xsl:attribute name="Permanent"><xsl:text>yes</xsl:text></xsl:attribute>        
 </xsl:if> 

然而,这是针对特定文件的,因为在我的示例中,我不想成为特定文件或扩展程序,我只想保留整个&#39;文档&#39;目录

我已经尝试了以下但是还没有运气好吗

<xsl:if test="contains(*[local-name()='Directory']/@Name, 'Documents')">
  <xsl:attribute name="NeverOverwrite"><xsl:text>yes</xsl:text></xsl:attribute>
  <xsl:attribute name="Permanent"><xsl:text>yes</xsl:text></xsl:attribute>
</xsl:if>

有关如何使其按预期工作的任何建议?

1 个答案:

答案 0 :(得分:1)

我不确定如何将目录标记为永久性,但您可以尝试标记目录中的所有文件。

试试这个......

<xsl:if test="contains(parent::*[local-name()='Directory']/@Name, 'Documents')">