ASP网页编程之用ASP制造InstallShield安装程序(2)
ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用installshield|程序6.3版好象是用事务驱动的://////////////////////////////////////////////////////
//
//函数:OnFirstUIBefore
//
//事务:FirstUIBeforeeventissentwheninstallationisrunforthefirst
//timeongivenmachine.Inthehandlerinstallationusuallydisplays
//UIallowingendusertospecifyinstallationparameters.Afterthis
//functionreturns,ComponentTransferDataiscalledtoperformfile
//transfer.
//
//////////////////////////////////////////////////////
OnFirstUIBefore()是在某台电脑上第一次运转安装时实行.
//////////////////////////////////////////////////////
//
//函数:OnFirstUIAfter
//
//事务:FirstUIAftereventissentafterfiletransfer,wheninstallation
//isrunforthefirsttimeongivenmachine.Inthiseventhandler
//installationusuallydisplaysUIthatwillinformenduserthat
//installationhasbeencompletedsuccessfully.
//
//////////////////////////////////////////////////////
OnFirstUIAfter()在文件复制停止后运转.
上面是创建Web文件和设置的例子需VBS文件(有假造目次设置,但没有权限设置).
////////////////////////////////////////////////////////////////////////////////
//
//IIIIIIISSSSSS
//IISSInstallShield(R)
//IISSSSSS(c)1996-1999,InstallShieldSoftwareCorporation
//IISS(c)1990-1996,InstallShieldCorporation
//IIIIIIISSSSSSAllRightsReserved.
//
//
//Thiscodeisgeneratedasastartingsetuptemplate.Youshould
//modifyittoprovideallnecessarystepsforyoursetup.
//
//
//文件名:Setup.rul
//
//形貌:InstallShieldscript
//
//正文:Thistemplatescriptperformsabasicsetup.Withminor
//modifications,thistemplatecanbeadaptedtocreate
//new,customizedsetups.
//
////////////////////////////////////////////////////////////////////////////////
//包括的头文件
#include"ifx.h"//不克不及挪动
//////////////////////stringdefines////////////////////////////
////////////////////installationdeclarations///////////////////
//-----DLLfunctionprototypes-----
//yourDLLfunctionprototypes
//----scriptfunctionprototypes-----
//yourscriptfunctionprototypes
prototypeCHK_serial(STRING,STRING);
prototypeRegODBC(STRING);
prototypeset_vod_liveaddress();
//yourglobalvariables
STRINGszvodservername;
STRINGszliveservername;
//////////////////////////////////////////////////////////////////////////////
//
//函数:OnFirstUIBefore
//
//事务:FirstUIBeforeeventissentwheninstallationisrunforthefirst
//timeongivenmachine.Inthehandlerinstallationusuallydisplays
//UIallowingendusertospecifyinstallationparameters.Afterthis
//functionreturns,ComponentTransferDataiscalledtoperformfile
//transfer.
//
///////////////////////////////////////////////////////////////////////////////
functionOnFirstUIBefore()
NUMBERnResult,nSetupType;
STRINGszTitle,szMsg;
STRINGszLicenseFile,szQuestion;
STRINGsvName,sVCompany,svSerial;
STRINGszFile;
STRINGszTargetPath;
STRINGszDir;
STRINGszfolder;
STRINGszComponents,szTargetdir;
//zy
STRINGszDefault,svResult;
STRINGsDBSERVERNAME;
OBJECTpiisObj;
//zy
NUMBERnLevel;
LISTlistStartCopy;
LISTlist;
NUMBERnvSize;
STRINGmsg;
begin
//ToDo:ifyouwanttoenablebackground,windowtitle,andcaptionbartitle
//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:
//beginningofdialogslabel
Dlg_SdWelcome://接待对话框
szTitle="";
szMsg="";
nResult=SdWelcome(szTitle,szMsg);
if(nResult=BACK)gotoDlg_Start;
Dlg_SdLicense://软件允许协定对话框
szLicenseFile=SUPPORTDIR^"license.txt";
szTitle="";
szMsg="";
szQuestion="";
nResult=SdLicense(szTitle,szMsg,szQuestion,szLicenseFile);
if(nResult=BACK)gotoDlg_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)gotoDlg_SdLicense;
Dlg_SdReGISterUserEx://用户信息对话框
szMsg="";
szTitle="";
nResult=SdRegisterUserEx(szTitle,szMsg,svName,svCompany,svSerial);
if(nResult=BACK)gotoDlg_SdShowInfoList;
//反省序列号
if(CHK_serial(svCompany,svSerial)<0)then
gotoDlg_SdRegisterUserEx;
endif;
//反省序列号终了
Dlg_SdAskDestPath://安装地位对话框
szTitle="";
szMsg="";
nResult=SdAskDestPath(szTitle,szMsg,szDir,0);
TARGETDIR=szDir;
if(nResult=BACK)gotoDlg_SdRegisterUserEx;
Dlg_SetupType://安装范例对话框
szTitle="";
szMsg="";
nResult=SetupType(szTitle,szMsg,"",nSetupType,0);
if(nResult=BACK)then
gotoDlg_SdAskDestPath;
else
nSetupType=nResult;
if(nSetupType!=CUSTOM)then
szTargetPath=TARGETDIR;
nvSize=0;
ComponentCompareSizeRequired(MEDIA,szTargetPath,nvSize);
if(nvSize!=0)then
MessageBox(szSdStr_NotEnoughSpace,WARNING);
gotoDlg_SetupType;
endif;
endif;
endif;
Dlg_SdComponentTree://对话框
if((nResult=BACK)&&(nSetupType!=CUSTOM))gotoDlg_SetupType;
szTitle="";
szMsg="";
szTargetdir=TARGETDIR;
szComponents="";
nLevel=2;
if(nSetupType=CUSTOM)then
nResult=SdComponentTree(szTitle,szMsg,szTargetdir,szComponents,nLevel);
if(nResult=BACK)gotoDlg_SetupType;
endif;
Dlg_SdSelectFolder://对话框
szfolder=SHELL_OBJECT_FOLDER;
szTitle="";
szMsg="";
nResult=SdSelectFolder(szTitle,szMsg,szfolder);
SHELL_OBJECT_FOLDER=szfolder;
if(nResult=BACK)gotoDlg_SdComponentTree;
Dlg_AskText://设置数据库服务器对话框
szTitle="设置数据库服务器";
szMsg="";
szQuestion="请输出SQLServer(旋风2000)数据库服务器的主机名或IP地点";
szDefault="192.168.0.1";
SetDialogTitle(DLG_ASK_TEXT,szTitle);
nResult=AskText(szQuestion,szDefault,svResult);
sDBSERVERNAME=svResult;
if(nResult=BACK)gotoDlg_SdSelectFolder;
RegODBC(sDBSERVERNAME);
Dlg_SdStartCopy://入手下手复制文件对话框
szTitle="";
szMsg="";
listStartCopy=ListCreate(STRINGLIST);
//Thefollowingisanexampleofhowtoaddastring(svName)toalist(listStartCopy).
//eg.ListAddString(listStartCopy,svName,AFTER);
nResult=SdStartCopy(szTitle,szMsg,listStartCopy);
ListDestroy(listStartCopy);
if(nResult=BACK)gotoDlg_AskText;
//setupdefaultstatus
SetStatusWindow(0,"");
Enable(STATUSEX);
StatusUpdate(ON,100);
return0;
end;
///////////////////////////////////////////////////////////
//
//函数:OnFirstUIAfter
//
//事务:FirstUIAftereventissentafterfiletransfer,wheninstallation
//isrunforthefirsttimeongivenmachine.Inthiseventhandler
//installationusuallydisplaysUIthatwillinformenduserthat
//installationhasbeencompletedsuccessfully.
//
//////////////////////////////////////////////////////////
functionOnFirstUIAfter()
STRINGszTitle,szMsg1,szMsg2,szOption1,szOption2,szCmdLine;
NUMBERbOpt1,bOpt2;
begin
szCmdLine=SUPPORTDIR^"mkwebdir.vbs"+"-cLocalHost-w1-vcyclone2000-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^"InternetExplorer"^"IEXPLORE.EXE",szCmdLine)<0)then
MessageBox("不克不及翻开扫瞄器.",SEVERE);
endif;
return0;
end;
////////////////////////////////////////////////////////
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
页:
[1]