这个InstallShield 安装包中我设置了三种安装语言(英简繁),根据用户需要可以在开始运行安装时选择,具体设置我就不说了,那怎么样实现在安装的最后能有提示一个对话框,提供给用户选择需要立即运行的,就比方在装其他软件时有提示用户是否选择立即运行程序。
这里要通过写程序来实现。我采用的是InstallScript Project这种工程
在InstallScipt的Setup.Rul中,IS内部定义的阶段选择After Move Data,而后面的函数选择OnFirstUIAfter。(Attention:网上也有些关于写这个怎么实现的,但是他们采用的是OnMoved函数,我也曾试过那个函数,但后来发现使用那个函数存在缺点,不仅是在卸载软件时很不合情理的也出现这个选择运行程序的对话框,而且在点击了这个对话框的完成按纽后仍然会弹出一个SdFinish似的Dialog)
所以还是采取OnFirstUIAfter函数较妥当。
在程序展开的OnFirstUIAfter的函数体中先定义参数:
STRING szTitle,szMsg1,szMsg2,szOpt2,szOpt2,szProductName;
NUMBER bvOpt1,bvOpt2;
这里我设置可以根据安装选择的语言,使这个对话框中的显示的语言也不同,需要在这个函数体中加入三段程序。这里我只举在中文简体下的程序,其他两种变换一下就可以了。(因为是要在安装完成后弹出的对话框,所以选择了SdFinish这个Dialog)
在begin后面加入下面这段程序。
Dlg_SdFinish:
if (SELECTED_LANGUAGE =ISLANG_CHINESE_SIMPLIFIED) then
szProductName = "XXXXX";//输入你的软件名
SdProductName (szProductName);
// Setup parameters that will be passed to SdFinish.
szTitle = "安装完成";
szMsg1 = "%P 安装已经完成.\n" +
"请根据需要选择下面的选项.";
szMsg2 = "点击‘完成’按钮完成%P安装.";//%P为软件产品名称
szOpt1 = "阅读帮助文件";//如果这里为空,则表示只有一个选项
szOpt2 = "运行%p";
// Display the SdFinish dialog box.
SdFinish (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2);
if (bvOpt1) then
LaunchApp ('conn.exe',INSTALLDIR ^ "readme.txt");//LaunchApp 用来运行某外部程序,你需要将conn.exe改成你系统需要运行的程序名
endif;
if (bvOpt2) then
LaunchApp (INSTALLDIR ^ "\\conn.exe",""); // 第一个参数,表示目录安装目录,第二个,表示目录下的EXE,第三个,可用来传给EXE的参数
endif;
end;
最后保存,然后Build没有出现错误就OK了.