3

我正在使用 heat.exe(harvest 目录类型)来自动生成 wix 创作。大约有 40 个 dll,我只想 GAC 列出 10 个 dll 的列表,列表在 .txt 文件中可用。是的,我使用了 XSLT(我对它很陌生),我可以使用硬编码的值来做到这一点,但不能从 .txt 中动态读取它。我试过搜索,找不到好的样本。

请建议我如何从 .t​​xt 动态读取 dll 列表并与 Source/FileId 匹配。

    <xsl:template match="wix:File[contains(@Source, 'binaryOne.dll')] | 
        wix:File[contains(@Source, 'binaryTwo.dll')] | 
        wix:File[contains(@Source, 'binaryThree.dll')]">
        <xsl:copy>
            <xsl:attribute name="Assembly">.net</xsl:attribute>
            <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>
4

1 回答 1

0

Heat 没有读取文件以收集文件列表以进行收集的功能。您将需要您的构建过程来为您执行此操作。

您可以尝试的一种策略是收获 10 次,每个文件一次。在批处理文件中,您可以使用for命令对文本文件中的每一行执行 heat:

for /f "delims=" %%F IN (filelist.txt) DO heat file "%%F" -ag -template:fragment -out "%%F.wxs"

然后当你运行蜡烛时,首先连接所有文件名并将它们作为参数传递给蜡烛:

for /f "delims=" %%F IN (filelist.txt) DO set FILELIST=%FILELIST% "%%F.wxs"

candle ... normalfile1.wxs normalfile2.wxs %FILELIST% ...
于 2013-10-25T06:28:04.553 回答