ASP教程之利用InstallShield制造ASP安装程序(6)
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码////////////////////////////////////////////////////////////////////////////////
//FUNCTION:OnFirstUIAfter
//
//EVENT:FirstUIAftereventissentafterfiletransfer,wheninstallation
//isrunforthefirsttimeongivenmachine.Inthiseventhandler
//installationusuallydisplaysUIthatwillinformenduserthat
//installationhasbeencompletedsuccessfully.
//
///////////////////////////////////////////////////////////////////////////////
functionOnFirstUIAfter()
STRINGszTitle,szMsg1,szMsg2,szOption1,szOption2,szCmdLine;
NUMBERbOpt1,bOpt2;
begin
szCmdLine=TARGETDIR^"mkwebdir.vbs"+"-clocalhost-w1-vWebApp,"+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);
return0;
end;
//////////////////////////////////////////////////////////////////////////////
//
//FUNCTION:OnMaintUIBefore
//
//EVENT:MaintUIBeforeeventissentwhenenduserrunsinstallationthat
//hasalreadybeeninstalledonthemachine.Usuallythishappens
//throughAdd/RemoveProgramsapplet.Inthehandlerinstallation
//usuallydisplaysUIallowingendusertomodifyexistinginstallation
//oruninstallapplication.Afterthisfunctionreturns,
//ComponentTransferDataiscalledtoperformfiletransfer.
//
///////////////////////////////////////////////////////////////////////////////
functionOnMaintUIBefore()
NUMBERnResult,nLevel,nType;
STRINGszTitle,szMsg,svDir,szComponents,svResult,szCaption;
begin
//ToDo:ifyouwanttoenablebackground,windowtitle,andcaptionbartitle
//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)gotoDlg_Start;
//setupdefaultstatus
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
gotoDlg_Start;
elseif(nResult=IDOK)then
//setupdefaultstatus
SetStatusWindow(0,"");
Enable(STATUSEX);
StatusUpdate(ON,100);
//-->Removeallcomponents
ComponentRemoveAll();
endif;
elseif(nResult=REPAIR)then
//setupdefaultstatus
SetStatusWindow(0,"");
Enable(STATUSEX);
StatusUpdate(ON,100);
//-->ReinstallLoggedComponents
ComponentReinstall();
endif;
end;
///////////////////////////////////////////////////////////////////////////////
//
//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---
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页:
[1]