如何防止Installer.Commit()运行?

时间:2010-07-20 16:19:14

标签: c# windows-installer custom-action

我需要阻止在CustomActions托管代码中运行Installer.Commit方法。 如果我在覆盖的Commit方法中什么也不做,它仍然提交(它在程序和功能列表中创建一个元素),我不希望这样。

如果我说base.Commit(null)它会停止,但弹出错误。如何在没有任何消息的情况下默默地执行此操作?

我可以以某种方式更改savedState,以便它实际上不会提交安装吗?

2 个答案:

答案 0 :(得分:1)

提交不是将产品发布到ARP的责任。 Windows Installer通过PublishProduct标准操作执行此操作,您可以使用ARPSYSTEMCOMPONENT属性禁用它,除了您使用的安装创作工具实际上没有公开它(或者只是MSI可以做的任何事情)。

http://msdn.microsoft.com/en-us/library/aa367750(v=VS.85).aspx

如果您想拥有高质量的安装程序,则不应使用VDPROJ或InstallUtil / InstallerClass自定义操作。

答案 1 :(得分:0)

在这种情况下,我没有找到任何解决方案,但在Commit()之后立即删除了注册表项。

我删除了

中的所有密钥

HKLM \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \产品 其中UninstalString值包含ProductCode(应用程序的GUID)

我也从中删除了一个密钥 HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \卸载SubKey名称== ProductCode

我想还剩下一些东西。我不确定。