You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WiX中修改产品版本:绑定EXE文件版本的问题

当然可以!针对你遇到的版本号格式问题,有几种实用的方法来调整版本号,满足WiX的重大升级要求:

方法一:使用XSLT转换版本号

如果你是通过WiX的Heat工具生成组件,或者需要直接处理WiX项目文件,XSLT是个不错的选择。你可以编写一个XSLT模板,自动截取版本号第一段的后两位,再拼接剩余部分。

示例XSLT代码:

<xsl:template match="@Version">
    <xsl:attribute name="Version">
        <!-- 提取原始版本号的各部分 -->
        <xsl:variable name="originalVersion" select="."/>
        <xsl:variable name="firstSegment" select="substring-before($originalVersion, '.')"/>
        <!-- 截取第一段的最后两位 -->
        <xsl:variable name="adjustedFirstSegment" select="substring($firstSegment, string-length($firstSegment) - 1)"/>
        <!-- 获取版本号的剩余部分 -->
        <xsl:variable name="remainingSegments" select="substring-after($originalVersion, '.')"/>
        <!-- 拼接成符合要求的版本号 -->
        <xsl:value-of select="concat($adjustedFirstSegment, '.', $remainingSegments)"/>
    </xsl:attribute>
</xsl:template>

使用时,将这个XSLT文件和WiX项目关联:比如用Heat工具时添加-xsl:YourTransform.xslt参数,或者在WiX项目的属性中配置XSL转换规则,让构建过程自动应用这个版本号调整逻辑。

方法二:用预构建PowerShell脚本处理版本号

另一种更直观的方式是在构建前用PowerShell读取EXE的版本号,调整后写入WiX的预处理器变量文件,让WiX直接使用调整后的版本号。

示例PowerShell脚本:

# 替换为你的EXE文件路径
$exePath = "bin/Release/YourApp.exe"
# 获取EXE的产品版本信息
$versionInfo = (Get-Item $exePath).VersionInfo
$originalVersion = $versionInfo.ProductVersion

# 拆分版本号并调整第一段
$versionSegments = $originalVersion.Split('.')
# 截取第一段的最后两位
$adjustedFirstSegment = $versionSegments[0].Substring($versionSegments[0].Length - 2)
# 拼接成新的版本号
$adjustedVersion = "$adjustedFirstSegment.$($versionSegments[1]).$($versionSegments[2]).$($versionSegments[3])"

# 将调整后的版本号写入WiX的预包含文件(比如Version.wxi)
@"
<?xml version="1.0" encoding="utf-8"?>
<Include>
    <?define ProductVersion = "$adjustedVersion"?>
</Include>
"@ | Out-File -FilePath "Version.wxi" -Encoding utf8

之后在你的WiX项目中引用这个Version.wxi文件,直接用$(var.ProductVersion)作为<Product>元素的Version属性值即可。每次构建前运行这个脚本,就能自动生成符合要求的版本号。

注意事项

  • 确保调整后的版本号每一段(主、次、构建、修订)都在0-255之间,比如原始第一段是2000,调整后是00(即0),完全符合要求;如果是2025,调整后是25,也没问题。
  • 调整版本号后,一定要测试重大升级逻辑,确认新版本能正确替换旧版本,避免出现安装冲突。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:14