微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改已安装的 MSI

如何解决更改已安装的 MSI

我将尝试通过示例来解释这个问题。我有 mypackage-v1.0.msimypackage-v1.1.msi。静安装的两个包都需要 PASSWORD 参数:

msiexec /i mypackage-v1.0.msi /qb PASSWORD=SomeThing1

mypackage-v1.0.msi 已安装,mypackage-v1.1.msi升级 mypackage-v1.0.msi。两个包中都有一个依赖此参数的自定义操作,但由于在 mypackage-v1.0.msi 中调节此自定义操作存在问题,因此在升级期间会执行该操作,但不会将 PASSWORD 参数传输给它。

我想知道是否有办法在升级到 mypackage-v1.1.msi 之前修补 mypackage-v1.0.msi。但是补丁并没有改变安装的任何内容,而是包本身。可能吗?

编辑: 更集中的输入 - 是否可以使用补丁替换 InstallExecuteSequence 自定义操作的条件?

Reference to actions displayed in Orca

解决方法

是的。补丁包括修改包的转换。事实上,补丁总是会修改包中的表,即使它们没有更改有效负载文件的内容。

,

上面的评论变得太乱了。这是一个快速重写的常规答案:


次要升级:在调用卸载或升级序列之前,次要升级可以更改已安装的 MSI 包中的大部分内容。因此,它可以修复与重大升级或卸载失败等相关的问题(您可以在调用之前修复卸载顺序)。

示例Here is the simplest sample of a minor upgrade 我现在可以找到 (another sample from FireGiant's documentation)。

  • 对于简单示例:打开 CreatePatch.cmd 并更新 WiX 二进制文件的路径(此时可能以 v3.11 结尾:set wixDir="C:\Program Files (x86)\WiX Toolset v3.11\bin\")。

  • 记住 a minor upgrade has many limitations。保持简单,只更改解决问题所需的内容。

次要升级详情The table at the bottom here 显示了次要升级需要更改的内容。基本上是包代码产品版本 + 加上您想要实施的任何更改。上面的链接指向 InstallShield 的文档(不同的 MSI 工具),但这是一个通用的 MSI 技术概念 - 它不是特定于供应商的。

您可以将次要升级作为新的 MSI 或补丁文件 (*.msp) 交付。对于 MSI,您需要使用特殊的命令行进行安装。像这样:

msiexec.exe /i MySetup.msi REINSTALLMODE=vomus REINSTALL=ALL

v 告诉 msiexec 重新缓存 MSI,以便它“就地”更新现有缓存。


链接:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。