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

如何在VS2022后期生成事件中重命名Wix MSI文件以包含版本号

解决Wix 5.x MSI重命名带版本号的问题

针对你用VS2022+Heatwave+Wix5.x开发.NET8桌面应用安装包时,后期生成事件中$(ProductVersion)为空的问题,提供三种可行方案:

方案1:直接修改Wix项目输出文件名(推荐)

不需要后期事件,直接在Wix项目文件(.wixproj)中配置输出名称,让MSBuild直接生成带版本号的MSI:

  1. 打开你的.wixproj文件,添加或修改以下PropertyGroup:
<PropertyGroup>
  <!-- 从Wix Product元素的Version属性自动获取版本号 -->
  <OutputName>$(TargetName)_$(ProductVersion)</OutputName>
</PropertyGroup>
  1. 确保你的Wix源文件(.wxs)中Product元素的Version属性已正确设置:
<Product Id="*" Name="TankRadar Service Tool" Language="1033" Version="1.2.0.0" Manufacturer="你的厂商名" UpgradeCode="固定GUID">
  1. 重新构建项目,生成的MSI会直接命名为TankRadar.ServiceTool.Setup_1.2.0.0.msi

如果需要从主.NET项目同步版本号,可以把ProductVersion替换为主项目的版本:

<PropertyGroup>
  <!-- 从主项目的exe/dll中读取版本号,替换路径为你的主项目输出文件 -->
  <ProductVersion>$([System.Reflection.Assembly]::LoadFrom('$(SolutionDir)TankRadar.ServiceTool\bin\$(Configuration)\net8.0-windows\TankRadar.ServiceTool.exe').GetName().Version.ToString())</ProductVersion>
  <OutputName>$(TargetName)_$(ProductVersion)</OutputName>
</PropertyGroup>

方案2:用Wix的dark.exe提取版本号并重命名

如果必须用后期生成事件,可通过Wix自带的dark.exe(反编译工具)从生成的MSI中提取版本号,再执行重命名:

在Wix项目的后期生成事件中输入以下命令:

:: 从MSI中提取ProductVersion
for /f "tokens=2 delims==" %%a in ('"$(WixToolPath)\dark.exe" -x "$(TargetDir)\en-US\$(TargetFileName)" -sui -sice:ICE03 -sice:ICE07 -sice:ICE30 | findstr /i "ProductVersion"') do set VERSION=%%a
:: 执行重命名
rename "$(TargetDir)\en-US\$(TargetFileName)" "$(TargetName)_%VERSION%.msi"
  • $(WixToolPath)会自动指向Wix工具的安装目录,确保dark.exe可被调用
  • 命令会先反编译MSI并提取版本号,再完成重命名

方案3:手动传递版本号到MSBuild属性

如果$(ProductVersion)始终为空,可在.wixproj中显式定义版本号,再传递给后期事件:

  1. 在.wixproj中添加:
<PropertyGroup>
  <!-- 手动定义版本号,或从其他配置文件读取 -->
  <InstallerVersion>1.2.0.0</InstallerVersion>
</PropertyGroup>
  1. 后期生成事件中使用$(InstallerVersion)变量:
rename "$(TargetDir)\en-US\$(TargetFileName)" "$(TargetName)_$(InstallerVersion).msi"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:05:10