gpt4 book ai didi

wix - 在 WiX 中获取多个目录

转载 作者:行者123 更新时间:2023-12-04 16:46:49 27 4
gpt4 key购买 nike

我正在尝试构建一个包含许多功能的安装程序,我正在使用 为每个功能收集一个文件目录。
我的源目录结构如下所示:

HarvestDir
\FeatureA
\FeatureImpl.dll
\FeatureImpl2.dll
\FeatureB
\FeatureImpl.dll
\FeatureImpl2.dll

所以我执行 heat.exe 为每个功能为每个功能创建一个片段,但我得到基本相同的片段,例如
[...] Source="SourceDir\FeatureImpl.dll"
[...] Source="SourceDir\FeatureImpl2.dll"

我真正想要的是这样的:
[...] Source="SourceDir\FeatureA\FeatureImpl.dll"
[...] Source="SourceDir\FeatureA\FeatureImpl2.dll"


[...] Source="SourceDir\FeatureB\FeatureImpl.dll"
[...] Source="SourceDir\FeatureB\FeatureImpl2.dll"

我可以用 -var 指定一个单独的变量来表示每个功能的源位置,但随后我必须将这些变量的值传递到 wixproj(我将有大约 10 个功能)。

那么,有什么方法可以在我收获的片段中包含相对路径?

最佳答案

而不是使用 heat在每个 Feature*文件夹,您可以收集您创建的整个要素布局文件夹,并拥有 heat转换结果。我假设每个子文件夹都是一个功能。创建 ComponentGroup 很简单对于引用其下所有组件的每个组件。

然后,您可以像这样使用组件组:

    <Feature Id="FeatureA">
<ComponentGroupRef Id="FeatureA"/>
</Feature>
<Feature Id="FeatureB">
<ComponentGroupRef Id="FeatureB"/>
</Feature>

Heat 命令(我实际上使用了 WiX 3.7 中的 HarvestDirectory 目标):
Heat.exe dir FeatureLayout -dr FeatureLayoutDir -srd -ag -sfrag -t FeatureLayout.xslt -out obj\Debug\__dir.wxs

FeatureLayout.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="wix"
>

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

<xsl:template match="wix:Wix">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
<xsl:for-each select="wix:Fragment/wix:DirectoryRef/wix:Directory">
<wix:Fragment>
<wix:ComponentGroup Id="{@Name}">
<xsl:for-each select="descendant::wix:Component">
<wix:ComponentRef Id="{@Id}"/>
</xsl:for-each>
</wix:ComponentGroup>
</wix:Fragment>
</xsl:for-each>
</xsl:copy>
</xsl:template>

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

关于wix - 在 WiX 中获取多个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108287/

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