当前位置: 首页 > news >正文

Advanced Installer,搜索注册表,根据注册表选择安装路径

又停了一段时间没有更新了,今天上博客,发现有位朋友就打包的时候需要搜索注册表(不同版本注册表路径不一致,需要搜索多次来确定安装的是哪个版本,然后再来读取之前的安装路径为现在的路径)来实现安装路径自动选择的问题,这里就这个问题来更新一篇关于搜索注册表和设置安装路径的办法,话不多说,开整。


1、确定安装路径所存的变量名称及更改的地方
老鸟可以无视这个步骤,对于新手可以看一下,这里先说结果,安装路径是存在
APPDIR 这个变量里面的,具体查看方式如下:
1>打开Advanced Installer你的工程文件,在Advanced Installer最上面的工具栏中选中Show run log按钮,如下图所示:
这里写图片描述

2>点击上方的Run按钮,启用调试模式,这时程序开始打包,然后自动运行你的安装包,这时你可以发现工具下方出现了调试日志:

这里写图片描述

3>一直下一步,选择一个安装路径后,点击下一步,进入到等待安装的界面。
这里写图片描述
这里写图片描述

4>翻看下方的调试日志,找到 C:\Program Files (x86)\您的公司\您的应用程序\这段文字前方对应的变量名称,那就是 APPDIR。

这里写图片描述

2、找到给APPDIR赋值的地方,当然是在点击浏览后的地方,将浏览按钮删除,然后设置此编辑栏为只读状态,设置后需要再下方的Control Conditions中增加一条:
1 disable,才能真正保证只读。

这里写图片描述

这里写图片描述

3、新建若干个查询项(我这里新建了3个,当然你可以按照自己的需求增加),分别对应需要查询的注册表路径。

这里写图片描述

4、可以对每一个查询项测试一下,这里可以看到,如果注册表中存在此键值,那么返回的查询结果为注册表键值的值,如果不存在,则返回空值,以此来判断路径是否存在。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

5、回到对话框页面,在APPDIR那个编辑栏下方的Init Events初始化条件中加入如下条件:
Set installer property value
property : APPDIR
Argument: [RESULT_PATH1]
Condition: RESULT_PATH1<>””
分别将RESULT_PATH1和RESULT_PATH2、RESULT_PATH3都加进去,最后的效果如下:
这里写图片描述
这里写图片描述

6、大功告成,测试一下:
当PATH1存在:
这里写图片描述

当PATH2存在:
这里写图片描述

搞定。

这里需要注意的是,如果注册表中所有读出来都是空,那么APPDIR的值就会是一个默认的路径,如果不希望是默认路径的话,那么可以增加提示信息,然后强制退出即可。

相关文章:

  • PCI简易通讯控制器驱动的安装办法
  • LoadRunner监控window系统各项指标详解
  • LoadRunner--Analysis各项指标详解
  • Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法
  • Loadrunner调用Webservice接口进行性能测试时的方法及优化总结
  • VC2010及以后版本调用WebService接口的方法
  • 浅谈SDI接口
  • LoadRunner参数从数据库取值解决总条数100的限制
  • Windows服务器高并发处理IOCP(完成端口)详细说明
  • Advanced Installer 数据库连接字段参数和返回参数
  • CentOS7下解决ifconfig command not found的办法
  • WEB和主机漏洞处理总结
  • LoadRunner11 回放日志和View tree中的中文乱码问题解决办法
  • Linux 下磁盘和CPU、内存、网络监控工具
  • 有关蓝牙耳机和蓝牙音频的那点事儿
  • 网络传输文件的问题
  • 10个确保微服务与容器安全的最佳实践
  • Angular6错误 Service: No provider for Renderer2
  • co.js - 让异步代码同步化
  • co模块的前端实现
  • Mithril.js 入门介绍
  • mysql 5.6 原生Online DDL解析
  • Promise面试题,控制异步流程
  • Spark RDD学习: aggregate函数
  • Vue ES6 Jade Scss Webpack Gulp
  • Zsh 开发指南(第十四篇 文件读写)
  • 大整数乘法-表格法
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前嗅ForeSpider中数据浏览界面介绍
  • 深入 Nginx 之配置篇
  • 微信小程序设置上一页数据
  • 微信支付JSAPI,实测!终极方案
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • Spring第一个helloWorld
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​linux启动进程的方式
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (算法)求1到1亿间的质数或素数
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Framework .NET Core与 .NET 的区别
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET导入Excel数据
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [20190113]四校联考