欢迎光临
我们一直在努力

用InstallShield打包ASP程序-ASP教程,ASP应用

建站超值云服务器,限时71元/月

#include "ifx.h" //不能移动

//////////////////////////////////////////////////////////////////////////////

// 用installshield 进行 asp 软件的打包和自动安装

// 原创作者: 贾俊 (jaron)

// 网址: http://www.jiangdu.net

// 邮件: jaron@jdinfo.net

// 首次发表于网易,chinaasp,asphouse

//////////////////////////////////////////////////////////////////////////////

// 功能:

// 1.文件复制

// 2.可选自动设置独立站点运行(设置iis)

// 3.可选自动设置虚拟站点运行(设置iis)

// 4.设置目录可读,可写及可运行脚本

// 5.自动创建odbc

// 6.自动创建或附加mdf格式的sql数据库 并优化

// 7.自动安装 scriptencode 解码程序

// 本文仅列出了 installshield 的 script 部分,还有两个 vbs 文件及其他设置

// 测试过程中有任何问题,请来 http://www.jiangdu.net/bbs 编程空间版 讨论

//////////////////////////////////////////////////////////////////////////////

prototype createdatabase(string,string,string);

prototype createwebsite(string,string); // 创建 iis 站点

prototype createvirtualdir(string); // 创建虚拟目录

//////////////////////////////////////////////////////////////////////////////

//

// 函数: onfirstuibefore

//

// 事件: firstuibefore event is sent when installation is run for the first

// time on given machine. in the handler installation usually displays

// ui allowing end user to specify installation parameters. after this

// function returns, componenttransferdata is called to perform file

// transfer.

//

///////////////////////////////////////////////////////////////////////////////

function onfirstuibefore()

number nresult,nsetuptype,nopt,svedit1,svedit2;

string sztitle, szmsg,szbmppath;

string szlicensefile, szquestion;

string szserverip,szserverport,szserveripdefault,szserverportdefault;

string szsqlsvr,szsqlusr,szsqlpwd,svsqlsvr,svsqlusr,svsqlpwd;

string svname, svcompany, svserial;

string szfile,sztargetpath,szdir,szfolder;

string szcomponents, sztargetdir;

string szfield1,szfield2;

string szdefault,svresult;

object piisobj;

list list,liststartcopy;

number nlevel,nvsize;

begin

szbmppath="c:"^"temp"^"left.bmp";

dialogsetinfo (dlg_info_altimage, szbmppath, true); // 设置左边的图片

//to do: if you want to enable background, window title, and caption bar title

//settitle( @title_main, 24, white );

//settitle( @title_captionbar, 0, backgroundcaption );

//enable( fullwindowmode );

//enable( background );

//setcolor(background,rgb (0, 128, 128));

//默认值设定

targetdir = "c:"^"inetpub"^"jaronsoft"^@folder_name;

szdir = targetdir;

shell_object_folder = @folder_name;

svname = "试用版用户";

svcompany = "jdinfo network";

svserial = "111-1111111";

dlg_start:

// beginning of dialogs label

dlg_sdwelcome: //欢迎 对话框

sztitle = "欢迎进入";

szmsg = "";

nresult = sdwelcome( sztitle, szmsg );

if (nresult = back) goto dlg_start;

dlg_sdlicense://软件许可协议 对话框

szlicensefile = supportdir ^ "license.txt";

sztitle = "许可协议";

szmsg = "";

szquestion = "";

nresult = sdlicense( sztitle, szmsg, szquestion, szlicensefile );

if (nresult = back) goto dlg_sdwelcome;

dlg_sdshowinfolist://readme文件 对话框

szfile = supportdir ^ "infolist.txt";

list = listcreate( stringlist );

listreadfromfile( list, szfile );

sztitle = "readme";

szmsg = "";

nresult = sdshowinfolist( sztitle, szmsg, list );

listdestroy( list );

if (nresult = back) goto dlg_sdlicense;

dlg_sdregisteruserex://用户信息 对话框

szmsg = "";

sztitle = "用户信息";

nresult = sdregisteruserex( sztitle, szmsg, svname, svcompany, svserial );

if (nresult = back) goto dlg_sdshowinfolist;

//检查序列号

//if (chk_serial(svcompany, svserial)<0) then

//goto dlg_sdregisteruserex;

//endif;

//检查序列号完毕

dlg_sdaskdestpath://安装位置 对话框

sztitle = "检查序列号";

szmsg = "";

nresult = sdaskdestpath( sztitle, szmsg, szdir, 0 );

targetdir = szdir;

if (nresult = back) goto dlg_sdregisteruserex;

dlg_setuptype: //安装类型 对话框

nsetuptype = typical;

sztitle = "安装类型";

szmsg = "请选择您需要按哪种方式安装";

nresult = setuptype ( sztitle , szmsg , "" , nsetuptype , 0 );

if (nresult = back) then

goto dlg_sdaskdestpath;

else

nsetuptype = nresult;

if (nsetuptype != custom) then

sztargetpath = targetdir;

nvsize = 0;

componentcomparesizerequired(media,sztargetpath,nvsize);

if (nvsize != 0) then

messagebox( szsdstr_notenoughspace, warning );

goto dlg_setuptype;

endif;

endif;

endif;

dlg_sdcomponenttree: //对话框

if ((nresult = back) && (nsetuptype != custom)) goto dlg_setuptype;

sztitle = "对话框";

szmsg = "";

sztargetdir = targetdir;

szcomponents = "";

nlevel = 2;

if (nsetuptype = custom) then

nresult = sdcomponenttree(sztitle, szmsg, sztargetdir, szcomponents, nlevel);

if (nresult = back) goto dlg_setuptype;

endif;

dlg_sdselectfolder://对话框

szfolder = shell_object_folder;

sztitle = "文件夹";

szmsg = "";

nresult = sdselectfolder( sztitle, szmsg, szfolder );

shell_object_folder = szfolder;

if (nresult = back) goto dlg_sdcomponenttree;

dlg_selmode ://设置数据库服务器 对话框

sztitle = "设置"+@product_name+"的运行模式";

szmsg = "请选择软件运行的方式,极力推荐使用独立站点方式运行";

szfield1="独立站点方式运行(自动创建新站点)";

szfield2="虚拟目录方式运行(自动创建虚拟目录)";

svedit1=true;

svedit2=false;

setdialogtitle(dlg_ask_text,sztitle);

//dialogsetinfo ( dlg_info_checkselection, "", 1);

nopt = exclusive ;

nresult = askoptions (nopt,szmsg,szfield1,svedit1,szfield2,svedit2);

if (nresult = back) goto dlg_sdselectfolder;

if (svedit1=false) goto dlg_sdstartcopy;

dlg_asktext ://设置数据库服务器 对话框

sztitle = "设置iis信息服务及数据库服务器";

szmsg = "现在开始设置iis系统";

szquestion=" 请输入本服务器的主机名或ip地址,安装程序将按照您提供的资料设置iis信息服务。如果您没有填写,安装程序将自动跳过站点的创建!";

szserverip="地址:";

szserverport="端口:";

szserveripdefault="192.168.0.1";

szserverportdefault="80";

setdialogtitle(dlg_ask_text,sztitle);

nresult=sdshowdlgedit2 (sztitle, szquestion,szserverip,szserverport,szserveripdefault,szserverportdefault);

if (nresult = back) goto dlg_selmode;

dlg_asksql ://设置数据库服务器 对话框

sztitle = "设置数据库";

szmsg = "现在开始设置microsoft sql server数据库系统";

szquestion=" 请输入sql server数据库服务器的用户名和密码,安装程序将按照您上步提供的ip地址和下面的用户名和密码创建和优化数据库系统。如果您提供的用户名和密码是错误的,安装程序将自动跳过数据的设置!";

szsqlsvr="主机名:";

szsqlusr="用户名:";

szsqlpwd="密码:";

svsqlsvr="localhost";

svsqlusr="sa";

szsqlpwd="";

setdialogtitle(dlg_ask_text,sztitle);

nresult=sdshowdlgedit3 (sztitle, szquestion,szsqlsvr,szsqlusr,szsqlpwd,svsqlsvr,svsqlusr,svsqlpwd);

if (nresult = back) goto dlg_selmode;

dlg_sdstartcopy://开始复制文件 对话框

sztitle = "开始复制文件";

szmsg = "点击下一步开始复制文件";

liststartcopy = listcreate( stringlist );

listaddstring(liststartcopy,"用户名:"+svname,after);

listaddstring(liststartcopy,"公司名称:"+svcompany,after);

listaddstring(liststartcopy,"序列号:"+svserial,after);

listaddstring(liststartcopy,"目标目录:"+szdir,after);

if (svedit1=true) then

listaddstring(liststartcopy,"ip地址:"+szserveripdefault,after);

listaddstring(liststartcopy,"端口号:"+szserverportdefault,after);

endif;

listaddstring(liststartcopy,"请确认您填写的信息,按下一步开始复制文件",after);

nresult = sdstartcopy( sztitle, szmsg, liststartcopy );

listdestroy(liststartcopy);

if (nresult = back) goto dlg_asktext;

// setup default status

setstatuswindow(0, "");

enable(statusex);

statusupdate(on, 100);

if (svedit1=true) then

createwebsite(szserveripdefault,szserverportdefault); // 开始创建 iis 站点

endif;

if (svedit2=true) then

createvirtualdir("netoa"); // 开始创建 iis 站点

endif;

createdatabase(svsqlsvr,svsqlusr,svsqlpwd); // 创建和优化数据库

return 0;

end;

//////////////////////////////////////////////////////////////////////////////

//

// 函数: onfirstuiafter

//

// 事件: firstuiafter event is sent after file transfer, when installation

// is run for the first time on given machine. in this event handler

// installation usually displays ui that will inform end user that

// installation has been completed successfully.

//

///////////////////////////////////////////////////////////////////////////////

function onfirstuiafter()

string sztitle,szmsg1, szmsg2, szoption1, szoption2,szcmdline;

number bopt1, bopt2;

begin

//set_vod_liveaddress();

szcmdline = supportdir ^"sce10chs.exe";

if (launchappandwait(szcmdline, " /q",wait) < 0) then

messagebox ("不能安装解码程序,请联系供应商.",severe);

endif;

disable(statusex);

bopt1 = false;

bopt2 = false;

szmsg1 = sdloadstring(ifx_sdfinish_msg1);

szmsg2 = "请浏览本主机web服务器上的 "+@product_name+" 虚拟目录 例: http://localhost/";

szoption1 = "";

szoption2 = "";

sztitle = @product_name+"安装完成";

sdfinishex(sztitle,szmsg1,szmsg2,szoption1,szoption2,bopt1,bopt2);

szcmdline = "http://localhost";

//if (launchapp(programfiles ^"internet explorer"^"iexplore.exe", szcmdline) < 0) then

//messagebox ("不能打开浏览器.",severe);

//endif;

return 0;

end;

//////////////////////////

// 创建iis站点

//////////////////////////

function createwebsite(szserveripdefault,szserverportdefault)

string szcmdline,szwaittxt;

begin

if ((szserveripdefault = "") || (szserverportdefault = "")) then

messagebox ("您没有设定"+@product_name+"运行的服务器ip地址或端口!!iis信息服务设置失败!请自行创建iis站点,并将主目录设为:"+targetdir,severe);

else

szwaittxt=" 正在创建iis和设置站点….";

sdshowmsg (szwaittxt, true);

delay(2);

szcmdline = supportdir ^"mkw3site.vbs"+" -r "+targetdir+" -i "+szserveripdefault+" -o "+szserverportdefault+" -t "+@product_name;

if (launchappandwait("wscript.exe", szcmdline,wait) < 0) then

messagebox ("不能建立web 虚拟目录,没有找到 wscript.exe 或执行脚本错误.",severe);

endif;

sdshowmsg (szwaittxt, false);

endif;

return 0;

end;

//////////////////////////

// 创建虚拟目录

//////////////////////////

function createvirtualdir(virtualfolder)

string szcmdline,szwaittxt;

begin

if (virtualfolder = "") then

messagebox ("没能读取到虚拟目录的名称!请联系系统供应商!"+targetdir,severe);

else

szwaittxt=" 正在创建"+@product_name+"的虚拟目录….";

sdshowmsg (szwaittxt, true);

delay(2);

szcmdline = supportdir ^"mkwebdir.vbs "+" -w 1 -v \""+virtualfolder+"\",\""+ targetdir+"\"" ;

if (launchappandwait("wscript.exe", szcmdline,wait) < 0) then

messagebox ("不能建立web 虚拟目录,没有找到 wscript.exe 或执行脚本错误.",severe);

endif;

sdshowmsg (szwaittxt, false);

endif;

return 0;

end;

//////////////////////////

// 创建和优化数据库

//////////////////////////

function createdatabase(svsqlsvr,svsqlusr,svsqlpwd)

string szcmdline,szwaittxt;

begin

szwaittxt=" 正在创建"+@product_name+"所需数据库….";

sdshowmsg (szwaittxt, true);

delay(2);

szcmdline = "/u "+svsqlusr+" /p "+svsqlpwd+" /s "+svsqlsvr+" /q \"exec sp_attach_db noasystem , n"+supportdir ^"oasystem_data.mdf\"";

if (launchappandwait("osql.exe", szcmdline,wait) < 0) then

messagebox ("数据库创建失败!请确您的系统中已安装 microsoft sql server 2000. 如仍无法解决,请联系系统供应商!",severe);

endif;

sdshowmsg (szwaittxt, false);

szwaittxt=" 正在优化"+@product_name+"系统数据库….";

sdshowmsg (szwaittxt, true);

delay(2);

szcmdline = "/u "+svsqlusr+" /p "+svsqlpwd+" /s "+svsqlsvr+" /q \"use oasystem ; exec sp_updatestats\"";

if (launchappandwait("osql.exe", szcmdline,wait) < 0) then

messagebox ("数据库优化失败!您可以在 sql查询分析器中执行 use oasystem ; exec sp_updatestats 完成!",severe);

endif;

sdshowmsg (szwaittxt, false);

return 0;

end;

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用InstallShield打包ASP程序-ASP教程,ASP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章