我需要阻止在CustomActions托管代码中运行Installer.Commit方法。 如果我在覆盖的Commit方法中什么也不做,它仍然提交(它在程序和功能列表中创建一个元素),我不希望这样。
如果我说base.Commit(null)它会停止,但弹出错误。如何在没有任何消息的情况下默默地执行此操作?
我可以以某种方式更改savedState,以便它实际上不会提交安装吗?
答案 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
我想还剩下一些东西。我不确定。