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

Wix安装程序中如何仅比较版本号第四位?移除前三位遇格式错误求解

实现Wix安装程序仅比较版本号第四位的方法

首先明确:Wix的Product/@Version属性必须严格遵循x.x.x.x格式,每段数值范围为0到65534,直接移除前三位会触发格式错误。要实现仅比较版本号第四位的需求,需通过自定义逻辑绕开默认版本比较规则,以下是两种可行方案:

方案一:自定义动作(CustomAction)控制升级流程

保持完整合法的版本号,通过自定义代码仅比较第四位,决定是否执行升级:

  1. 定义Upgrade元素查找已安装产品
    在Wix项目中添加Upgrade元素,用于检测所有已安装的同产品版本:
<Upgrade Id="你的产品升级GUID">
  <UpgradeVersion Minimum="0.0.0.0" Maximum="99.99.99.99" Property="OLD_VERSION_FOUND" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
  1. 编写自定义动作代码
    用C#编写自定义动作,提取已安装版本和当前版本的第四位进行比较:
[CustomAction]
public static ActionResult CompareRevision(Session session)
{
    string installedVersionStr = session["OLD_VERSION_FOUND"];
    if (string.IsNullOrEmpty(installedVersionStr)) return ActionResult.Success;

    Version installedVersion = new Version(installedVersionStr);
    Version currentVersion = new Version(session["ProductVersion"]);

    // 比较版本号第四位(Revision段)
    if (currentVersion.Revision > installedVersion.Revision)
    {
        session["ALLOW_UPGRADE"] = "1";
    }
    else
    {
        session["ALLOW_UPGRADE"] = "0";
    }
    return ActionResult.Success;
}
  1. 配置自定义动作和执行顺序
    引用编译好的自定义动作DLL,安排在FindRelatedProducts之后执行,控制RemoveExistingProducts的触发条件:
<Binary Id="CustomActionsDll" SourceFile="你的自定义动作DLL路径" />
<CustomAction Id="CompareRevision" BinaryKey="CustomActionsDll" DllEntry="CompareRevision" Execute="immediate" />

<InstallExecuteSequence>
  <Custom Action="CompareRevision" After="FindRelatedProducts">OLD_VERSION_FOUND</Custom>
  <RemoveExistingProducts After="InstallInitialize">ALLOW_UPGRADE = "1"</RemoveExistingProducts>
</InstallExecuteSequence>

方案二:固定前三位版本号(简易版)

如果业务允许将版本号前三位固定为相同值(比如0.0.0.xxxx),可直接利用Wix默认版本比较逻辑:

  • 将所有版本的前三位设为固定值,例如当前版本0.0.0.1941,旧版本0.0.0.4203
  • Wix会自动比较完整版本号,由于前三位完全相同,实际效果就是仅比较第四位大小,无需额外自定义逻辑

注意事项

  • 版本号第四位对应Version类中的Revision属性,若你的版本号结构中第四位是Build段,需调整代码中比较的属性
  • 自定义动作需编译为符合Windows Installer规范的DLL,确保在目标系统上兼容

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

相关产品推荐
方舟 Agent Plan

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

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