用ASP制作InstallShield安装程序(3)

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

///////////////////////////////////////////////////////////////////////////////

//

// 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

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有