Wix V5 HarvestDirectory 转换未应用

问题描述 投票:0回答:1

我正在将产品安装程序从 Wix v3 迁移到 WiX v5.0.1,并在此处应用转换时遇到问题,

我已经在 wixproj 文件中指定了 Transform 路径,如下所示,

  <ItemGroup>
    <HarvestDirectory Include="D:\source\repos\src\Client\ProductName\bin\Debug\net8.0-windows7.0\">
      <ComponentGroupName>MyAppComponents</ComponentGroupName>
      <DirectoryRefId>INSTALLFOLDER</DirectoryRefId>
      <SuppressRootDirectory>true</SuppressRootDirectory>
      <Transform>D:\source\repos\src\Client\Setup2\msi\Exclude.xslt</Transform>
    </HarvestDirectory>
    <BindPath Include="D:\source\repos\src\Client\ProductName\bin\Debug\net8.0-windows7.0\" />
  </ItemGroup>

Exclude.xslt 文件看起来像这样,

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" version="1.0">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
    <xsl:strip-space elements="*"/>

    <!-- Copy all elements by default -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- Change RegistryValue Root from HKCR to HKCU -->
    <xsl:template match="wix:RegistryValue[@Root='HKCR']">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:attribute name="Root">HKCU</xsl:attribute>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

你知道我在这里做错了什么吗?

heat harvest wix5
1个回答
0
投票

我无法判断您的匹配是否有效,但您必须先设置属性,然后应用模板。您的选择属性也缺少“node()”。

<!-- Change RegistryValue Root from HKCR to HKCU -->
<xsl:template match="wix:RegistryValue[@Root='HKCR']">
    <xsl:copy>
        <xsl:attribute name="Root">HKCU</xsl:attribute>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

如果您使用 Visual Studio Professional,则可以按照此处所述调试 XSLT:演练,调试 XSLT 样式表

© www.soinside.com 2019 - 2024. All rights reserved.