2014-03-25 31 views
1

我有一个小问题。删除已安装产品的信息

在卸载过程中,哪个操作会删除已安装的产品信息(已通过PublishProduct操作进行了通告)?

提前致谢。

回答

9

简短回答:InstallFinalize

龙答:它归结为InstallExecuteSequence在于始终运行去除的东西。我对我的blog有更深的调查。

+0

然而读取MSI SDK一遍又一遍,直到它指给你答案不是显而易见的另一个例子。 –

+0

我发现没有明确的声明在MSI SDK中可以澄清这一点,而无需测试?缺少InstallExecuteSequence中的UnpublishProduct和使用/ x进行卸载一起显示如果连接点使用常规卸载序列,但没有明确的说明。感谢您对Rob的调查。 –

+0

哦,谢谢。我没想到会得到如此快速和详细的回应。我在Logs中发现了一些关于取消发布的字符串。我只是被淹没了,没有在标准序列中找到相应的行动。现在很清楚!事实上,没有UnpublishProduct操作。 – Nerielle

2

坦率地说,我从不使用广告,但是如果我猜测我会说广告序列定义了广告期间运行的InstallExecuteSequence的一个子集,并且广告产品的实际卸载实际上正在运行完整在卸载模式下运行InstallExecuteSequence以运行UnPublishComponents,UnPublishFeatures等标准操作......我认为这是合乎逻辑的,因为某些功能可能已经通过按需安装来安装,然后需要完全卸载来清理。

测试此方法的一种方法是在InstallExecuteSequence中插入消息框以确定运行的序列。我现在没有所需的测试工具。再次,直到我已经用调试脚本插入到序列中进行了测试,我无法确定任何事情。

MSI SDKInstallshield's help file可能会提供一些线索。 结束语我想问问为什么你需要知道什么操作会卸载产品信息?也许我们可以提供一种不同的方式来实现你想要做的事情。 MSI的大部分重点都是将大部分工作留在标准化的行动中,干涉这些过程并不好。自定义 操作只能用于无法通过标准操作实现的内容。

相关问题