gpt4 book ai didi

xslt - WiX 工具集 : . xslt 过滤器未返回所需的输出

转载 作者:行者123 更新时间:2023-12-05 03:12:14 24 4
gpt4 key购买 nike

我正在尝试在 WiX 4.0 中使用 heat.exe 收集文件时应用 .xslt 过滤器。例如,我想从结果中排除所有 .pdb 文件。但过滤后的输出与输入的 .wxs 文件相同。它似乎不适用我的过滤器。我的过滤器或加热命令有问题吗?我怎样才能至少检查是否应用了过滤器?

我的Filter.xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">

<xsl:output method="xml" indent="yes" />

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:key name="pdb-search" match="wix:Component[contains(wix:File/@Source, '.pdb')]" use="@Id" />

<xsl:template match="wix:Component[key('pdb-search', @Id)]" />
<xsl:template match="wix:ComponentRef[key('pdb-search', @Id)]" />

</xsl:stylesheet>

heat.exe 命令:

"path-to-heat\heat.exe" dir "..\Setup\publish" -t "$(ProjectDir)Filter.xslt"  -dr INSTALLFOLDER -ke -srd -cg MyWebWebComponents -var var.publishDir -gg -scom -sreg -sfrag -srd -o "$(ProjectDir)WebSiteContent.wxs"'

输入WebSiteContent.wxs:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="cmpdgYPmSUffnMp5Cpn.x3uAjrx8LY" Guid="some-guid">
<File Id="filI8ipbZR_OpcJbpA2FruBKyG8BoI" KeyPath="yes" Source="$(var.publishDir)\Index.html" />
</Component>
<Component Id="cmp1pazKwO0_7avtunRUNENlOunN8M" Guid="some-guid">
<File Id="filyJAF0LmVHHZxVPRdau.BsXwl4nI" KeyPath="yes" Source="$(var.publishDir)\Web.config" />
</Component>
<Directory Id="dir_LeTQIBl9a2URA4Zaav7Fa.mwCc" Name="bin">
<Component Id="cmp5VHxSYpYJIuDX6XWmTs024nLCu0" Guid="some-guid">
<File Id="fil_ySBhcWVXR52UqjImhNXHfNFEx0" KeyPath="yes" Source="$(var.publishDir)\bin\WebApplication1.dll" />
</Component>
<Component Id="cmp_cTaeilGSxPRLVlsDoZTgBokhS8" Guid="some-guid">
<File Id="filZiEpQ2sXyPpzg_SrBAcz1Tbln.A" KeyPath="yes" Source="$(var.publishDir)\bin\WebApplication1.pdb" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="MyWebWebComponents">
<ComponentRef Id="cmpdgYPmSUffnMp5Cpn.x3uAjrx8LY" />
<ComponentRef Id="cmp1pazKwO0_7avtunRUNENlOunN8M" />
<ComponentRef Id="cmp5VHxSYpYJIuDX6XWmTs024nLCu0" />
<ComponentRef Id="cmp_cTaeilGSxPRLVlsDoZTgBokhS8" />
</ComponentGroup>
</Fragment>
</Wix>

我还尝试添加一些自定义操作来编辑 .config 文件:

<util:XmlFile Id="AppConfigConnStr" File="[INSTALLFOLDER]Web.config" Action="setValue" Permanent="yes" Value="[CONNECTION_STRING]" ElementPath="/configuration/connectionStrings/add[\[]@name='MyEntities'[\]]/@connectionString" />

但是也行不通

最佳答案

好的,它不起作用的原因是错误的包含命名空间。 Filter.xslt 中的 xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" 应该是 xmlns:wix= “http://wixtoolset.org/schemas/v4/wxs”。希望它能帮助人们不要花 12 个小时来查找错误

关于xslt - WiX 工具集 : . xslt 过滤器未返回所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com