一、获取安装包ProductCode后,再获取安装包DisplayVersion,比对安装包版本,确定是否更新当前应用(重新下载安装包,并运行安装包)

     //获取当前应用程序的安装包的ProductCode属性值 (更多信息请查看注册表)
   public static string GetProductCode(string productName)
{
string productCode = string.Empty;

string x86 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; // 如果是32位操作系统,(或者系统是64位,程序也是64位)
string x64 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; // 如果操作系统是64位并且程序是32位的

RegistryKey keyUninstall = Registry.LocalMachine.OpenSubKey(x86, true);
if (keyUninstall == null) keyUninstall = Registry.LocalMachine.OpenSubKey(x64, true); //32位节点找不到则找64位节点

foreach (string subkey in keyUninstall.GetSubKeyNames())
{
if (!subkey.StartsWith("{") || !subkey.EndsWith("}")) continue;
RegistryKey key = keyUninstall.OpenSubKey(subkey);
string _displayname = key.GetValue("DisplayName") == null ? string.Empty : key.GetValue("DisplayName").ToString();
if (_displayname.StartsWith(productName)) productCode = subkey;
}
return productCode;
}
//安装新的安装包完成更新,如果完整文件名有空格,完整文件名使用双引号

//Using System.Diagnostics

Process.Start("msiexec", "/passive /i 安装包完整文件名.msi");    

注册表信息(安装包ProductCode,设置启动运行)的更多相关文章

  1. C#读取注册表信息

    注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...

  2. 修改注册表信息来兼容当前WebBrower程序

    public class WebBrower { /// <summary> /// 修改注册表信息来兼容当前程序 /// /// </summary> public stat ...

  3. 没啥用,更换注册表信息使webbrower选择适合的版本

    /// <summary>            /// 修改注册表信息来兼容当前程序            ///             /// </summary>   ...

  4. 最原始的COM组件调用过程(不使用注册表信息)

    最原始的COM组件调用过程(不使用注册表信息) 最近因为项目的关系开始研究COM组件了,以前都认为COM过时了,所以也没怎么接触. 现在好好补补课了. 一般调用COM都是通过注册表找到它的位置, 然后 ...

  5. 安装VisualStudio时失败,错误信息安装包失败或证书不在有效期内

    本人安装VisualStudio2012的时候,安装失败有:错误信息安装包失败或证书不在有效期内等 网上查找相关信息,得到的答案很少,我重新网上下载同版本软件继续之前的下载,但还是无效 之后我把软件卸 ...

  6. python测试开发django-35.xadmin注册表信息

    前言 xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件. 然后在adminx.py文件控制页面 ...

  7. 【Visual Installer】如何读取与写入注册表信息

    引入:using Microsoft.Win32; (1)读取注册表信息 代码: RegistryKey rsg = null; rsg = Registry.LocalMachine.OpenSub ...

  8. 从Windows系统服务获取活动用户的注册表信息(当前活动用户的sessionId. 当前活动用户的 hUserToken)

    首先,对“活动用户”的定义是,当前拥有桌面的用户.对于Windows XP及其以后的系统,即使是可以多个用户同时登录了,拥有桌面的也仅仅只有一个. 如果系统级服务调用Windows API来获取注册表 ...

  9. C# Winform打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK ...

随机推荐

  1. Neural Network学习(二)Universal approximator :前向神经网络

    1. 概述 前面我们已经介绍了最早的神经网络:感知机.感知机一个非常致命的缺点是由于它的线性结构,其只能做线性预测(甚至无法解决回归问题),这也是其在当时广为诟病的一个点. 虽然感知机无法解决非线性问 ...

  2. Nginx开启GZIP来压缩网页

    HTTP协议上的GZIP编码是一种用来改进web应 用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中 ...

  3. JavaScript小知识

    1.<script>标签的出现使整个页面因脚本解析.运行而出现等待: 2.合并脚本,每个 HTTP请求都会产生额外的性能负担,下载一 个 100KB 的文件比下载四个 25KB的文件要快: ...

  4. git 忽视大小写

    git config core.ignorecase false http://stackoverflow.com/questions/3011625/git-mv-and-only-change-c ...

  5. c#中实现多个接口出现同名同参的方法

    IDictionary接口类同时继承了 IEnumerable<KeyValuePair<TKey, TValue>> 和 IEnumerable这两个接口 public in ...

  6. WAP端 经验记录2

    1. LightboxV2 插件 点击A 应该关闭弹层的效果,但是 SAMSUNG 手机上原生浏览器上,看上去不会关闭却跳转了,但当点击回退按钮的时候就会看见弹层已经消失(其实之前的关闭效果已经记录了 ...

  7. phpstorm之端点跟踪

    如果在断点没有实时染色,首要请检查local与remote的代码文件的对应.

  8. TextView实现歌词同步

    利用TextView实现歌词同步显示,这是一个简单的利用TextView实现滚动实时显示歌词的. 里面的内容都已经写上了详细的注释.里面播放音乐的时候歌词同步展示. 做媒体这块的朋友可以学习一下,练练 ...

  9. html初学者了解的笔记02

    一.Html简介 HTML 是一种标记语言 忽略大小写,语法宽松 使用 HTML 标记和元素,可以: 控制页面和内容的外观 发布联机文档 使用 HTML 文档中插入的链接检索联机信息 创建联机表单,收 ...

  10. Oracle nvchar2和varchar2区别分析

    Oracle nvchar2和varchar2区别分析: [注意]VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容.VA ...