我不确定如何使用C#专门执行此操作,但在使用Nullsoft Installer时,这是我见过的方法:在安装之前,检查安装期间创建的注册表项.
卸载程序显示在"添加/删除程序"控制面板中.卸载程序列表存储在HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall下.如果安装程序注册了卸载程序,则卸载程序的密钥是安装程序检查的好密钥,因为:
假设正在为所有用户安装程序,则测试的密钥必须在HKey Local Machine(HKLM)下,而不是特定于当前用户的密钥(HKey当前用户).卸载程序的密钥在HKLM下
有时需要并排安装同一程序的多个版本.卸载程序密钥应特定于每个版本,因此可以添加规则以根据已安装的版本检查安装程序的版本号.
检查注册表项是否已安装程序存在限制:如果程序是手动删除程序文件(不使用卸载程序),则重新安装将失败.为避免此问题,在找到卸载程序注册表项后,安装程序可以检查卸载程序是否仍然存在.如果是这样,假设程序仍然安装可能是安全的.
在使用安装程序和有条件安装时,值得记住的是,有时重新安装对于清理问题很有用.被迫通过(麻烦)卸载来重新安装可能会很乏味.
有关卸载注册表项的更多详细信息,请参阅NSIS的"添加/删除程序"页面.