gpt4 book ai didi

wix - 使用Heat进行收获时如何使用bind.FileVersion?

转载 作者:行者123 更新时间:2023-12-02 08:34:26 25 4
gpt4 key购买 nike

我以前用过...

<?define PRODUCTVERSION="!(bind.FileVersion.MyLibrary.dll)" ?>

...定义要在我的安装程序中使用的版本变量。第一次使用Heat.exe将安装程序(包括MyLibrary.dll)中需要的文件/文件夹收集到名为Source.wxs的文件中。

如果我尝试构建安装程序,则会出现以下错误:
Unresolved bind-time variable !(bind.FileVersion.MyLibrary.dll)

就像在其中声明了 PRODUCTVERSION的Product.wxs文件看不到具有MyLibrary.dll细节的Source.wxs文件,但是我知道这不是真的,因为如果我设置 PRODUCTVERSION="1.0.0.0",则安装程序将生成并且所有此文件已正确安装。

如何获取 bind.FileVersion以“查看” MyLibrary.dll?

编辑

如果我使用Source.wxs中的非人类友好文件ID(请参见下文),则可以使其正常工作,但这真的是最好的解决方案吗?
  <?define PRODUCTVERSION="!(bind.fileVersion.fil023E197261ED7268770DDE64994C4A55)" ?>

最佳答案

您可以使用XSL编辑Heat生成的输出。这样,您可以将ID fil023E197261ED7268770DDE64994C4A55转换为更具可读性的内容,可以在您的项目中引用。要将转换应用于HeatDirectory任务,您必须指定其Transforms属性并将其值设置为必须创建的XSL文件的文件名。

在该XSL文件中,您将必须处理热量产生的XML。要重命名Id元素的File属性,可以使用以下代码:

<?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:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">

<xsl:template match="//wix:File">
<xsl:variable name="FilePath" select="@Source" />
<xsl:variable name="FileName" select="substring-after($FilePath,'\')" />
<xsl:copy>
<xsl:attribute name="Id">
<xsl:choose>
<xsl:when test="contains($FileName,'\')">
<xsl:value-of select="substring-after($FileName,'\')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$FileName"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

w3schools上了解XSL,并查看 HeatDirectory task的文档。

关于wix - 使用Heat进行收获时如何使用bind.FileVersion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244300/

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