目前好多软件在安装完成时都有什么 立刻运行、打开网址、推荐安装其他工具等功能

我司领导也追时髦要求了这个功能而且要推荐多个,所以这个功能实现起来就需要自己去写代码了。陆陆续续研究了研究了好长时间,由于不是专业做安装包的,提出个功能就要研究好久,提出个小问题还要查资料改半天呢,更别说这么大个功能呢。终于今天搞定了,来发个博。希望对用的到的提供帮助,节约点时间。

推荐安装的工具不超过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类型 完成时实现推荐安装其他产品的功能的更多相关文章

  1. zend studio 做前端推荐安装的插件

    zend studio 做前端推荐安装的插件 1.Aptana插件代码提示 Zend Studio的aptana插件,解决了Zend Studio对前台代码支持不足的问题,而且在某些方面还比诸如dw优 ...

  2. SQL Server 2012安装时如何不安装自带的Visual Studio

    不安装以下两个:

  3. Double 类型运算时的精度问题

    double 类型运算时的 计算的精度不高,常常会出现0.999999999999999这种情况,那么就须要用BigDecimal   它是java提供的用来高精度计算的工具类 以下是对这个类的一个包 ...

  4. asp.net mvc视图中使用entitySet类型数据时提示出错

    asp.net mvc5视图中使用entitySet类型数据时提示以下错误 检查了一下引用,发现已经引用了System.Data.Linq了,可是还是一直提示出错, 后来发现还需要在Views文件夹下 ...

  5. CentOS 6.x 最小化安装推荐安装的依赖包和修改内核参数

    CentOS 6.x 最小化安装推荐安装的依赖包 我在日常工作中,新建的xenserver的虚拟机,CentOS release 6.9 (Final)操作系统,采用最小化安装,后续很多操作需要各种依 ...

  6. Ubuntu16.04 安装 wps (不推荐安装)

    一.下载与安装 1.下载:WPS For Linux 下载地址:http://community.wps.cn/download/     ,  下载 wps-office_10.1.0.5672~a ...

  7. .NET向WebService传值为decimal、double、int、DateTime等非string类型属性时,服务器端接收不到数据的问题

    最近在做CRM项目时,使用C#调用SAP PI发布的WebService服务时遇到的问题: 向WebService传值为decimal.double.int.DateTime等非string类型数据时 ...

  8. Ubuntu16.04安装搜狗输入法报错:dkpg:处理归档sogoupinyin.deb(--install)时出错,安装sogoupinyin将破坏fcitx-ui-qimpanel

    系统:ubuntu16.04 事件:安装搜狗拼音时报错 报错信息(ubuntu语言是英文的报错信息): dpkg: regarding sogoupinyin_2.3.2.07_amd64-831.d ...

  9. MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径

    安装环境需求: 自从昨天安装了mysql 5.7,发现了一个问题,mysql5.6起,已经不支持2003系统了,如果安装了无法开启服务而且会出现在 本地计算机 无法启动 MySQL57 服务.错误 1 ...

随机推荐

  1. CentOS安装常用软件

    下载第三方库rpmforge,找到合适自己版本的rpmforge下载,用以支持NTFS格式硬盘和MP3格式音频或其他 http://pkgs.repoforge.org/rpmforge-releas ...

  2. hdu3033I love sneakers! (分组背包,错了很多次)

    Problem Description After months of hard working, Iserlohn finally wins awesome amount of scholarshi ...

  3. Apache与Nginx优缺点比较

    本文来源:收集.整理自互联网 1.nginx相对于apache的优点:  轻量级,同样起web 服务,比apache 占用更少的内存及资源  抗并发,nginx 处理请求是异步非阻塞的,而apache ...

  4. C/C++中使用的正则表达式库

    正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则引擎主要可以分 ...

  5. ListView 条目加载上滑下滑首尾缩放动画实现

    要实现这个效果,只需要再适配器getView之前,给每个条目的view设置相应的动画即可. 首先需要2个动画的xml文件. 在res下新建anim文件夹:(res/anim) 第一个动画xml文件: ...

  6. IQC,QA,FQC,OQC,IPQC的定义与职责

    进货检验员(IQC):CLInetLabIQC(以下简称IQC)是CLInet在多年开发维护EQA(实验室间质量评价)系统后,成功开发的一套完善的实验室内部的质量评价.质量控制的软件.它不仅包含了每家 ...

  7. c++ 静态多态与动态多态

    多态polymorphism是指具有多种形态的情况,它能根据单一的标记关联不同的行为.多态是面向对象程序设计的基础.在面向对象程序设计中的多态是一种运行时的多态.C++中有两种多态,称为动多态(运行时 ...

  8. Codeforces 706D Vasiliy's Multiset(可持久化字典树)

    [题目链接] http://codeforces.com/problemset/problem/706/D [题目大意] 要求实现一个集合中的三个操作,1:在集合中加入一个元素x,2:从集合中删除一个 ...

  9. git 导入代码到已有仓库

    git remote add origin https://----------- git push -u origin master //这两行将该目录下的文件推送到远端(origin)上的 &qu ...

  10. PHP批量下载方法

      PHP批量下载方法 界面: $.get(“< ?php echo url::base(true);?>inventory/report/buildCsv”, //后台路径 {‘para ...