检查应用程序是否已安装

4 c#

我想检查是否通过启动条件安装了一个应用程序.如果是,我想退出安装程序,如果没有安装继续.有人可以告诉如何在c#installer中实现此目的吗?

此致,苛刻的苏曼

Jon*_*ght 8

我不确定如何使用C#专门执行此操作,但在使用Nullsoft Installer时,这是我见过的方法:在安装之前,检查安装期间创建的注册表项.

卸载程序显示在"添加/删除程序"控制面板中.卸载程序列表存储在HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall下.如果安装程序注册了卸载程序,则卸载程序的密钥是安装程序检查的好密钥,因为:

  1. 假设正在为所有用户安装程序,则测试的密钥必须在HKey Local Machine(HKLM)下,而不是特定于当前用户的密钥(HKey当前用户).卸载程序的密钥在HKLM下

  2. 有时需要并排安装同一程序的多个版本.卸载程序密钥应特定于每个版本,因此可以添加规则以根据已安装的版本检查安装程序的版本号.

检查注册表项是否已安装程序存在限制:如果程序是手动删除程序文件(不使用卸载程序),则重新安装将失败.为避免此问题,在找到卸载程序注册表项后,安装程序可以检查卸载程序是否仍然存在.如果是这样,假设程序仍然安装可能是安全的.

在使用安装程序和有条件安装时,值得记住的是,有时重新安装对于清理问题很有用.被迫通过(麻烦)卸载来重新安装可能会很乏味.

有关卸载注册表项的更多详细信息,请参阅NSIS的"添加/删除程序"页面.


Cla*_*diu 5

在安装时在注册表中放置一个条目。如果在安装程序运行时存在该条目,则表明该程序已安装(或者您的用户黑过注册表以使安装程序认为已经存在)。如果不是,那么您尚未安装它。