Advanced Installer,搜索注册表,根据注册表选择安装路径
原文: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的值就会是一个默认的路径,如果不希望是默认路径的话,那么可以增加提示信息,然后强制退出即可。
Advanced Installer,搜索注册表,根据注册表选择安装路径的更多相关文章
- 在注册表中无Python3.5安装路径的情况下安装pywin32-
当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...
- C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)
前言:上篇C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.confi ...
- 使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)
前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起 ...
- Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法
原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据 ...
- win8.1注册表-修改资源管理器的默认路径regedit
默认情况下,激活Win8的资源管理器都是直接打开库,对于习惯了以前版本的Windows用户来说,还要重新选择“计算机”才能进入相应的磁盘寻找文件,操作起来很是不便.为此,可以进行设置,让资源管理器默认 ...
- 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证
1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...
- js通过注册表找到本地软件安装路径并且执行
场景:用js执行本地的安装软件,如果不存在就执行安装 操作步骤: 1.前台js代码 <script type="text/javascript"> function e ...
- Visual Studio安装项目中将用户选择的安装路径写入注册表的方法[转]
在你的工程名上右击 -> View ->Registry(视图 -> 注册表) 在你需要写注册表的主键下,例如我注册firefox插件的例子是: (1)右击HKEY_CURRENT_ ...
- ajax+FormData+javascript 实现无刷新表单注册
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- html5和html的区别是什么(精问)
html5和html的区别是什么(精问) 一.总结 一句话总结:html5:简洁(文档生命,链接引入) 语义化(语义化标签) API(canvas,地理位置等) 一些标签(input新类型) 二. ...
- 移动端iPhone系列适配问题的一些坑
完成移动端的开发项目之后,发现谷歌自带的调试器似乎没有什么太大的作用,整天借同事的苹果手机测bug,尽管同事不厌其烦,但还是觉得这iPhone系列适配问题适配到想逃逃逃,好在项目已经顺利完成,测试通过 ...
- 【bzoj2809】派遣 (左偏树)
传送门 题目分析 每个节点都是一颗(大根堆)左偏树,先按bfs序存入数组,然后倒着从底层开始:如果当前节点的子树sum > m 那么就把根节点删去,然后统计更新答案,并将这棵树和父节点合并. c ...
- 【心情】2016ICPC青岛站打铁记
Day0 下午到的青岛; 然后就在下面这两个地方转了很久:一直找不到公交站台 路上还看到了一个类似堡垒的东西:感觉屌屌的. 然后在落日的余晖下:我们找到了公交站台; 路上不知道他们在讨论什么:GPS什 ...
- CentOS虚拟机克隆后IP设置
1.网卡设置 vim /etc/udev/rules.d/70-persistent-net.rules 将新生成的eth1改名为eth0,并将原来的eth0注释或删除,同时复制mac地址 2.IP设 ...
- AndroidStudio一步步教你修改项目包名(最详细,最易懂)
如果你看了很多篇博文还是修改不了包名,我相信这篇可以帮你解决修改包名的问题 修改项目包名,实现不覆盖安装(如果只是想不覆盖安装,更改build.gradle里面的包名就OK了,那这篇博文到这里就可以结 ...
- Android SDK location should not contain whitespace, as this cause problems with NDK tools
解决方案一: The easiest solution is to move the SDK somewhere else, where there is no space or other whit ...
- spring-boot-starter-parent 1.3.6.RELEASE
2016-11-17 23:43:17.979 DEBUG 3944 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Creating share ...
- OpenCL编译环境配置(VS+Nvidia)
英伟达的显卡首先要下载安装CUDA开发包,可以参考这里的步骤: VS2015编译环境下CUDA安装配置 安装好CUDA之后,OpenCL的配置就已经完成了80%了,剩下的工作就是把OpenCL的路 ...
- RabbitMQ及其.NET客户端——几个小例子
一.简单生产者-消费者(使用direct交换器) 1.生产者 var factory = new ConnectionFactory();//实例化一个工厂 factory.HostName = &q ...