#include
ifx
h
//不能移动
//////////////////////////////////////////////////////////////////////////////
//用InstallShield进行ASP软件的打包和自动安装
//原创作者:贾俊(Jaron)
//网址:
//邮件:
//首次发表于网易ChinaASPASPHouse
//////////////////////////////////////////////////////////////////////////////
//功能
//文件复制
//可选自动设置独立站点运行(设置IIS)
//可选自动设置虚拟站点运行(设置IIS)
//设置目录可读可写及可运行脚本
//自动创建ODBC
//自动创建或附加MDF格式的SQL数据库并优化
//自动安装ScriptEncode解码程序
//本文仅列出了InstallShield的Script部分还有两个VBS文件及其他设置
//测试过程中有任何问题请来;编程空间版讨论
//////////////////////////////////////////////////////////////////////////////
prototypeCreateDataBase(STRINGSTRINGSTRING);
prototypeCreateWebSite(STRINGSTRING);//创建IIS站点
prototypeCreateVirtualDir(STRING);//创建虚拟目录
//////////////////////////////////////////////////////////////////////////////
//
//函数:OnFirstUIBefore
//
//事件:FirstUIBeforeeventissentwheninstallationisrunforthefirst
//timeongivenmachineInthehandlerinstallationusuallydisplays
//UIallowingendusertospecifyinstallationparametersAfterthis
//functionreturnsComponentTransferDataiscalledtoperformfile
//transfer
//
///////////////////////////////////////////////////////////////////////////////
functionOnFirstUIBefore()
NUMBERnResultnSetupTypenOptsvEditsvEdit;
STRINGszTitleszMsgszBmpPath;
STRINGszLicenseFileszQuestion;
STRINGszServerIPszServerPortszServerIPDefaultszServerPortDefault;
STRINGszSQLsvrszSQLusrszSQLpwdsvSQLsvrsvSQLusrsvSQLpwd;
STRINGsvNamesvCompanysvSerial;
STRINGszFileszTargetPathszDirszfolder;
STRINGszComponentsszTargetdir;
STRINGszFieldszField;
STRINGszDefaultsvResult;
OBJECTpiisObj;
LISTlistlistStartCopy;
NUMBERnLevelnvSize;
begin
szBmpPath=C:^temp^leftbmp;
DialogSetInfo(DLG_INFO_ALTIMAGEszBmpPathTRUE);//设置左边的图片
//ToDo:ifyouwanttoenablebackgroundwindowtitleandcaptionbartitle
//SetTitle(@TITLE_MAINWHITE);
//SetTitle(@TITLE_CAPTIONBARBACKGROUNDCAPTION);
//Enable(FULLWINDOWMODE);
//Enable(BACKGROUND);
//SetColor(BACKGROUNDRGB());
//默认值设定
TARGETDIR=C:^inetpub^JaronSoft^@FOLDER_NAME;
szDir=TARGETDIR;
SHELL_OBJECT_FOLDER=@FOLDER_NAME;
svName=试用版用户;
svCompany=JDinfoNetwork;
svSerial=;
Dlg_Start:
//beginningofdialogslabel
Dlg_SdWelcome://欢迎对话框
szTitle=欢迎进入;
szMsg=;
nResult=SdWelcome(szTitleszMsg);
if(nResult=BACK)gotoDlg_Start;
Dlg_SdLicense://软件许可协议对话框
szLicenseFile=SUPPORTDIR^licensetxt;
szTitle=许可协议;
szMsg=;
szQuestion=;
nResult=SdLicense(szTitleszMsgszQuestionszLicenseFile);
if(nResult=BACK)gotoDlg_SdWelcome;
Dlg_SdShowInfoList://readme文件对话框
szFile=SUPPORTDIR^infolisttxt;
list=ListCreate(STRINGLIST);
ListReadFromFile(listszFile);
szTitle=README;
szMsg=;
nResult=SdShowInfoList(szTitleszMsglist);
ListDestroy(list);
if(nResult=BACK)gotoDlg_SdLicense;
Dlg_SdRegisterUserEx://用户信息对话框
szMsg=;
szTitle=用户信息;
nResult=SdRegisterUserEx(szTitleszMsgsvNamesvCompanysvSerial);
if(nResult=BACK)gotoDlg_SdShowInfoList;
//检查序列号
//if(CHK_serial(svCompanysvSerial)<)then
//gotoDlg_SdRegisterUserEx;
//endif;
//检查序列号完毕
Dlg_SdAskDestPath://安装位置对话框
szTitle=检查序列号;
szMsg=;
nResult=SdAskDestPath(szTitleszMsgszDir);
TARGETDIR=szDir;
if(nResult=BACK)gotoDlg_SdRegisterUserEx;
Dlg_SetupType://安装类型对话框
nSetupType=TYPICAL;
szTitle=安装类型;
szMsg=请选择您需要按哪种方式安装;
nResult=SetupType(szTitleszMsgnSetupType);
if(nResult=BACK)then
gotoDlg_SdAskDestPath;
else
nSetupType=nResult;
if(nSetupType!=CUSTOM)then
szTargetPath=TARGETDIR;
nvSize=;
ComponentCompareSizeRequired(MEDIAszTargetPathnvSize);
if(nvSize!=)then
MessageBox(szSdStr_NotEnoughSpaceWARNING);
gotoDlg_SetupType;
endif;
endif;
endif;
Dlg_SdComponentTree://对话框
if((nResult=BACK)&&(nSetupType!=CUSTOM))gotoDlg_SetupType;
szTitle=对话框;
szMsg=;
szTargetdir=TARGETDIR;
szComponents=;
nLevel=;
if(nSetupType=CUSTOM)then
nResult=SdComponentTree(szTitleszMsgszTargetdirszComponentsnLevel);
if(nResult=BACK)gotoDlg_SetupType;
endif;
Dlg_SdSelectFolder://对话框
szfolder=SHELL_OBJECT_FOLDER;
szTitle=文件夹;
szMsg=;
nResult=SdSelectFolder(szTitleszMsgszfolder);
SHELL_OBJECT_FOLDER=szfolder;
if(nResult=BACK)gotoDlg_SdComponentTree;
Dlg_SelMode://设置数据库服务器对话框
szTitle=设置+@PRODUCT_NAME+的运行模式;
szMsg=请选择软件运行的方式极力推荐使用独立站点方式运行;
szField=独立站点方式运行(自动创建新站点);
szField=虚拟目录方式运行(自动创建虚拟目录);
svEdit=TRUE;
svEdit=FALSE;
SetDialogTitle(DLG_ASK_TEXTszTitle);
//DialogSetInfo(DLG_INFO_CHECKSELECTION);
nOpt=EXCLUSIVE;
nResult=AskOptions(nOptszMsgszFieldsvEditszFieldsvEdit);
if(nResult=BACK)gotoDlg_SdSelectFolder;
if(svEdit=FALSE)gotoDlg_SdStartCopy;
Dlg_AskText://设置数据库服务器对话框
szTitle=设置IIS信息服务及数据库服务器;
szMsg=现在开始设置IIS系统;
szQuestion=请输入本服务器的主机名或IP地址安装程序将按照您提供的资料设置IIS信息服务如果您没有填写安装程序将自动跳过站点的创建!;
szServerIP=地址;
szServerPort=端口;
szServerIPDefault=;
szServerPortDefault=;
SetDialogTitle(DLG_ASK_TEXTszTitle);
nResult=SdShowDlgEdit(szTitleszQuestionszServerIPszServerPortszServerIPDefaultszServerPortDefault);
if(nResult=BACK)gotoDlg_SelMode;
Dlg_AskSQL://设置数据库服务器对话框
szTitle=设置数据库;
szMsg=现在开始设置MicrosoftSQLServer数据库系统;
szQuestion=请输入SQLSERVER数据库服务器的用户名和密码安装程序将按照您上步提供的IP地址和下面的用户名和密码创建和优化数据库系统如果您提供的用户名和密码是错误的安装程序将自动跳过数据的设置!;
szSQLsvr=主机名;
szSQLusr=用户名;
szSQLpwd=密码;
svSQLsvr=localhost;
svSQLusr=sa;
szSQLpwd=;
SetDialogTitle(DLG_ASK_TEXTszTitle);
nResult=SdShowDlgEdit(szTitleszQuestionszSQLsvrszSQLusrszSQLpwdsvSQLsvrsvSQLusrsvSQLpwd);
if(nResult=BACK)gotoDlg_SelMode;
Dlg_SdStartCopy://开始复制文件对话框
szTitle=开始复制文件;
szMsg=点击下一步开始复制文件;
listStartCopy=ListCreate(STRINGLIST);
ListAddString(listStartCopy用户名+svNameAFTER);
ListAddString(listStartCopy公司名称+svCompanyAFTER);
ListAddString(listStartCopy序列号+svSerialAFTER);
ListAddString(listStartCopy目标目录+szDirAFTER);
if(svEdit=TRUE)then
ListAddString(listStartCopyIP地址+szServerIPDefaultAFTER);
ListAddString(listStartCopy端口号+szServerPortDefaultAFTER);
endif;
ListAddString(listStartCopy请确认您填写的信息按下一步开始复制文件AFTER);
nResult=SdStartCopy(szTitleszMsglistStartCopy);
ListDestroy(listStartCopy);
if(nResult=BACK)gotoDlg_AskText;
//setupdefaultstatus
SetStatusWindow();
Enable(STATUSEX);
StatusUpdate(ON);
if(svEdit=TRUE)then
CreateWebSite(szServerIPDefaultszServerPortDefault);//开始创建IIS站点
endif;
if(svEdit=TRUE)then
CreateVirtualDir(NetOA);//开始创建IIS站点
endif;
CreateDataBase(svSQLsvrsvSQLusrsvSQLpwd);//创建和优化数据库
return;
end;
//////////////////////////////////////////////////////////////////////////////
//
//函数:OnFirstUIAfter
//
//事件:FirstUIAftereventissentafterfiletransferwheninstallation
//isrunforthefirsttimeongivenmachineInthiseventhandler
//installationusuallydisplaysUIthatwillinformenduserthat
//installationhasbeencompletedsuccessfully
//
///////////////////////////////////////////////////////////////////////////////
functionOnFirstUIAfter()
STRINGszTitleszMsgszMsgszOptionszOptionszCmdLine;
NUMBERbOptbOpt;
begin
//set_vod_liveaddress();
szCmdLine=SUPPORTDIR^SCECHSEXE;
if(LaunchAppAndWait(szCmdLine/qWAIT)<)then
MessageBox(不能安装解码程序请联系供应商SEVERE);
endif;
Disable(STATUSEX);
bOpt=FALSE;
bOpt=FALSE;
szMsg=SdLoadString(IFX_SDFINISH_MSG);
szMsg=请浏览本主机WEB服务器上的+@PRODUCT_NAME+虚拟目录例&//Localhost/;
szOption=;
szOption=;
szTitle=@PRODUCT_NAME+安装完成;
SdFinishEx(szTitleszMsgszMsgszOptionszOptionbOptbOpt);
szCmdLine=//LocalHost;
//if(LaunchApp(PROGRAMFILES^InternetExplorer^IEXPLOREEXEszCmdLine)<)then
//MessageBox(不能打开浏览器SEVERE);
//endif;
return;
end;
//////////////////////////
//创建IIS站点
//////////////////////////
functionCreateWebSite(szServerIPDefaultszServerPortDefault)
STRINGszCmdLineszWaitTxt;
begin
if((szServerIPDefault=)||(szServerPortDefault=))then
MessageBox(您没有设定+@PRODUCT_NAME+运行的服务器IP地址或端口!!IIS信息服务设置失败!请自行创建IIS站点并将主目录设为+TARGETDIRSEVERE);
else
szWaitTxt=正在创建IIS和设置站点;
SdShowMsg(szWaitTxtTRUE);
Delay();
szCmdLine=SUPPORTDIR^mkwsitevbs+r+TARGETDIR+i+szServerIPDefault+o+szServerPortDefault+t+@PRODUCT_NAME;
if(LaunchAppAndWait(WScriptexeszCmdLineWAIT)<)then
MessageBox(不能建立WEB虚拟目录没有找到WScriptexe或执行脚本错误SEVERE);
endif;
SdShowMsg(szWaitTxtFALSE);
endif;
return;
end;
//////////////////////////
//创建虚拟目录
//////////////////////////
functionCreateVirtualDir(VirtualFolder)
STRINGszCmdLineszWaitTxt;
begin
if(VirtualFolder=)then
MessageBox(没能读取到虚拟目录的名称!请联系系统供应商!+TARGETDIRSEVERE);
else
szWaitTxt=正在创建+@PRODUCT_NAME+的虚拟目录;
SdShowMsg(szWaitTxtTRUE);
Delay();
szCmdLine=SUPPORTDIR^mkwebdirvbs+wv\+VirtualFolder+\\+TARGETDIR+\;
if(LaunchAppAndWait(WScriptexeszCmdLineWAIT)<)then
MessageBox(不能建立WEB虚拟目录没有找到WScriptexe或执行脚本错误SEVERE);
endif;
SdShowMsg(szWaitTxtFALSE);
endif;
return;
end;
//////////////////////////
//创建和优化数据库
//////////////////////////
functionCreateDataBase(svSQLsvrsvSQLusrsvSQLpwd)
STRINGszCmdLineszWaitTxt;
begin
szWaitTxt=正在创建+@PRODUCT_NAME+所需数据库;
SdShowMsg(szWaitTxtTRUE);
Delay();
szCmdLine=/U+svSQLusr+/P+svSQLpwd+/S+svSQLsvr+/Q\execsp_attach_dbNOASystemN+SUPPORTDIR^OASystem_datamdf\;
if(LaunchAppAndWait(osqlexeszCmdLineWAIT)<)then
MessageBox(数据库创建失败!请确您的系统中已安装MicrosoftSQLServer如仍无法解决请联系系统供应商!SEVERE);
endif;
SdShowMsg(szWaitTxtFALSE);
szWaitTxt=正在优化+@PRODUCT_NAME+系统数据库;
SdShowMsg(szWaitTxtTRUE);
Delay();
szCmdLine=/U+svSQLusr+/P+svSQLpwd+/S+svSQLsvr+/Q\useOASystem;execsp_updatestats\;
if(LaunchAppAndWait(osqlexeszCmdLineWAIT)<)then
MessageBox(数据库优化失败!您可以在sql查询分析器中执行useOASystem;execsp_updatestats完成!SEVERE);
endif;
SdShowMsg(szWaitTxtFALSE);
return;
end;