仓酷云
标题:
ASP教程之用ASP制造InstallShield安装程序(3)
[打印本页]
作者:
冷月葬花魂
时间:
2015-1-16 22:18
标题:
ASP教程之用ASP制造InstallShield安装程序(3)
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。installshield|程序///////////////////////////////////////////////////////////////////////////////
//
//FUNCTION:OnMaintUIAfter
//
//EVENT:MaintUIAftereventissentafterfiletransfer,whenenduserruns
//installationthathasalreadybeeninstalledonthemachine.Usually
//thishappensthroughAdd/RemoveProgramsApplet.
//InthehandlerinstallationusuallydisplaysUIthatwillinform
//enduserthatmaintenance/uninstallationhasbeencompletedsuccessfully.
//
///////////////////////////////////////////////////////////////////////////////
functionOnMaintUIAfter()
STRINGszTitle,szMsg1,szMsg2,szOption1,szOption2;
NUMBERbOpt1,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);
return0;
end;
///////////////////////////////////////////////////////////////////////////////
//
//FUNCTION:OnMoving
//
//EVENT:Movingeventissentwhenfiletransferisstartedasaresultof
//ComponentTransferDatacall,beforeanyfiletransferoperations
//areperformed.
//
///////////////////////////////////////////////////////////////////////////////
functionOnMoving()
STRINGszAppPath;
begin
//SetLOGOComplianceApplicationPath
//TODO:ifyourapplication.exeisinasubfolderofTARGETDIRthenaddsubfolder
szAppPath=TARGETDIR;
RegDBSetItem(REGDB_APPPATH,szAppPath);
RegDBSetItem(REGDB_APPPATH_DEFAULT,szAppPath^@PRODUCT_KEY);
end;
//---includescriptfilesection---
functionLoginSQL(szTitle,szSqlsvname,szSqluser,szSqlpassword)
STRINGszDlg,szTemp;
NUMBERbDone,nId,nMessage,nTemp;
INThwndDlg;
HWNDhwndControl;
begin
szDlg="DLG_LoginSQLSV";
//recorddataproducedbythisdialog
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;
returnnId;
endif;
//ensuregeneralinitializationiscomplete
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)
caseDLG_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);
//Thisfunctionsetsthecaptionforoldstyledialogsor
//setsthetextinthetopbannerareaofwin2kstyledialogs
SdSetDlgTitle(szDlg,hwndDlg,szTitle);
caseSD_EDIT_SQLSV_NAME:
nMessage=CtrlGetSubCommand(szDlg);
if(nMessage=EDITBOX_CHANGE)then
CtrlGetText(szDlg,SD_EDIT_SQLSV_NAME,szSqlsvname);
endif;
caseSD_EDIT_SQLSV_USER:
nMessage=CtrlGetSubCommand(szDlg);
if(nMessage=EDITBOX_CHANGE)then
CtrlGetText(szDlg,SD_EDIT_SQLSV_USER,szSqluser);
endif;
caseSD_EDIT_SQLSV_PASSWORD:
nMessage=CtrlGetSubCommand(szDlg);
if(nMessage=EDITBOX_CHANGE)then
CtrlGetText(szDlg,SD_EDIT_SQLSV_PASSWORD,szSqlpassword);
endif;
caseOK:
nId=NEXT;
bDone=TRUE;
caseBACK:
nId=BACK;
bDone=TRUE;
caseDLG_ERR:
SdError(-1,"SdWelcome");
nId=-1;
bDone=TRUE;
caseDLG_CLOSE:
SdCloseDlg(hwndDlg,nId,bDone);
default:
//checkstandardhandling
if(SdIsStdButton(nId)&&SdDoStdButton(nId))then
bDone=TRUE;
endif;
endswitch;
endwhile;
EndDialog(szDlg);
ReleaseDialog(szDlg);
SdUnInit();
//recorddataproducedbythisdialog
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);
returnnId;
end;
functionexeSQLfile(szsqlfilename)
STRINGszCmdLine;
NUMBERnTemp;
begin
szCmdLine=SUPPORTDIR^"osql.exe";
if(LaunchAppAndWait(SUPPORTDIR^"osql.exe",szsqlfilename,WAIT)<0)then
MessageBox("不克不及运转SQL安装文件.",SEVERE);
endif;
end;
functionmodifdbdir()
STRINGszinstallfile;
NUMBERnvResult,nvLineNumber;
STRINGszwindir,svReturnLine;
NUMBERsn,nStartPos;
STRINGsz1,sz2,sznewdir;
NUMBERnTemp;
begin
szinstallfile=TARGETDIR^"installcreatedb.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:FileReadOnlyeventissentduringfiletransferwhenaread-only
//fileisneedstobeoverwrittenorremoved.
//
//ARGUMENTS:File-fullpathoffilethatismarkedasread-only.
//
//RETURN:ERR_YES-thefileshouldbeoverwrittenorremoved.
//ERR_NO-thefileshouldnotbemodified.
//
///////////////////////////////////////////////////////////////////////////////
functionOnFileReadOnly(File)
begin
returnSdExceptions(READONLY,File);
end;
//////////////////////////////////////////////////////////////////////////////
//
//FUNCTION:OnFileReadOnly
//
//EVENT:FileReadOnlyeventissentduringfiletransferwhenaread-only
//fileisneedstobeoverwrittenorremoved.
//
//ARGUMENTS:File-fullpathoffilethatismarkedasread-only.
//
//RETURN:ERR_YES-thefileshouldbeoverwrittenorremoved.
//ERR_NO-thefileshouldnotbemodified.
//ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。
作者:
因胸联盟
时间:
2015-1-19 07:31
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
作者:
灵魂腐蚀
时间:
2015-1-24 12:02
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
作者:
深爱那片海
时间:
2015-2-1 09:59
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
作者:
再见西城
时间:
2015-2-7 02:45
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
作者:
飘灵儿
时间:
2015-2-19 21:46
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
作者:
小女巫
时间:
2015-3-6 15:45
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
作者:
谁可相欹
时间:
2015-3-20 12:02
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2