|
|
|
|
|
|
6.3版好象是用事件驱动的: ////////////////////////////////////////////////////////////////////////////// // // 函数: OnFirstUIBefore // // 事件: FirstUIBefore event is sent when installation is run for the first // time on given machine. In the handler installation usually displays // UI allowing end user to specify installation parameters. After this // function returns, ComponentTransferData is called to perform file // transfer. // ///////////////////////////////////////////////////////////////////////////////
OnFirstUIBefore()是在某台电脑上第一次运行安装时执行.
////////////////////////////////////////////////////////////////////////////// // // 函数: OnFirstUIAfter // // 事件: FirstUIAfter event is sent after file transfer, when installation // is run for the first time on given machine. In this event handler // installation usually displays UI that will inform end user that // installation has been completed successfully. // /////////////////////////////////////////////////////////////////////////////// OnFirstUIAfter()在文件复制结束后运行.
|
|
|
|
|
|
----------------------------------------------------
使用InstallShield制作ASP安装程序(3) |
浏览选项: 大中小颜色 默认 灰度 橄榄色 绿色 蓝色 褐色 红色 |
|
|
|
|
|
|
|
下面是建立WEB文件和设置的例子需VBS文件(有虚拟目录设置,但没有权限设置).
//////////////////////////////////////////////////////////////////////////////// // // IIIIIII SSSSSS // II SS InstallShield (R) // II SSSSSS (c) 1996-1999, InstallShield Software Corporation // II SS (c) 1990-1996, InstallShield Corporation // IIIIIII SSSSSS All Rights Reserved. // // // This code is generated as a starting setup template. You should // modify it to provide all necessary steps for your setup. // // // 文件名: Setup.rul // // 描述: InstallShield script // // 注释: This template script performs a basic setup. With minor // modifications, this template can be adapted to create // new, customized setups. // ////////////////////////////////////////////////////////////////////////////////
// 包含的头文件
#include "ifx.h" //不能移动
////////////////////// string defines ////////////////////////////
//////////////////// installation declarations ///////////////////
// ----- DLL function prototypes -----
// your DLL function prototypes
// ---- script function prototypes -----
// your script function prototypes prototype CHK_serial(STRING,STRING); prototype RegODBC(STRING); prototype set_vod_liveaddress(); // your global variables STRING szvodservername; STRING szliveservername;
////////////////////////////////////////////////////////////////////////////// // // 函数: OnFirstUIBefore // // 事件: FirstUIBefore event is sent when installation is run for the first // time on given machine. In the handler installation usually displays // UI allowing end user to specify installation parameters. After this // function returns, ComponentTransferData is called to perform file // transfer. // /////////////////////////////////////////////////////////////////////////////// function OnFirstUIBefore() NUMBER nResult,nSetupType; STRING szTitle, szMsg; STRING szLicenseFile, szQuestion; STRING svName, svCompany, svSerial; STRING szFile; STRING szTargetPath; STRING szDir; STRING szfolder; STRING szComponents, szTargetdir; //zy STRING szDefault,svResult; STRING sDBSERVERNAME; OBJECT piisObj; //zy NUMBER nLevel; LIST listStartCopy; LIST list; NUMBER nvSize; STRING msg; begin
//To Do: if you want to enable background, window title, and caption bar title // SetTitle( @TITLE_MAIN, 24, WHITE ); // SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Enable( FULLWINDOWMODE ); // Enable( BACKGROUND ); // SetColor(BACKGROUND,RGB (0, 128, 128));
nSetupType = TYPICAL; TARGETDIR = "D:/"^"cyclone2000/"; szDir = TARGETDIR; SHELL_OBJECT_FOLDER = @FOLDER_NAME; svName = ""; svCompany = ""; svSerial = "";
Dlg_Start: // beginning of dialogs label
Dlg_SdWelcome: //欢迎 对话框 szTitle = ""; szMsg = ""; nResult = SdWelcome( szTitle, szMsg ); if (nResult = BACK) goto Dlg_Start;
Dlg_SdLicense://软件许可协议 对话框 szLicenseFile = SUPPORTDIR ^ "license.txt"; szTitle = ""; szMsg = ""; szQuestion = ""; nResult = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile ); if (nResult = BACK) goto Dlg_SdWelcome;
Dlg_SdShowInfoList://readme文件 对话框 szFile = SUPPORTDIR ^ "infolist.txt"; list = ListCreate( STRINGLIST ); ListReadFromFile( list, szFile ); szTitle = ""; szMsg = ""; nResult = SdShowInfoList( szTitle, szMsg, list ); ListDestroy( list ); if (nResult = BACK) goto Dlg_SdLicense;
Dlg_SdRegisterUserEx://用户信息 对话框 szMsg = ""; szTitle = ""; nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial ); if (nResult = BACK) goto Dlg_SdShowInfoList; //检查序列号 if (CHK_serial(svCompany, svSerial)<0) then goto Dlg_SdRegisterUserEx; endif; //检查序列号完毕 Dlg_SdAskDestPath://安装位置 对话框 szTitle = ""; szMsg = ""; nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 ); TARGETDIR = szDir; if (nResult = BACK) goto Dlg_SdRegisterUserEx;
Dlg_SetupType: //安装类型 对话框 szTitle = ""; szMsg = ""; nResult = SetupType ( szTitle , szMsg , "" , nSetupType , 0 ); if (nResult = BACK) then goto Dlg_SdAskDestPath; else nSetupType = nResult; if (nSetupType != CUSTOM) then szTargetPath = TARGETDIR; nvSize = 0; ComponentCompareSizeRequired(MEDIA,szTargetPath,nvSize); if (nvSize != 0) then MessageBox( szSdStr_NotEnoughSpace, WARNING ); goto Dlg_SetupType; endif; endif; endif;
Dlg_SdComponentTree: //对话框 if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SetupType; szTitle = ""; szMsg = ""; szTargetdir = TARGETDIR; szComponents = ""; nLevel = 2; if (nSetupType = CUSTOM) then nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel); if (nResult = BACK) goto Dlg_SetupType; endif;
Dlg_SdSelectFolder://对话框 szfolder = SHELL_OBJECT_FOLDER; szTitle = ""; szMsg = ""; nResult = SdSelectFolder( szTitle, szMsg, szfolder ); SHELL_OBJECT_FOLDER = szfolder; if (nResult = BACK) goto Dlg_SdComponentTree;
Dlg_AskText ://设置数据库服务器 对话框 szTitle = "设置数据库服务器"; szMsg = ""; szQuestion="请输入SQL SERVER(旋风2000)数据库服务器的主机名或IP地址"; szDefault="192.168.0.1"; SetDialogTitle(DLG_ASK_TEXT,szTitle); nResult = AskText (szQuestion, szDefault, svResult); sDBSERVERNAME = svResult; if (nResult = BACK) goto Dlg_SdSelectFolder; RegODBC(sDBSERVERNAME);
Dlg_SdStartCopy://开始复制文件 对话框 szTitle = ""; szMsg = ""; listStartCopy = ListCreate( STRINGLIST ); //The following is an example of how to add a string(svName) to a list(listStartCopy). //eg. ListAddString(listStartCopy,svName,AFTER); nResult = SdStartCopy( szTitle, szMsg, listStartCopy ); ListDestroy(listStartCopy); if (nResult = BACK) goto Dlg_AskText; // setup default status SetStatusWindow(0, ""); Enable(STATUSEX); StatusUpdate(ON, 100);
return 0;
end; ////////////////////////////////////////////////////////////////////////////// // // 函数: OnFirstUIAfter // // 事件: FirstUIAfter event is sent after file transfer, when installation // is run for the first time on given machine. In this event handler // installation usually displays UI that will inform end user that // installation has been completed successfully. // /////////////////////////////////////////////////////////////////////////////// function OnFirstUIAfter() STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,szCmdLine; NUMBER bOpt1, bOpt2;
begin szCmdLine = SUPPORTDIR ^"mkwebdir.vbs "+"-c LocalHost -w 1 -v cyclone2000 -d "+ TARGETDIR ; if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then MessageBox ("不能建立WEB 虚拟目录.",SEVERE); endif; set_vod_liveaddress(); szCmdLine = SUPPORTDIR ^"odbc.reg"; if (LaunchAppAndWait("regedit.exe", szCmdLine,WAIT) < 0) then MessageBox ("不能配置ODBC.",SEVERE); endif; Disable(STATUSEX); bOpt1 = FALSE; bOpt2 = FALSE; szMsg1 = SdLoadString(IFX_SDFINISH_MSG1); szMsg2 = "请浏览本主机WEB服务器上的 cyclone2000 虚拟目录 例: http://Localhost/cyclone2000/default.htm"; szOption1 = ""; szOption2 = ""; szTitle = "旋风2000安装完成"; SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2);
szCmdLine = "http://LocalHost/cyclone2000/default.htm"; if (LaunchApp(PROGRAMFILES ^"Internet Explorer"^"IEXPLORE.EXE", szCmdLine) < 0) then MessageBox ("不能打开浏览器.",SEVERE); endif;
return 0; end;
/////////////////////////////////////////////////////////////////////////////// //
|
|
|
|
|
|
|
|
--------------------------------------
使用InstallShield制作ASP安装程序(4) |
浏览选项: 大中小颜色 默认 灰度 橄榄色 绿色 蓝色 褐色 红色 |
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////// // // FUNCTION: OnMaintUIAfter // // EVENT: MaintUIAfter event is sent after file transfer, when end user runs // installation that has already been installed on the machine. Usually // this happens through Add/Remove Programs applet. // In the handler installation usually displays UI that will inform // end user that maintenance/uninstallation has been completed successfully. // /////////////////////////////////////////////////////////////////////////////// function OnMaintUIAfter() STRING szTitle, szMsg1, szMsg2, szOption1, szOption2; NUMBER bOpt1, bOpt2; begin Disable(STATUSEX); bOpt1 = FALSE; bOpt2 = FALSE; szMsg1 = SdLoadString(IFX_SDFINISH_MAINT_MSG1); szMsg2 = ""; szOption1 = ""; szOption2 = ""; szTitle = SdLoadString(IFX_SDFINISH_MAINT_TITLE); SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2); return 0; end;
/////////////////////////////////////////////////////////////////////////////// // // FUNCTION: OnMoving // // EVENT: Moving event is sent when file transfer is started as a result of // ComponentTransferData call, before any file transfer operations // are performed. // /////////////////////////////////////////////////////////////////////////////// function OnMoving() STRING szAppPath; begin // Set LOGO Compliance Application Path // TO DO : if your application .exe is in a subfolder of TARGETDIR then add subfolder szAppPath = TARGETDIR; RegDBSetItem(REGDB_APPPATH, szAppPath); RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
end;
// --- include script file section ---
function LoginSQL( szTitle,szSqlsvname,szSqluser,szSqlpassword )
STRING szDlg, szTemp; NUMBER bDone, nId, nMessage, nTemp; INT hwndDlg; HWND hwndControl; begin szDlg = "DLG_LoginSQLSV";
// record data produced by this dialog if (MODE=SILENTMODE) then SdMakeName( szAppKey, szDlg, szTitle, nLoginSQL ); SilentReadData( szAppKey, "Result", DATA_NUMBER, szTemp, nId ); if ((nId != BACK) && (nId != CANCEL)) then SilentReadData( szAppKey, "szSqlsvname", DATA_STRING, szSqlsvname, nTemp ); SilentReadData( szAppKey, "szSqluser", DATA_STRING, szSqluser, nTemp ); SilentReadData( szAppKey, "szSqlpassword", DATA_STRING, szSqlpassword, nTemp ); endif;
return nId; endif;
// ensure general initialization is complete if (!bSdInit) then SdInit(); endif;
if (EzDefineDialog( szDlg, "", "",DLG_LoginSQLSV ) = DLG_ERR) then return -1; endif;
// 在用户选择标准按钮前进行循环 bDone = FALSE;
while (!bDone)
nId = WaitOnDialog( szDlg );//显示对话框 hwndControl = GetDlgItem (hwndDlg, SD_EDIT_SQLSV_NAME); SetFocus (hwndControl);
switch(nId) case DLG_INIT: CtrlSetText( szDlg, SD_EDIT_SQLSV_NAME, szSqlsvname ); CtrlSetText( szDlg, SD_EDIT_SQLSV_USER, szSqluser ); CtrlSetText( szDlg, SD_EDIT_SQLSV_PASSWORD, szSqlpassword );
hwndDlg = CmdGetHwndDlg( szDlg ); SdGeneralInit( szDlg, hwndDlg, STYLE_NORMAL, szSdProduct );
//This function sets the caption for old style dialogs or //sets the text in the top banner area of win2k style dialogs SdSetDlgTitle(szDlg, hwndDlg, szTitle); case SD_EDIT_SQLSV_NAME: nMessage = CtrlGetSubCommand( szDlg ); if( nMessage = EDITBOX_CHANGE ) then CtrlGetText( szDlg, SD_EDIT_SQLSV_NAME, szSqlsvname ); endif; case SD_EDIT_SQLSV_USER: nMessage = CtrlGetSubCommand( szDlg ); if( nMessage = EDITBOX_CHANGE ) then CtrlGetText( szDlg, SD_EDIT_SQLSV_USER, szSqluser ); endif; case SD_EDIT_SQLSV_PASSWORD: nMessage = CtrlGetSubCommand( szDlg ); if( nMessage = EDITBOX_CHANGE ) then CtrlGetText( szDlg, SD_EDIT_SQLSV_PASSWORD, szSqlpassword ); endif; case OK: nId = NEXT; bDone = TRUE;
case BACK: nId = BACK; bDone = TRUE;
case DLG_ERR: SdError( -1, "SdWelcome" ); nId = -1; bDone = TRUE;
case DLG_CLOSE: SdCloseDlg( hwndDlg, nId, bDone );
default: // check standard handling if (SdIsStdButton( nId ) && SdDoStdButton( nId )) then bDone = TRUE; endif; endswitch;
endwhile;
EndDialog( szDlg ); ReleaseDialog( szDlg );
SdUnInit( );
// record data produced by this dialog SdMakeName( szAppKey, szDlg, szTitle, nLoginSQL ); SilentWriteData( szAppKey, "szSqlsvname", DATA_STRING, szSqlsvname, 0 ); SilentWriteData( szAppKey, "szSqluser", DATA_STRING, szSqluser, 0 ); SilentWriteData( szAppKey, "szSqlpassword", DATA_STRING, szSqlpassword, 0 ); SilentWriteData( szAppKey, "Result", DATA_NUMBER, "", nId );
return nId;
end;
function exeSQLfile( szsqlfilename ) STRING szCmdLine; NUMBER nTemp; begin szCmdLine = SUPPORTDIR ^"osql.exe"; if (LaunchAppAndWait(SUPPORTDIR ^"osql.exe", szsqlfilename,WAIT) < 0) then MessageBox ("不能运行SQL安装文件.",SEVERE); endif;
end;
function modifdbdir() STRING szinstallfile; NUMBER nvResult,nvLineNumber; STRING szwindir,svReturnLine; NUMBER sn,nStartPos; STRING sz1,sz2,sznewdir; NUMBER nTemp; begin szinstallfile = TARGETDIR ^"install/createdb.sql"; //替换 DB文件的建立路径 while (nvResult != END_OF_FILE) nvResult = FileGrep (szinstallfile, "D:/cycdata/", svReturnLine,nvLineNumber, RESTART); //FileDeleteLine(szodbcregfile, nvLineNumber, nvLineNumber); sn=StrLength (svReturnLine); nStartPos = StrFind(svReturnLine,"D:/cycdata/"); StrSub (sz1, svReturnLine, 0, nStartPos); StrSub (sz2, svReturnLine, nStartPos+11, sn-nStartPos-11); sznewdir=sz1+TARGETDIR ^sz2; FileInsertLine(szinstallfile, sznewdir,nvLineNumber, REPLACE); sz1=""; sz2=""; sznewdir=""; endwhile;
end;
////////////////////////////////////////////////////////////////////////////// // // FUNCTION: OnFileReadOnly // // EVENT: FileReadOnly event is sent during file transfer when a read-only // file is needs to be overwritten or removed. // // ARGUMENTS: File - full path of file that is marked as read-only. // // RETURN: ERR_YES - the file should be overwritten or removed. // ERR_NO - the file should not be modified. // /////////////////////////////////////////////////////////////////////////////// function OnFileReadOnly(File) begin return SdExceptions(READONLY, File); end;
////////////////////////////////////////////////////////////////////////////// // // FUNCTION: OnFileReadOnly // // EVENT: FileReadOnly event is sent during file transfer when a read-only // file is needs to be overwritten or removed. // // ARGUMENTS: File - full path of file that is marked as read-only. // // RETURN: ERR_YES - the file should be overwritten or removed. // ERR_NO - the file should not be modified. //
|
|
|
|
|
|
|
|
|
---------------------------------------------------
使用InstallShield制作ASP安装程序(5) |
浏览选项: 大中小颜色 默认 灰度 橄榄色 绿色 蓝色 褐色 红色 |
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////// // //IIIIIII SSSSSS //IISSInstallShield (R) //IISSSSSS(c) 1996-1999, InstallShield Software Corporation //IISS(c) 1990-1996, InstallShield Corporation //IIIIIII SSSSSSAll Rights Reserved. // // //This code is generated as a starting setup template.You should //modify it to provide all necessary steps for your setup. // // //File Name:Setup.rul // //Description:InstallShield script // //Comments:This template script performs a basic setup. With minor //modifications, this template can be adapted to create //new, customized setups. // ////////////////////////////////////////////////////////////////////////////////
// Include header files
#include "ifx.h" //DO NOT REMOVE
////////////////////// string defines ////////////////////////////
//////////////////// installation declarations ///////////////////
// ----- DLL function prototypes -----
// your DLL function prototypes
// ---- script function prototypes -----
// your script function prototypes
// your global variables
////////////////////////////////////////////////////////////////////////////// // //FUNCTION:OnFirstUIBefore // //EVENT:FirstUIBefore event is sent when installation is run for the first //time on given machine. In the handler installation usually displays //UI allowing end user to specify installation parameters. After this //function returns, ComponentTransferData is called to perform file //transfer. // /////////////////////////////////////////////////////////////////////////////// function OnFirstUIBefore() NUMBERnResult,nSetupType; STRINGszTitle, szMsg; STRINGszLicenseFile, szQuestion; STRINGsvName, svCompany, svSerial; STRINGszDir; STRINGszfolder; STRINGszComponents, szTargetdir; NUMBERnLevel;
begin
//To Do: if you want to enable background, window title, and caption bar title // SetTitle( @TITLE_MAIN, 24, WHITE ); // SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Enable( FULLWINDOWMODE ); // Enable( BACKGROUND ); // SetColor(BACKGROUND,RGB (0, 128, 128));
//默认值设定 TARGETDIR = "C:/Inetpub/wwwroot/WebApp"; szDir = TARGETDIR; SHELL_OBJECT_FOLDER = @FOLDER_NAME; svName= "Daniel"; svCompany = "N/A"; svSerial = "111-1111111";
Dlg_Start: // beginning of dialogs label
Dlg_SdWelcome: szTitle = ""; szMsg= ""; nResult = SdWelcome( szTitle, szMsg ); if (nResult = BACK) goto Dlg_Start;
Dlg_SdLicense: szLicenseFile = SUPPORTDIR ^ "license.txt"; szTitle= ""; szMsg= ""; szQuestion = ""; nResult= SdLicense( szTitle, szMsg, szQuestion, szLicenseFile ); if (nResult = BACK) goto Dlg_SdWelcome;
Dlg_SdRegisterUserEx: szMsg= ""; szTitle = ""; nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial ); //验证序列号 if (svSerial !="111-1111111") then MessageBox ("InValid Serial!",WARNING); goto Dlg_SdRegisterUserEx; endif; if (nResult = BACK) goto Dlg_SdLicense;
Dlg_SdAskDestPath: szTitle = ""; szMsg= ""; nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 ); TARGETDIR = szDir; if (nResult = BACK) goto Dlg_SdRegisterUserEx;
Dlg_SdComponentTree: if ((nResult = BACK) && (nSetupType != CUSTOM)) goto Dlg_SdAskDestPath; szTitle= ""; szMsg= ""; szTargetdir = TARGETDIR; szComponents = ""; nLevel = 2; if (nSetupType = CUSTOM) then nResult = SdComponentTree(szTitle, szMsg, szTargetdir, szComponents, nLevel); if (nResult = BACK) goto Dlg_SdAskDestPath; endif;
Dlg_SdSelectFolder: szfolder = SHELL_OBJECT_FOLDER; szTitle= ""; szMsg= ""; nResult= SdSelectFolder( szTitle, szMsg, szfolder ); SHELL_OBJECT_FOLDER = szfolder; if (nResult = BACK) goto Dlg_SdComponentTree;
// setup default status SetStatusWindow(0, ""); Enable(STATUSEX); StatusUpdate(ON, 100);
return 0;
end;
|
|
|
|
|
|
|
|
----------------------------------------------------
使用InstallShield制作ASP安装程序(6) |
浏览选项: 大中小颜色 默认 灰度 橄榄色 绿色 蓝色 褐色 红色 |
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////// // //FUNCTION:OnFirstUIAfter // //EVENT:FirstUIAfter event is sent after file transfer, when installation //is run for the first time on given machine. In this event handler //installation usually displays UI that will inform end user that //installation has been completed successfully. // ///////////////////////////////////////////////////////////////////////////////
function OnFirstUIAfter() STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,szCmdLine; NUMBER bOpt1, bOpt2; begin szCmdLine = TARGETDIR ^"mkwebdir.vbs "+"-c localhost -w 1 -v WebApp," + TARGETDIR ; if (LaunchAppAndWait("WScript.exe", szCmdLine,WAIT) < 0) then MessageBox ("不能建立WEB 虚拟目录.",SEVERE); endif; Disable(STATUSEX); bOpt1 = FALSE; bOpt2 = FALSE; szMsg1 = SdLoadString(IFX_SDFINISH_MSG1); szMsg2 = ""; szOption1 = ""; szOption2 = ""; szTitle= ""; SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2); return 0; end;
////////////////////////////////////////////////////////////////////////////// // //FUNCTION:OnMaintUIBefore // //EVENT:MaintUIBefore event is sent when end user runs installation that //has already been installed on the machine. Usually this happens //through Add/Remove Programs applet. In the handler installation //usually displays UI allowing end user to modify existing installation //or uninstall application. After this function returns, //ComponentTransferData is called to perform file transfer. // /////////////////////////////////////////////////////////////////////////////// function OnMaintUIBefore() NUMBER nResult,nLevel,nType; STRING szTitle,szMsg,svDir,szComponents,svResult,szCaption; begin
//To Do:if you want to enable background, window title, and caption bar title // SetTitle( @TITLE_MAIN, 24, WHITE ); //SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // SetColor(BACKGROUND,RGB (0, 128, 128)); // Enable( FULLWINDOWMODE ); //Enable( BACKGROUND );
nType = MODIFY;
Dlg_Start: Disable(BACKBUTTON); nResult = SdWelcomeMaint(szTitle, szMsg, nType); Enable(BACKBUTTON);
Dlg_SdComponentTree: if (nResult = MODIFY) then szTitle = ""; szMsg = ""; svDir = TARGETDIR; szComponents = ""; nLevel = 2; nResult = SdComponentTree(szTitle, szMsg, svDir, szComponents, nLevel); if (nResult = BACK) goto Dlg_Start; // setup default status SetStatusWindow(0, ""); Enable(STATUSEX); StatusUpdate(ON, 100);
elseif (nResult = REMOVEALL) then svResult = SdLoadString(IFX_MAINTUI_MSG); szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION); nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult); if (nResult = IDCANCEL) then goto Dlg_Start; elseif(nResult = IDOK) then // setup default status SetStatusWindow(0, ""); Enable(STATUSEX); StatusUpdate(ON, 100);
//-->Remove all components ComponentRemoveAll(); endif; elseif (nResult = REPAIR) then // setup default status SetStatusWindow(0, ""); Enable(STATUSEX); StatusUpdate(ON, 100);
//-->Reinstall Logged Components ComponentReinstall(); endif;
end;
/////////////////////////////////////////////////////////////////////////////// // //FUNCTION:OnMaintUIAfter // //EVENT:MaintUIAfter event is sent after file transfer, when end user runs //installation that has already been installed on the machine. Usually //this happens through Add/Remove Programs applet. //In the handler installation usually displays UI that will inform //end user that maintenance/uninstallation has been completed successfully. // /////////////////////////////////////////////////////////////////////////////// function OnMaintUIAfter() STRING szTitle, szMsg1, szMsg2, szOption1, szOption2; NUMBER bOpt1, bOpt2; begin Disable(STATUSEX); bOpt1 = FALSE; bOpt2 = FALSE; szMsg1 = SdLoadString(IFX_SDFINISH_MAINT_MSG1); szMsg2 = ""; szOption1 = ""; szOption2 = ""; szTitle = SdLoadString(IFX_SDFINISH_MAINT_TITLE); SdFinishEx(szTitle,szMsg1,szMsg2,szOption1,szOption2,bOpt1,bOpt2); return 0; end;
/////////////////////////////////////////////////////////////////////////////// // //FUNCTION:OnMoving // //EVENT:Moving event is sent when file transfer is started as a result of //ComponentTransferData call, before any file transfer operations //are performed. // /////////////////////////////////////////////////////////////////////////////// function OnMoving() STRING szAppPath; begin // Set LOGO Compliance Application Path // TO DO : if your application .exe is in a subfolder of TARGETDIR then add subfolder szAppPath = TARGETDIR; RegDBSetItem(REGDB_APPPATH, szAppPath); RegDBSetItem(REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY);
end;
// --- include script file section ---
|
|
|
|
|
|
|
|
|
|
|
|