0

实际问题:我们第一次安装产品​​时,我们可以在控制面板中看到3个程序,1个主(A)和2个链接(B,C)。可以说,我们现在将 B 更新为新版本。此版本更新已为 B 分配了新的 ProductCode。但新的产品代码未在 master(A) 中更新,这破坏了链式包层次结构。由于 master(A) 在其 IsChainedPackage 表中没有新的 ProductCode,因此在卸载 A 的同时无法卸载 C&B。

我正在尝试从注册表中获取值并将其分配给 MSI 的“IsChainPackage”表中的列之一。

我发现我可以创建自定义操作并为公共财产分配价值。但我无法在 IsChainPackage 表的 ProductCode 列中找到如何使用此属性。我正在寻找一种解决方案,我可以在其中更新 Media->Releases->Pckg1/Pckg2 行下的 ProductCode 字段,并使用注册表中存在的值。可能吗?

或者,当产品(比如 A)开始卸载时,我可以使用 ProductCode 卸载不同的产品(比如 B)吗?我的意思是,当我们单击卸载 A 时,首先我要卸载 B,然后是 A。我可以通过一些自定义操作来完成吗?如果是,我需要在该自定义操作中进行哪些设置?

4

1 回答 1

0

您是否使用套件安装程序来安装所有 3 个产品或 InstallScript?

无论哪种方式,您都可以编写自定义操作来使用 msiexec.exe 运行卸载程序。Stein Åsmul 在这篇文章中有一个很好的卸载参考:

Stein Åsmul 深入卸载参考

于 2018-06-12T14:44:09.653 回答