从代码启动卸载程序

时间:2010-07-21 02:09:05

标签: c# .net windows-installer uninstall

我想在我的程序中添加一个“卸载”按钮,它将启动卸载程序以删除程序,然后立即退出。什么是a)确定是否存在卸载程序的最佳方法,以及b)找到正确的卸载程序并启动它?

我可以以可靠的方式使用注册表吗?我记得之前使用注册表修复了一些破坏的安装,并且认为我可以迭代条目并确定适当的条目,但我担心使用注册表可能不可靠和/或在所有系统上工作?

另一个想法是,我实际上可以在安装过程中将卸载信息存储到注册表中,然后使用该信息以某种方式找到正确的卸载程序。这似乎是最可靠的方法,但有没有我可以存储的标识符,然后我可以传回Windows Installer?

1 个答案:

答案 0 :(得分:3)

由于您使用Windows安装程序进行了此操作,我将假设您使用MSI分发应用程序。也就是说,您可以从应用程序中调用msiexec / x {ProductCode}来初始化卸载。您可以通过让安装程序写入应用程序可以读取的注册表项/值来获取产品代码,也可以在应用程序中对其进行硬编码或升级代码。如果您对UpgradeCode进行硬编码,则必须调用Windows Installer API以找出该UpgradeCode的已安装ProductCode。

相关问题