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

为Wix Toolset添加Click Through功能实现更新提示

实现Wix MSI更新提示的可行方案

你提到的"Click Through"并非Wix内置的官方功能,Wix本身的MSI包不具备主动检查更新并提示的能力,要实现更新提示,主要有两种可靠方案,结合你的现有代码,具体实现如下:

方案一:在应用程序内添加更新检查(推荐)

这种方式更灵活,用户启动solutions.exe时自动检查服务器上的最新版本,若有更新则提示下载安装,步骤如下:

  1. 在solutions.exe中编写版本检查逻辑:

    • 读取当前程序集版本(可通过Assembly.GetExecutingAssembly().GetName().Version获取)
    • 从你的服务器获取最新版本信息(比如一个JSON文件)
    • 对比版本号,若服务器版本更高,弹出提示框引导用户下载最新MSI安装包
  2. 确保MSI支持无缝升级:
    你的代码中已经包含<MajorUpgrade>元素,这是实现版本替换的核心,需要注意两点:

    • 每次发布新版本时,必须修改Product元素的Version属性(至少提升第三位,比如从1.0.0.0改为1.0.1.0)
    • 保持UpgradeCode属性不变,这是Wix识别同一产品系列的唯一标识,不能随版本更改

方案二:使用Wix Burn引导程序实现安装前更新检测

如果希望用户运行安装程序时自动检查更新,可以用Wix的Burn引导程序,它能在安装前检测服务器上的最新安装包,自动下载并升级:

实现步骤:

  1. 创建Wix Bootstrapper项目,在引导程序的.wxs文件中添加以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
  <Bundle Name="Solutions Testing" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="固定的GUID">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    
    <!-- 配置更新检查 -->
    <bal:WixStandardBootstrapperApplication 
      DetectCondition="NOT Installed OR (Version &lt; v1.0.1.0)"
      />
    <bal:UpdateUrl Url="http://你的服务器地址/updates/feed.xml" />
    
    <!-- 引用你的MSI包 -->
    <Chain>
      <MsiPackage SourceFile=".\SolutionsTesting.msi" />
    </Chain>
  </Bundle>
</Wix>
  1. 在服务器上创建更新feed文件feed.xml,包含最新版本信息:
<?xml version="1.0" encoding="utf-8"?>
<Feed xmlns="http://schemas.microsoft.com/wix/2011/feed">
  <Bundle Name="Solutions Testing" Version="1.0.1.0" Manufacturer="MyCompany">
    <Payload Url="http://你的服务器地址/updates/SolutionsTesting_v1.0.1.msi" />
  </Bundle>
</Feed>

针对你现有代码的优化

你的MSI代码已经具备基础升级能力,这里有两处修正建议:

  1. 修正产品图标属性(原代码中ARPPRODUCTION拼写错误,应为ARPPRODUCTICON):
<Icon Id="favicon.ico" SourceFile="$(var.ProjectDir)images\favicon.ico"/>
<Property Id="ARPPRODUCTICON" Value="favicon.ico" />
  1. 优化<MajorUpgrade>配置,增强升级安全性:
<MajorUpgrade 
  DowngradeErrorMessage="A newer version of [ProductName] is already installed."
  AllowDowngrades="no"
  AllowSameVersionUpgrades="no"
  Schedule="afterInstallInitialize" />

总结

  • 应用内检查更新更适合日常使用场景,用户启动软件时就能收到提示
  • Burn引导程序适合安装环节的更新检测,确保用户安装的是最新版本
  • 无论哪种方案,UpgradeCode必须固定,ProductVersion每次更新都要提升

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:40:53