【发布时间】:2018-01-16 14:02:54
【问题描述】:
我的 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>
但是这是针对特定文件的,在我的示例中不会有特定文件或扩展名,我只想保留整个“文档”目录
我尝试了以下方法,但还没有成功
<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')">之类的东西? -
这些是什么文件?为什么您的应用程序不创建它们?您可以在 INSTALLDIR 下保留只读模板,以便在需要时复制到用户的“我的文档”文件夹中?
-
@TimC 如果您想将其作为答案,这已经奏效,但请注意,如果目录为空,它们将被删除,只有当目录中有文件时,它们才会被保留
-
我已将其添加为答案
标签: xslt wix windows-installer uninstallation