我应该如何处理 WiX 安装程序中的产品升级?

2024-04-12

我有一个相当大的 WiX 安装程序(250 Mb 以上),我正在尝试制定合适的升级策略。

安装程序中的大多数文件都不会更改,并且当只有一两个文件发生更改时,我们不希望分发整个包。

我研究了主要和次要升级,我的理解是,如果产品 ID 发生变化,只要升级 ID 保持不变,就会发生主要升级,如果这两个值保持不变,则可以使用次要升级补丁。

我的感觉是,使用补丁进行较小的升级将是处理只有少数文件发生变化并且仅在大量文件发生变化时重建整个安装程序的情况的最佳选择。

我已经使用“torch”对此进行了测试,根据两个“wixpdb”文件之间的差异生成“wixmst”文件,然后从中构建补丁。但是,我发现我只能从一个版本修补到另一个版本(例如,1.0.0 到 1.0.1,然后 1.0.1 到 1.0.2,但不能从 1.0.0 到 1.0.2)。是否可以针对补丁的最低版本并支持高于该版本的任何版本?


打补丁是一件很痛苦的事情,所以当你学习掌握它时,要做好应对大量补丁的准备。这是另一个可能适合您的策略。将您的 MSI 拆分为 2 个 MSI(微软称其为 Micropackages)。拥有一个基本 MSI,其中包含预计不会更改的大部分内容,以及一个小得多的第二个 MSI,其中包含您预计流失率较高的文件。

然后使用 Burn 是一个引导程序来处理将它们链接在一起并将它们一起卸载。这与 Visual Studio 的做法类似。

现在您可以交付第二个 MSI 的主要升级。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何处理 WiX 安装程序中的产品升级? 的相关文章

随机推荐

  • 如何在 C# 中验证 localhost 的 url

    我在 MVC 中使用 UrlAttribute 但它不接受本地主机网址 例如http localhost GCWeb http localhost GCWeb Url ErrorMessage please enter valid ftp
  • 如何在没有互联网的情况下通过 wifi 提供网站服务?

    我想通过开放的 wifi 连接提供网站服务 但我不希望此 wifi 连接能够访问互联网 这是否可能以及我将如何去做 我已经在本地设置了网站 并通过本地主机或 IP 地址在浏览器中进行了访问 但我不确定如何设置网络服务器并通过 wifi 为网
  • 使用 WPF 对象在另一个对象上“打孔”?

    我有一个椭圆 它只是一个圆 我的问题是我想从大圆的中间切出一个圆形的孔 但似乎没有任何效果 我尝试过不透明蒙版 但没有任何效果 更复杂的是 大圆圈具有 DropShadowEffect 但因为这个圆圈是稍微透明的 所以你可以看到它后面有一个
  • Eclipse 文件搜索模式恰好出现两次

    我想对像所示的人那样的文件进行文件搜索here http jgeeks blogspot com 2013 10 searching multiple words in multiple html 我想找到包含以下内容的文件字符串1和字符串
  • 无法访问类的内部接口

    我有一个用于 recyclerview 的适配器类 public abstract class RecyclerViewArrayAdapter
  • 如何配置 BizTalk WCF-SQL 适配器以从 SQL Server 2012“始终在线”副本数据库获取数据?

    我们有一个客户端将使用 SQL Server 2012 的 AlwaysOn 可用性功能 他们希望将 BizTalk WCF SQL 端口连接到只读副本 The 文档 http technet microsoft com en us lib
  • .net 4.0 中引用类型的 volatile

    我很困惑volatile供参考类型 据我了解 对于原始类型 volatile可以立即反映来自另一个线程的值变化 对于引用类型 可以立即反映地址变化 但是 对象的内容呢 它们仍然被缓存吗 假设List Add 是一个原子操作 例如 我有 cl
  • React Native:执行 UI 块时抛出异常

    我正在构建一个 iOS React Native 应用程序 目前正在使用 React Native swipe card 包为我的应用程序构建 tinder 例如刷卡 该应用程序工作正常 但是当我向左或向右滑动卡片 并在它离开屏幕一半时放开
  • 如何在rails控制器中获取上传文件的文件名

    在我的控制器中 如果我根据建议给出以下内容 filename params upload result filename original filename 我正进入 状态 undefined method original filenam
  • Python 是否有相当于 Java 的 AWT Robot 类? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道类似的Python类Java机器人 http java sun com javase 6 docs api java awt Ro
  • WPF DataGrid - 禁用时保留选择

    我已经为此苦苦挣扎了一段时间了 我的应用程序中有一个 主 详细信息 布局 并且像许多其他人一样面临着 DataGrid 在禁用它时丢失其选择的问题 本质上 从列表中选择一个元素来填充一系列字段后 用户按下 编辑 这会禁用 DataGrid
  • ical导出的格式化时间

    我在 jquery 中创建了一个导出到 ical 的日历 但是 我对日期时间有一些问题 ical 导出脚本需要以下格式的日期 时间 19970714T170000Z 有谁知道这是什么以及我应该如何准备我的字符串 Thanks 阅读 RFC
  • 'effect' 在 jsfiddle 中工作正常,但在实时代码中不起作用([object Object] 没有方法 'effect' )

    相关 但不是修复 jQuery 问题 没有方法 https stackoverflow com questions 2988485 jquery issue an object has no method 我收到错误Object objec
  • for 循环范围不起作用 ksh

    我试过这个 bin ksh for i in 1 10 do echo Welcome i times done 在 AIX 机器的 Ksh 中 我得到的输出为 欢迎 1 10 次 这是怎么回事 不是应该打印从1到10吗 编辑 根据 per
  • Windows 上的正则表达式 PCRE

    如何在 Windows 上安装 regex pcre cabal install regex pcre Resolving dependencies Configuring regex pcre 0 94 4 cabal Missing d
  • Dapper SqlMapperExtensions / Dapper.Contrib?

    好像有一个DapperExtensions项目 但是Dapper项目中还有一个SqlMapperExtensions类 有重叠吗 其中一个比另一个更受青睐吗 我找不到有关 Dapper Contrib 的任何文档 Dapper Contri
  • 用于运行异步请求的 Python Celery 与线程库 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在运行一个解析大量数据的 python 方法 由于它是时间密集型的 我想在单独的线程上异步运行它 以便用户仍然可以访问网站 UI 如果用户退
  • 如何关闭 AWS S3 客户端连接

    关闭 aws s3 客户端连接的协议是什么 Override public boolean connect if connected return false else s3Client new AmazonS3Client credent
  • Python:检查目录是否是别名

    python 是否有一个简单的函数来检查目录是否是实际目录或者它是否只是另一个目录的别名 我试图列出目录中的所有文件 文件夹 但由于这些别名文件夹 我丢失了如下所示的内容 系统 库 Java JavaVirtualMachines 1 6
  • 我应该如何处理 WiX 安装程序中的产品升级?

    我有一个相当大的 WiX 安装程序 250 Mb 以上 我正在尝试制定合适的升级策略 安装程序中的大多数文件都不会更改 并且当只有一两个文件发生更改时 我们不希望分发整个包 我研究了主要和次要升级 我的理解是 如果产品 ID 发生变化 只要