原文: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,搜索注册表,根据注册表选择安装路径的更多相关文章

  1. 在注册表中无Python3.5安装路径的情况下安装pywin32-

    当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...

  2. C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

    前言:上篇C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.confi ...

  3. 使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

    前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起 ...

  4. Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法

    原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据 ...

  5. win8.1注册表-修改资源管理器的默认路径regedit

    默认情况下,激活Win8的资源管理器都是直接打开库,对于习惯了以前版本的Windows用户来说,还要重新选择“计算机”才能进入相应的磁盘寻找文件,操作起来很是不便.为此,可以进行设置,让资源管理器默认 ...

  6. 巨蟒django之CRM1 需求分析&&表结构设计&&注册登录验证

    1.需求分析 .项目 ()业务 ()权限的管理 .CRM customer relationship management 客户关系管理系统 .谁来使用CRM? 销售&&班主任& ...

  7. js通过注册表找到本地软件安装路径并且执行

    场景:用js执行本地的安装软件,如果不存在就执行安装 操作步骤: 1.前台js代码 <script type="text/javascript"> function e ...

  8. Visual Studio安装项目中将用户选择的安装路径写入注册表的方法[转]

    在你的工程名上右击 -> View ->Registry(视图 -> 注册表) 在你需要写注册表的主键下,例如我注册firefox插件的例子是: (1)右击HKEY_CURRENT_ ...

  9. ajax+FormData+javascript 实现无刷新表单注册

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. Redis数据存储解决方案

    http://www.tuicool.com/articles/77nUZn 1.背景 1.1 Redis简介 官方网站: http://redis.io/ ,Redis是REmote DIction ...

  2. 三次握手、四次握手、backlog

    TCP:三次握手.四次握手.backlog及其他   TCP是什么 首先看一下OSI七层模型: 然后数据从应用层发下来,会在每一层都加上头部信息进行封装,然后再发送到数据接收端,这个基本的流程中每个数 ...

  3. Display controller

    Field of the Invention The present invention relates to a display controller. Background to the inve ...

  4. Groovy&Gradle总结

    欢迎大家加入QQ群一起讨论: 489873144(android格调小窝) 我的github地址:https://github.com/jeasonlzy 0x01 Groovy 概述 Groovy ...

  5. 更新edmx文件 无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull

    使用EF DBFirst 更新模型的时候,提示的错误,这是VS的EF 引用MYSQL产生的错误,如下图: 解决方案: 1.win+R 打开运行窗口,输入services.msc 回车,然后找到MySQ ...

  6. WinForm - 无边框窗体自定义移动

    为了界面的好看,有时候需要将窗体FormBorderStyle属性设为None,这样就可以根据自己的喜欢来设计界面.但这样窗体无法进行移动的.而且默认的窗体(FormBorderStyle=Sizab ...

  7. zlib minizip 实现解压zip

    #include <stdio.h> #include <string.h> #include "unzip.h" #define dir_delimter ...

  8. mongoDB 入门手册

    MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储 ...

  9. C#实现通过拼多多分享微信公众号实现查询优惠券、佣金比率

    主要实现功能:关注公众号的用户发送拼多多商品链接,后台程序通过链接查找商品优惠券或返佣情况. 说明:使用了niltor 封装的拼多多接口 github地址 ,但是需要注意可能会存在返回模型无法正确解析 ...

  10. mysql 加入柱更改列删除列

    MySQL 加入列,改动列,删除列 ALTER TABLE:加入,改动,删除表的列,约束等表的定义. 查看列:desc 表名; 改动表名:alter table t_book rename to bb ...