WiX - 允许*手动*卸载一个 msi 以卸载另一个共享相同 UpgradeCode 的 msi(而不仅仅是在 MajorUpgrade 期间)
WiX - Allowing a *manual* uninstall of one msi to uninstall another msi that shares the same UpgradeCode (and not just during the MajorUpgrade)
我有一个引导程序(C# windows 形式的应用程序)可以从其资源中连续触发两个不同的 msi 文件。 msi 之间的实例转换是 'paired',这样来自第一个 msi 的一个实例转换与来自第二个 msi 的一个实例转换共享一个 UpgradeCode;这些是通过引导程序一起安装的对。
'core' msi(运行s 的第一个 msi)包含 MajorUpgrade 元素,这样当更高版本的 'core' msi 是 运行 时,所有相关首先卸载版本较低的产品 - 这包括通过第二个 msi 安装的辅助程序,因为它使用相同的 UpgradeCode 并被识别为相关产品。这是我想要的行为,所以很好,但是如果我通过控制面板手动卸载 'core' msi 程序,它只会安装那个程序。我也想让它卸载辅助程序,即使我手动卸载了 'core' 一个。
是否需要编写一个自定义函数,通过ProductCode 手动调用卸载副msi 的程序?例如,按照此处:
Wix - uninstall different product
或者,我可以将 RemoveExistingProducts 明确安排为 运行 以进行卸载吗?类似于:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize">REMOVE</RemoveExistingProducts>
</InstallExecuteSequence>
这不可能,因为在 'core' msi 的 InstallFinalize 之后,它对辅助 msi 一无所知?基本上,我想知道我是否也可以使用 RemoveExistingProducts 标准操作来手动卸载案例,就像它对 MajorUpgrade 案例所做的那样。
提前致谢。
不幸的是,答案是否定的。
RemoveExistingProducts 不会在维护操作期间触发。
您将在日志文件中的某些行表明:
跳过 RemoveExistingProducts 操作:当前配置是维护模式或卸载
您尝试做的事情通常是通过使用引导程序应用程序来实现的。
您探索过 Wix 的引导功能 Burn 吗?
Burn 应该能够轻松处理您的要求。
如果您不适合使用 Burn,那么除了编写您自己的自定义代码来实现此目的之外,我看不到任何其他选择。
希望这对您有所帮助。
我有一个引导程序(C# windows 形式的应用程序)可以从其资源中连续触发两个不同的 msi 文件。 msi 之间的实例转换是 'paired',这样来自第一个 msi 的一个实例转换与来自第二个 msi 的一个实例转换共享一个 UpgradeCode;这些是通过引导程序一起安装的对。
'core' msi(运行s 的第一个 msi)包含 MajorUpgrade 元素,这样当更高版本的 'core' msi 是 运行 时,所有相关首先卸载版本较低的产品 - 这包括通过第二个 msi 安装的辅助程序,因为它使用相同的 UpgradeCode 并被识别为相关产品。这是我想要的行为,所以很好,但是如果我通过控制面板手动卸载 'core' msi 程序,它只会安装那个程序。我也想让它卸载辅助程序,即使我手动卸载了 'core' 一个。
是否需要编写一个自定义函数,通过ProductCode 手动调用卸载副msi 的程序?例如,按照此处:
Wix - uninstall different product
或者,我可以将 RemoveExistingProducts 明确安排为 运行 以进行卸载吗?类似于:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize">REMOVE</RemoveExistingProducts>
</InstallExecuteSequence>
这不可能,因为在 'core' msi 的 InstallFinalize 之后,它对辅助 msi 一无所知?基本上,我想知道我是否也可以使用 RemoveExistingProducts 标准操作来手动卸载案例,就像它对 MajorUpgrade 案例所做的那样。
提前致谢。
不幸的是,答案是否定的。 RemoveExistingProducts 不会在维护操作期间触发。 您将在日志文件中的某些行表明:
跳过 RemoveExistingProducts 操作:当前配置是维护模式或卸载
您尝试做的事情通常是通过使用引导程序应用程序来实现的。 您探索过 Wix 的引导功能 Burn 吗? Burn 应该能够轻松处理您的要求。
如果您不适合使用 Burn,那么除了编写您自己的自定义代码来实现此目的之外,我看不到任何其他选择。
希望这对您有所帮助。