织梦CMS - 轻松建站从此开始!

快乐十分稳赚技巧:罗索

当前位置: 主页>杂项技术>PC常识>

使用installshield 获取注册表,删除注册表判断安装

jackyhwei 发布于 2016-12-23 11:06 点击:次 
为啥好多软件安装新版本的时候他会要求你删除原先的版本在继续进行安装(一开始我的解决方案是将以前注册的dll通过脚本删除,但是发现虽然dll的注册信息删除了,但是其程序还在添加和删

湖南快乐十分玩法 www.7mhm0.cn 家在做安装包的时候常?;嵊龅礁碌任侍?,在使用installshield制作安装包,如果软件版本发生改变,那么更新是自动完成的。但是我们这里有一个问题,在installshield如果新版本的regist信息和旧版本的regist信息发生了改变,比如说注册表结构改变,或是不需要以前的注册表目录想要删除时,那么在运行新的安装程序时候,程序必然会报错。。这样就是为啥好多软件安装新版本的时候他会要求你删除原先的版本在继续进行安装(一开始我的解决方案是将以前注册的dll通过脚本删除,但是发现虽然dll的注册信息删除了,但是其程序还在添加和删除安装程序中,所以此方法不可行)。现在给大家讲下怎么实现判断以前版本是否安装,并提示用户删除。

在installshield里面有Product Code这个选项,它的意思就是一个特定是产品编码,来确定是否是同一个软件的。下面这个是我们旧版本的截图。

新版本的Product Code如下

在更遍了Product Code后,在运行安装包的同时就不会出现升级的界面了,但是这样的话会在机器里面出现一个软件的两个版本,对用户来说这是相当不礼貌的做法啊。

所以我们想如何能判断用户是否安装了以前的版本并提示他删除,这样的话我在注册表信息里面找啊找终于被我找到了。。

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{你的产品Code},如果用户安装了你的软件并且没有卸载就会在这里出现这条注册信息。。

这样的话我们现在的问题就是如何在安装得时候检测到这条注册表信息,并提示用户卸载这个版本。

我们的目的是在安装之前检测并提示所以要在function OnFirstUIBefore()中写入脚本。我找到一个函数

RegDBKeyExist(“\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{你的产品Code}”);

其返回值为-1代表没有找到这条注册信息,1为找到这条注册信息。

使用这个函数前需要使用这个函数来确定进行注册表操作的根目录:

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); 

知道这些后咱们的任务基本完成啦,附上代码:

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);  
 
if(RegDBKeyExist("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{5E3673E9-3F06-40B7-B852-5A52D43316D9}")>0) then
    MessageBox("安装软件检测到较早版本,为保证软件正确安装请卸载该版本,安装程序即将结束。",SEVERE);
    abort;
endif;

其实代码是很简单的,主要是installshield得脚本语言大家都不熟悉,而且网上资料比较少。

删除注册的函数RegDBDeleteKey(string)

给大家我找到的一份installshield的脚本语言函数等的介绍合计,希望对大家以后的工作有所帮助哈!

(doudougou)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [//dev.open365.com.cn/a/201612/17489.html]
本文出处:博客园 作者:doudougou 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
将本文分享到微信
推荐内容

  • 呵呵,有见地,有深度。 2019-05-14
  • 赋予妇女更多权利!沙特首次向女性发驾照 2019-05-14
  • 河流旅行地中国国家地理网 2019-05-13
  • 一行两会传递金融开放信号 沪伦通制度安排就绪  2019-05-01
  • 外媒热议习近平讲话:中国军队现代化速度超越西方想象 2019-04-21
  • 原始社会为何会走向私有制?就是有这样的阶级要过得比共同一起生活更好,要过得比大多数人的生活好,自然就有了阶级斗争,要过得比大多数人更好的阶级就战胜要共同一起生活 2019-04-21
  • 始终坚持以人民为中心的发展思想不断满足群众日益增长美好生活需要 2019-04-14
  • 人民网评:医疗服务应该回归患者本位 2019-04-14
  • 鹿晗解说、姜文定制宣传片 世界杯主题的网综来了 2019-04-12
  • 【北京丰泰康宏车型报价】北京丰泰康宏综合店车型价格 2019-04-10
  • 新生儿生理性黄疸 多吃多拉可助减退 2019-04-03
  • 立秋日 滇池上空出现七彩云霞 2019-04-03
  • 西安楼市进入短暂调整期 摇号细则近日将出 2019-03-25
  • 左手公信,右手公益,两手都硬气 2019-03-25
  • 年龄大了,也想积点口德,已经给你笔下留情了。 2019-03-16
  • 80| 197| 298| 441| 154| 450| 814| 8| 762| 56|