C# 检查软件是否已安装,如果未安装,则使用c安装#

C# 检查软件是否已安装,如果未安装,则使用c安装#,c#,wpf,regedit,C#,Wpf,Regedit,我已经完成了我的C#WPF应用程序,但我有一个小问题: 我的WPF应用程序必须需要Adobe flash和.net framework以及少量软件才能正常运行。 因此,如果这些软件没有安装在客户端系统中,这个应用程序必须自动逐个安装,而不是由用户自行安装 我想使用“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”进行检查,但不知道如何完成 string uninstallKey = @"SOFT

我已经完成了我的C#WPF应用程序,但我有一个小问题:

我的WPF应用程序必须需要Adobe flash和.net framework以及少量软件才能正常运行。
因此,如果这些软件没有安装在客户端系统中,这个应用程序必须自动逐个安装,而不是由用户自行安装

我想使用“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”进行检查,但不知道如何完成

string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
            RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey);
            {
                foreach (string skName in rk.GetSubKeyNames())
                {
                    RegistryKey sk = rk.OpenSubKey(skName);
                    {
                        if (sk.GetValue("DisplayName") == "Adobe Flash Player ActiveX")
                        {
                            MessageBox.Show("Installed");

                           // how to run the software one by one here???????

                        }

                    }
                }
            }
有什么解决办法吗


注意:我将此应用程序交给pen drive中的用户,因此我将所有需要的软件安装程序都放在pen drive中。

为应用程序创建自己的安装程序是一个耗时且容易出错的过程,考虑到已经存在的众多安装程序,处理这个过程毫无意义

我个人的建议是检查(WiX)。它是完全免费的,允许您使用外部软件包构建完全定制的安装程序/卸载程序,并直接集成到VisualStudio中


手动操作并不像检测注册表项那么简单;您必须处理过时的版本、文件权限、安装选项,以及即使注册表项存在,系统上也可能不存在该程序的可能性(仅举几个障碍)。WiX将使用Windows Installer数据库引擎的强大功能来管理您的程序版本和外部依赖项。

时间已晚,但得到了答案,您的问题对我也很有帮助,因此谢谢:)


你的应用程序有安装程序吗?也许先检查一下这里,这根本不是C#问题,而是如何部署应用程序@mikez是的,事实上,我将此应用程序放在pen drive中给用户,所以我将所有软件安装程序都放在pen drive中。@Brandin我将所有设置都放在pen drive中,所以我要做的是,当我打开应用程序时,从pen drive在客户端系统中自动安装adobe flash,如果没有。您使用的是什么安装程序?Anks用于回复,但我需要通过编码来完成同样的操作。WiX toolkit正在编码,这是一个您添加到解决方案中的项目,然后编写XML来指导引擎的安装要求。为什么要重新发明轮子,花时间在一个已经被其他了解安装程序数据库内部的人完善的过程中排除错误?
var keyName = @"SOFTWARE\Microsoft\Silverlight";
            using (var regKey = Registry.LocalMachine.OpenSubKey(keyName))
            {
                var version = regKey.GetValue("Version");
                if (version + "" == "5.1.30514.0")
                {
                    MessageBox.Show("Installed");
                }
                else
                {
                    MessageBox.Show("Uninstalled");
                }
                var DisplayName = regKey.GetValue("DisplayName");
                lsitBox1.Items.Add(version);
                // lsitBox1.Items.Add(DisplayName);
            }