透明 发表于 2015-1-16 22:30:21

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语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;

第二个灵魂 发表于 2015-1-19 15:43:13

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

再见西城 发表于 2015-1-25 13:15:19

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

若相依 发表于 2015-2-2 22:13:19

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

精灵巫婆 发表于 2015-2-8 12:24:43

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

爱飞 发表于 2015-2-25 12:46:01

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

简单生活 发表于 2015-3-15 14:46:26

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

若天明 发表于 2015-3-22 02:10:23

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页: [1]
查看完整版本: ASP教程之利用InstallShield制造ASP安装程序(6)