检查应用程序是否已安装

时间:2008-10-17 05:58:02

标签: c#

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

此致 苛刻的苏曼

3 个答案:

答案 0 :(得分:8)

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

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

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

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

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

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

    有关卸载注册表项的详细信息,请参阅NSIS's page on Add/Remove Programs

答案 1 :(得分:4)

在安装时在注册表中输入一个条目。如果在安装程序运行时,该条目存在,那么该程序已经安装(或者您的用户已经入侵了注册表以使安装程序认为它已经存在)。如果不是,那么你还没有安装它。

答案 2 :(得分:0)

如果您不想在注册表中放置任何内容(由于管理员权限或类似内容),您只需检查您安装的文件夹或文件是否存在。是的,这假设您每次都安装到同一个文件夹,但这是一个选项。