正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、当我们用项目向导生成的新项目时,InstallShield只为我们生成两个事件,分别是OnFirstUIBefore和OnMoving,它们的意义是,
OnFirstUIBefore:在应用程序第一次安装时为了搜集用户信息而弹出的对话框之前,应用程序所响应的事件。
OnMoving:该事件在当所选择的安装组件正在安装或反安装时响应。
2、在OnFirstUiBefore()中添加以下代码,检测.NET Framework2.0及SqlServer2000
- //----------------------------------------------------------------
- SdShowMsg ( "安装程序正在检测系统必备组件...... ",TRUE);
- Delay(2);
- SdShowMsg ("",FALSE);
- //-------------------------------------------------------
- SetDotNet:
- //判断是否安装了.netframework
- RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
- if ( RegDBKeyExist ("SOFTWARE//Microsoft//.NETFramework//policy//v2.0" ) < 0) then
- SprintfBox(MB_OK,".NET安装","尚未安装.net framework 2.0 !/n请点击“确定”以继续安装!");
- if( LaunchAppAndWait( SUPPORTDIR ^ "dotnetfx.exe" , "/q:a/l" ,WAIT) < 0) then
- SprintfBox(MB_OK,".NET安装","安装.net框架时发生意外,请重新安装!");
- else
- SprintfBox(MB_OK,".NET安装",".NET FrameWork 2.0已安装!");
- endif;
- endif;
- //----------------------------------------------------------------------
- SetSqlServer:
- //判断是否安装了SQL Server
- RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
- if ( RegDBSetKeyValueEx ("SOFTWARE//Microsoft//Microsoft SQL Server//80//MSSQLLicenseInfo//MSSQL8.00//DisplayName","DisplayName",REGDB_STRING,"SQL Server 2000",-1 ) < 0) then
- SprintfBox(MB_OK,"SQL Server 2000 安装","尚未安装SQL Server 2000 !/n请点击“确定”以继续安装!");
- if( LaunchAppAndWait( SUPPORTDIR ^ "SQL 2000 Enterprise//AUTORUN.EXE.exe" , "/q:a/l" ,WAIT) < 0) then
- SprintfBox(MB_OK,"SQL Server 2000 安装","安装SQL Server 2000 时发生意外,请重新安装!");
- else
- SprintfBox(MB_OK,"SQL Server 2000 安装","SQL Server 2000 已安装!");
- endif;
- endif;
复制代码
其中:dotnetfx.exe放在 Behavior and Logic->Support Files->Language Independent下
在Behavior and Logic->Support Files->Advanced Files->Disk1下右击Insert Forder 将SqlServer 2000的安装盘(目录为SQL 2000 Enterprise)加进来。
3、在OnFirstUiBefore()中添加以下代码,设置背景图片
- //-----------------------------------------------------------------------
- //设置背景图片
- SetTitle("欢迎您使用银河卡电子产品", 24, WHITE);
- SetTitle( "安装“网上阅卷系统”",0,BACKGROUNDCAPTION);
- Enable(FULLWINDOWMODE);
- Enable(BACKGROUND );
- // PlaceBitmap (SUPPORTDIR^"BackGround.bmp",0,0,0,UPPER_LEFT); //左上角显示图片
- // PlaceBitmap (SUPPORTDIR^"BackGround.bmp",0,0,0,FULLSCREENSIZE); //全屏显示图片
- //PlaceWindow ( BILLBOARD , 200 , 40 , UPPER_LEFT ); //平铺logo
- //SetDisplayEffect(EFF_FADE);//设置显示效果
- // PlaceWindow ( BILLBOARD , 200 , 40 , UPPER_LEFT );
- //PlaceWindow(BACKGROUND,10,10,UPPER_LEFT); //背景窗口的位置为左上方开始10,10
- SetColor(BACKGROUND,RGB (0, 128, 128));
复制代码
其中图片加在 Behavior and Logic ->Support Files/Billboards->Billboards->Language Independent下(图片必须是bmp文件,而且是16位的图片,命名为Bbrdn.bmp,其中n为1,2,3……等。)
在安装进度的时候会每2秒钟更换一次图片。
4、修改对话框左侧,和上面的logo图片(在上面代码的下面即可)
- //----------------------------------------------------------------
- szBmpPath=SUPPORTDIR+"//left.bmp;1;0,0,0"; //图片有白色的背景,所以设置白色为透明色
- //SizeWindow (METAFILE,50, 50);
- DialogSetInfo (DLG_INFO_ALTIMAGE, szBmpPath,TRUE); // 设置左边的logo图片
复制代码
注意:szBmpPath需要定义
4、加入快捷方式(包括了添加卸载功能)
下面的代码在OnFirstUIAfter()中写入
- //-------------------------------------------------------
- // 在桌面上添加快捷方式
- AddFolderIcon(FOLDER_DESKTOP,"网上阅卷系统首页","http://192.168.1.23:8080/Default.aspx",TARGETDIR,TARGETDIR+"//TempIco//021.ico",0,"",REPLACE);
- //添加程序快捷方式
- AddFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装","网上阅卷系统首页","http://192.168.1.23:8080/Default.aspx",TARGETDIR,TARGETDIR+"//TempIco//021.ico",0,"",REPLACE);
- //添加卸载快捷方式
- AddFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装","卸载","/""+PROGRAMFILES+"/InstallShield Installation Information//{96C6BC6D-1EAA-43C2-9A2C-CB1242590FD7}//Setup.exe /"",TARGETDIR,TARGETDIR+"//TempIco//011.ico",0,"",REPLACE);
- // <PROGRAMFILES>/InstallShield Installation Information/{96C6BC6D-1EAA-43C2-9A2C-CB1242590FD7}/Setup.exe
- // 其中
- // {611b4a59-fae0-443b-acbb-8cb1ce57fada}
- // 这个值是这样取得的
- // Project-》Setting-》General-》Project对应的那项
-
- //---------------------------------------------------------------------------------------------------------------
-
复制代码
在function OnMaintUIBefore()中插入以下代码,,第二次安装就是卸载
- function OnMaintUIBefore()
- number nResult, nType, nMediaFlags;
- string szTitle, szMsg, szIgnore;
- //自定义
- STRING svResult,szCaption;
- begin
- //----------------------------------------------------------------
- //此处为第二次是卸载
- svResult = SdLoadString(IFX_MAINTUI_MSG);
- szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
- nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
- if (nResult = IDCANCEL) then
- exit;
- elseif(nResult = IDOK) then
- // setup default status
- SetStatusWindow(0, "");
- Enable(STATUSEX);
- StatusUpdate(ON, 100);
- //-->Remove all components
- ComponentRemoveAll();
- endif;
- DeleteDir(TARGETDIR,ALLCONTENTS);
- DeleteDir(TARGETDIR,ONLYDIR);
- return 0;
- //------------------------------------------------------------
复制代码
原话:
安装的时候生成一个卸载的快捷方式
快捷方式的链接这样写
<PROGRAMFILES>/InstallShield Installation Information/{611b4a59-fae0-443b-acbb-8cb1ce57fada}/Setup.exe
其中
{611b4a59-fae0-443b-acbb-8cb1ce57fada}
这个值是这样取得的
Project-》Setting-》General-》Project对应的那项
脚本中加入这个代码,第二次安装就是卸载
STRING svResult,szCaption;
- svResult = SdLoadString(IFX_MAINTUI_MSG);
- szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
- nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
- if (nResult = IDCANCEL) then
- exit;
- elseif(nResult = IDOK) then
- // setup default status
- SetStatusWindow(0, "");
- Enable(STATUSEX);
- StatusUpdate(ON, 100);
-
- //-->Remove all components
- ComponentRemoveAll();
- endif;
- DeleteDir(TARGETDIR,ALLCONTENTS);
- DeleteDir(TARGETDIR,ONLYDIR);
- return 0;
- end;
复制代码
5、删除快捷方式
在function OnUninstall()中加入以下代码 ,删除刚刚添加的快捷方式
- //-------------------------------------------------------
- // 在桌面上删除快捷方式
- DeleteFolderIcon (FOLDER_DESKTOP, TARGETDIR+"//TempIco//021.ico");
- //删除程序中的快捷方式
- DeleteFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装",TARGETDIR+"//TempIco//011.ico");
复制代码
6、检测是否安装了IIS
在Setup.Rul下的第一行(#include "ifx.h" )下面添加以下代码
- //-----------------------------------------------------------------------
- prototype CheckIIS(); //检测是否安装了iis
- //--------------------------------------------------------
- //检测是否安装了IIS
- function CheckIIS()
- NUMBER nvType, nvSize;
- STRING svvalue;
- begin
- RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );
- if (RegDBKeyExist ("System//CurrentControlSet//Services//IISADMIN" ) = 1) then
- return (1);
- else
- return (0);
- endif;
- end;
- //-----------------------------------------------------------
复制代码
在 OnFirstUIBefore() (刚刚添加的以下代码的)
- //----------------------------------------------------------------
- SdShowMsg ( "安装程序正在检测系统必备组件...... ",TRUE);
- Delay(2);
- SdShowMsg ("",FALSE);
复制代码
它的下面添加判断IIS是否安装的代码:
- SetIIS:
- //安装iis
- //szProgram = "rundll32.exe";
- //szCmdLine = "setupapi.dll,InstallHinfSection Modem1 132 " + WINDIR + "driver139//oxser.inf";
- if CheckIIS() then
- goto SetDotNet;
- else
- SprintfBox(MB_OK,"IIS安装","您还未安装IIS,请安装!");
- if(LaunchAppAndWait("rundll32.exe", "shell32.dll,Control_RunDLL appwiz.cpl,,2", WAIT)<0)then
- SprintfBox(MB_OK,"IIS安装","IIS安装时发生意外,请重新安装!");
- else
- goto SetIIS;
- endif;
- endif;
- //---------------------------------------------------------------------------
复制代码
7、获取IP地址,我采用的是通过ipconfig来获得。
将以下代码写在OnFirstUIBefore中
添加变量声明:
- string svLine,svSubStr,szIp;//自定义
- number nvFileHandle,nvIp;
- [c-sharp] view plain copy
- //---------------------------------------------------------------------
- WriteIp:
- //写获取ip地址文件
- OpenFileMode(FILE_MODE_APPEND);
- if (FindFile(SUPPORTDIR,"ipconfig.bat", svResult) < 0) then //没有,需要create一个
- CreateFile(nvFileHandle,SUPPORTDIR,"ipconfig.bat");
- else
- OpenFile ( nvFileHandle ,SUPPORTDIR,"ipconfig.bat");
- //LaunchAppAndWait("","net stop w3svc"+"/S",WAIT);
- endif;
- WriteLine( nvFileHandle,"ipconfig /all >> /""+SUPPORTDIR+"/ipconfig.txt/"");
- CloseFile(nvFileHandle);
- LaunchAppAndWait("",SUPPORTDIR^"ipconfig.bat",WAIT);
- //----------------------------------------------------------------------------------
- //读取ip地址
- if (FindFile( SUPPORTDIR,"ipconfig.txt", svResult) < 0) then //没有,需要create一个
- goto WriteIp;
- else
- OpenFile ( nvFileHandle ,SUPPORTDIR,"ipconfig.txt");
- endif;
- ab:
- if(GetLine( nvFileHandle,svLine)<0) then
- CloseFile(nvFileHandle);
- else
- nvIp=StrFind (svLine,"IP Address");
- if(nvIp>-1)then
- StrSub (svSubStr, svLine,nvIp+StrLength("IP Address. . . . . . . . . . . . : "), StrLength (svLine)-nvIp+StrLength("IP Address. . . . . . . . . . . . : "));
- szIp=svSubStr;
- else
- goto ab;
- endif;
- endif;
复制代码
正将原来的创建快捷方式的代码修改如下:
放在OnFirstUIBefore中的倒数第3行即SetStatusExStaticText的上一行即可
- //---------------------------------------------------------------------------------
- // 在桌面上添加快捷方式
- AddFolderIcon(FOLDER_DESKTOP,"网上阅卷系统首页","/"http://"+szIp+":8080/Default.aspx/"",TARGETDIR,TARGETDIR+"//TempIco//021.ico",0,"",REPLACE);
- //添加程序快捷方式
- AddFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装","网上阅卷系统首页","/"http://"+szIp+":8080/Default.aspx/"",TARGETDIR,TARGETDIR+"//TempIco//021.ico",0,"",REPLACE);
- //添加卸载快捷方式
- AddFolderIcon(FOLDER_PROGRAMS^"网上阅卷系统GF安装","卸载","/""+PROGRAMFILES+"/InstallShield Installation Information//{96C6BC6D-1EAA-43C2-9A2C-CB1242590FD7}//Setup.exe /"",TARGETDIR,TARGETDIR+"//TempIco//011.ico",0,"",REPLACE);
复制代码
8、修改安装时选择安装类型的提示文字信息
Installation Designer->General Information->String Tables
找到 Value为安装类型的那一行。下面的就是选择安装类型这个页面的相应的文本,改成你想要的就可以了。 |