检查软件是否安装,如果没有,则使用c#安装
本文关键字:安装 如果没有 软件 检查 是否 | 更新日期: 2023-09-27 18:17:08
我已经完成了我的c# WPF应用程序,但是我有一个小问题:
我的WPF应用程序必须需要Adobe flash和。net框架以及一些软件才能正常运行。
因此,如果客户端系统中没有安装这些软件,则该应用程序必须逐个自动安装这些软件,而不是由用户自行安装。
我有关于使用"HKEY_LOCAL_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???????
}
}
}
}
任何解决方案? ?
注意:我给这个应用程序的用户在笔驱动器,所以我把所有需要的软件设置在笔驱动器本身。
为应用程序创建自己的安装程序是一个耗时且容易出错的过程,考虑到已经存在的大量安装程序,处理这个过程毫无意义。
我个人的建议是检查Windows Installer XML Toolkit (WiX)。它是完全免费的,并且允许您使用外部包构建完全自定义的安装程序/卸载程序,并直接集成在Visual Studio中。
尝试手工执行此操作并不像检测注册表项那么简单;您必须处理过时的版本、文件权限、安装选项,以及即使注册表项存在,程序也可能在系统上不存在的可能性(仅举几个障碍)。WiX将通过使用Windows Installer数据库引擎的功能来管理您的程序版本和外部依赖项。
太晚了,但是我得到了答案,你的问题对我也很有帮助,所以谢谢你:)
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);
}