安装我的软件时如何检查其他软件

时间:2013-11-07 06:00:16

标签: c# .net setup-deployment

我想创建一个部署软件的设置。我的第一个安装窗口是检查该计算机中安装的主软件(其他软件),因为我需要在主软件的安装文件夹中添加一个支持文件。

在Visual Studio设置部署项目中可以实现吗?

2 个答案:

答案 0 :(得分:1)

您安装的每个软件都必须在Registry中创建条目。您可以从Visual Studio安装项目中读取注册表中的特定条目。

从注册表中检索值

  

如何从中检索计算机的 MediaPath 值   注册表,

计算机的MediaPath值位于以下注册表子项下: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion 您可以使用启动条件检索此值。为此,请按照下列步骤操作:

  • 在Visual Studio .NET中,指向“视图”菜单上的“编辑器”,然后指向 单击“启动条件”。
  • 在Launch Conditions Editor中,单击Search Target Machine。
  • 在“操作”菜单上,单击“添加注册表搜索”。

默认情况下,会添加“搜索RegistryEntry1”。

  • 在“视图”菜单上,单击“属性窗口”以选择“属性” 您在上一步中创建的注册表搜索窗口。
  • 将Name属性值更改为Search for MediaPath。
  • 将Property属性值更改为MEDIA_PATH。

运行安装项目时,将检索MediaPath注册表值 MEDIA_PATH属性。

  • 要在注册表中搜索HKEY_LOCAL_MACHINE,请单击Root 单击属性,然后单击下拉列表框中的vsdrrHKLM 财产价值。
  • 要搜索SOFTWARE \ Microsoft \ Windows \ CurrentVersion子项,请键入 RegKey属性中的SOFTWARE \ Microsoft \ Windows \ CurrentVersion 价值文本框。
  • 要搜索MediaPath值,请在“值”中键入MediaPath 财产价值文本框。

更多See Hare

答案 1 :(得分:1)

以下代码对我来说工作正常

    /// <summary>
    /// To check software installed or not
    /// </summary>
    /// <param name="controlPanelDisplayName">Display name of software from control panel</param>
    private static bool IsApplictionInstalled(string controlPanelDisplayName)
    {
        string displayName;
        RegistryKey key;

        // search in: CurrentUser
        key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
        if (null != key)
        {
            foreach (string keyName in key.GetSubKeyNames())
            {
                RegistryKey subkey = key.OpenSubKey(keyName);
                displayName = subkey.GetValue("DisplayName") as string;
                if (controlPanelDisplayName.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
                {
                    return true;
                }
            }
        }

        // search in: LocalMachine_32
        key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
        if (null != key)
        {
            foreach (string keyName in key.GetSubKeyNames())
            {
                RegistryKey subkey = key.OpenSubKey(keyName);
                displayName = subkey.GetValue("DisplayName") as string;
                if (controlPanelDisplayName.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
                {
                    return true;
                }
            }
        }
        // search in: LocalMachine_64
        key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall");
        if (null != key)
        {
            foreach (string keyName in key.GetSubKeyNames())
            {
                RegistryKey subkey = key.OpenSubKey(keyName);
                displayName = subkey.GetValue("DisplayName") as string;
                if (controlPanelDisplayName.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true)
                {
                    return true;
                }
            }
        }
        // NOT FOUND
        return false;
    }