installscript类型 完成时实现推荐安装其他产品的功能
目前好多软件在安装完成时都有什么 立刻运行、打开网址、推荐安装其他工具等功能
我司领导也追时髦要求了这个功能而且要推荐多个,所以这个功能实现起来就需要自己去写代码了。陆陆续续研究了研究了好长时间,由于不是专业做安装包的,提出个功能就要研究好久,提出个小问题还要查资料改半天呢,更别说这么大个功能呢。终于今天搞定了,来发个博。希望对用的到的提供帮助,节约点时间。
推荐安装的工具不超过2个可以 调用SdFinish dialog很容易就实现了(一定注意只能推荐2个),代码如下
bOpt1 = TRUE;
bOpt2 = TRUE;
szOpt1 = "安装xxxx工具1";
szOpt2 = "安装xxxx工具2";
if ( BATCH_INSTALL ) then
SdFinishReboot ( szTitle , szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
else
SdFinish ( szTitle , szMsg1 , szMsg2 , szOpt1 , szOpt2 , bOpt1 , bOpt2 );
endif;
if (bOpt1) then
LaunchApp (SUPPORTDIR ^ "setup1.exe","");
endif;
if (bOpt2) then
LaunchApp (SUPPORTDIR ^ "setup2.exe","");
endif;
实现超过3个上面的代码就无法做了,我曾修改过 SdFinish这个dialog的自带代码,但是给改乱套了,呵呵,改了好久啊,就是搞不定。后来看到有 AskOptions对画框,我就在想完成的时候调用这个dialog为完成,就把dialog改成下图这样了

可是调试的时候他还是原来的样子,并不是我改成这样就这样了。那就得修改它的代码了。在 installscript中调出自带代码

这个dialog有3个按钮。如何将“上一步”“取消”这2按钮给去掉,再将“下一步”按钮的text给改成“完成”就要去 AskOptions 写代码来完成了,只在dialog中改文本,删按钮不管用。运行时代码又会将这个dialog给初始化成开始状态,所以只能去修改代码,找对路改起来也很简单。
找到要隐藏的两个按钮的ID,应该一个是 9,12,下一步的ID应该是1
获取到当前dialog的句柄
hDlg = CmdGetHwndDlg(DLG_ASKOPTIONS);
就在这句下面写下面的代码(隐藏 上一步、取消按钮,修改 下一步 的text叫 完成)
hItem = CtrlGetDlgItem("", hDlg, 9);
ShowWindow(hItem, SW_HIDE);
hItem = CtrlGetDlgItem("", hDlg, 12);
ShowWindow(hItem, SW_HIDE);
SetWindowText(CtrlGetDlgItem("", hDlg, 1),"完成");
即三个按钮修改完了。
OnFirstUIAfter()如何调用就很简单了
推荐安装、打开网址、运行软件等各个操作都可以做了
begin
Dlg_AskOptions:
szMsg = "推荐:";
szText1 = " 运行 XXXX
szText2 = " 打开 XXX网址";
szText3 = " 安装 工具1";
szText4 = " 安装 工具2";
szText5 = " 安装 工具3";
nvCheck1 = TRUE;
nvCheck2 = TRUE;
nvCheck3 = TRUE;
nvCheck4 = FALSE;
nvCheck5 = FALSE;
// Display the check box (NONEXCLUSIVE) dialog.
nValue = NONEXCLUSIVE;
nReturn=AskOptions (nValue, szMsg,
szText1, nvCheck1,
szText2, nvCheck2,
szText3, nvCheck3,
szText4, nvCheck4,
szText5, nvCheck5
);
if (nReturn==NEXT) then
if (nvCheck1) then
LaunchApp(TARGETDIR ^ "XXX.exe","");
endif;
if (nvCheck2) then
LaunchApplication("http://www.taobao.com", "", "", SW_NORMAL, INFINITE, LAAW_OPTION_WAIT | LAAW_OPTION_USE_SHELLEXECUTE );
endif;
if (nvCheck3) then
LaunchApp(SUPPORTDIR ^ "Setup.exe","");
endif;
endif;
Disable(STATUSEX);
end;
installscript类型 完成时实现推荐安装其他产品的功能的更多相关文章
- zend studio 做前端推荐安装的插件
zend studio 做前端推荐安装的插件 1.Aptana插件代码提示 Zend Studio的aptana插件,解决了Zend Studio对前台代码支持不足的问题,而且在某些方面还比诸如dw优 ...
- SQL Server 2012安装时如何不安装自带的Visual Studio
不安装以下两个:
- Double 类型运算时的精度问题
double 类型运算时的 计算的精度不高,常常会出现0.999999999999999这种情况,那么就须要用BigDecimal 它是java提供的用来高精度计算的工具类 以下是对这个类的一个包 ...
- asp.net mvc视图中使用entitySet类型数据时提示出错
asp.net mvc5视图中使用entitySet类型数据时提示以下错误 检查了一下引用,发现已经引用了System.Data.Linq了,可是还是一直提示出错, 后来发现还需要在Views文件夹下 ...
- CentOS 6.x 最小化安装推荐安装的依赖包和修改内核参数
CentOS 6.x 最小化安装推荐安装的依赖包 我在日常工作中,新建的xenserver的虚拟机,CentOS release 6.9 (Final)操作系统,采用最小化安装,后续很多操作需要各种依 ...
- Ubuntu16.04 安装 wps (不推荐安装)
一.下载与安装 1.下载:WPS For Linux 下载地址:http://community.wps.cn/download/ , 下载 wps-office_10.1.0.5672~a ...
- .NET向WebService传值为decimal、double、int、DateTime等非string类型属性时,服务器端接收不到数据的问题
最近在做CRM项目时,使用C#调用SAP PI发布的WebService服务时遇到的问题: 向WebService传值为decimal.double.int.DateTime等非string类型数据时 ...
- Ubuntu16.04安装搜狗输入法报错:dkpg:处理归档sogoupinyin.deb(--install)时出错,安装sogoupinyin将破坏fcitx-ui-qimpanel
系统:ubuntu16.04 事件:安装搜狗拼音时报错 报错信息(ubuntu语言是英文的报错信息): dpkg: regarding sogoupinyin_2.3.2.07_amd64-831.d ...
- MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径
安装环境需求: 自从昨天安装了mysql 5.7,发现了一个问题,mysql5.6起,已经不支持2003系统了,如果安装了无法开启服务而且会出现在 本地计算机 无法启动 MySQL57 服务.错误 1 ...
随机推荐
- web前端学习之路
test 随着自己对于web前端知识了解的越多,越来越发现自己真的好菜 一脸茫然阶段 两年前大学接触网页设计,那时对于网页设计一窍不通,只是看了一本自己大学编的一本入门教材,我甚至不知道那些网页设计的 ...
- asp.net mvc 对象和集合序列化
private List<Model.Organization.Organization> GetOrganiztions(){var organizations = new List&l ...
- Deep Learning(深度学习)学习笔记整理系列之(三)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- 穿透的 div ( pointer-events )
pointer-events 是一個滿有趣的 CSS3 屬性,雖然主要是針對 SVG ,但其中幾個屬性應用在 div 上也是頗有意思.顧名思義,這是一個針對滑鼠事件的屬性,預設值為 auto,若值為 ...
- SGU 248. Integer Linear Programming( 背包dp )
看了半天...发现就是个背包...然后就不打算敲了. 看了一眼forum..顿时吓傻..其他人用了gcd啊什么的各种奇怪的东西..然后还是敲了个背包结果就AC了= =既然写了代码就扔上来吧... -- ...
- 单例模式java实现
package Counter; public class Counter { private int counter; private static Counter instance ...
- VC6神迹外挂的DIY
2014年09月05日 ⁄ 综合 ⁄ 共 8724字 ⁄ 字号 小 中 大 ⁄ 评论关闭 (一)外挂一般都能在游戏的界面中按一个热键(比如F12,HOME等),就可以呼出外挂的窗口,然后在里面进行外挂 ...
- zoj 3171 The Hidden 7's
这道题,我在网上看到两种dp,不过基本原理是一样的,不过感觉还是后面的一种比较巧妙!因为我对动态不是很熟,自能加上一些自己的理解,写上注释. 1) #include <stdio.h> # ...
- SQL Server 内存不足引起的并发症
第一:cpu 1.内存不足就会有频繁的页面调入调出.这个过程是要有cpu的参与的.所以这个要影响cpu! 2.内存不足可能会引有用起执行计划被清除.当起次要执行时.这个就要重编译一次!
- 蓝桥杯之FBI树问题
问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...