繁体   English   中英

更改已安装的 MSI

[英]Making changes to installed 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。 但是补丁并没有改变安装的任何内容,而是改变了 package 本身。 可能吗?

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

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

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


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

示例这是我目前能找到的最简单的小升级示例(FireGiant 文档中的另一个示例)。

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

  • 请记住,小升级有很多限制 保持简单,只更改解决问题所需的内容。

次要升级详细信息此处底部的表格显示了次要升级需要更改的内容。 本质上是package 代码产品版本+加上您想要实施的任何更改 上面的链接是 InstallShield 的文档(一个不同的 MSI 工具),但这是一个通用的 MSI 技术概念 - 它不是特定于供应商的。

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

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

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


链接:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM