Wix - 使用 XSLT 停止在卸载时删除目录
Wix - Using XSLT to stop a directory being removed on 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>
但是这是针对特定文件的,在我的示例中不会有特定文件或扩展名,我只想保留整个 'Documents' 目录
我尝试了以下方法,但还没有成功
<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>
关于如何让它按预期工作有什么建议吗?
我不确定您如何将目录标记为永久目录,但您可以尝试标记目录中的所有文件。
试试这个...
<xsl:if test="contains(parent::*[local-name()='Directory']/@Name, 'Documents')">
我的 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>
但是这是针对特定文件的,在我的示例中不会有特定文件或扩展名,我只想保留整个 'Documents' 目录
我尝试了以下方法,但还没有成功
<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>
关于如何让它按预期工作有什么建议吗?
我不确定您如何将目录标记为永久目录,但您可以尝试标记目录中的所有文件。
试试这个...
<xsl:if test="contains(parent::*[local-name()='Directory']/@Name, 'Documents')">