欢迎光临
我们一直在努力

用InstallShield9 进行ASP软件的打包和数据库自动安装-ASP教程,ASP应用

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

//近期公司用asp+sql开发办公自动化oa,需要制作安装程序发行,此脚本是用is9.0制作,以此共享,与各同仁交流学习

#define bitmap_id 1

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

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

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

prototype createdatabase(string,string,string);//创建sql数据库

prototype checkiis(); // 示例:检查系统是否安装iis

string tmp_product_name,tmp_product_version,tmp_company_name,tmp_product_key,tmp_title_captionbar;

string globalstr,destdir,destsvr,destsa,destpw;

number nvfilehandle,nvfilehandlebak,asaline;

bool iscreatedb;

string nsetuptype,szsqlsvr,szsqlusr,szsqlpwd,szsqlsvrdefault,szsqlusrdefault,szsqlpwddefault;

string szadsvr,szadusr,szadpwd,szadsvrdefault,szadusrdefault,szadpwddefault;

string szaddomain,szadou,szaddomaindefault,szadoudefault,addc1;

string svname, svcompany, svserial;

function onfirstuibefore()

number nresult,nopt,svedit1,svedit2;

string sztitle, szmsg,szbmppath;

string szlicensefile, szquestion;

string szserverip,szserverport,szserveripdefault,szserverportdefault;

string szfile,sztargetpath,szdir,szfolder;

string szcomponents, sztargetdir;

string szfield1,szfield2;

string szdefault,svresult;

object piisobj;

list list,liststartcopy;

number nlevel,nvsize;

begin

tmp_product_name="xxx电子政务平台";

tmp_product_version="v2.0";

tmp_company_name="xxx公司";

tmp_product_key="88888888";

tmp_title_captionbar="0";

szbmppath=supportdir^"left.bmp";

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

//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));

placebitmap (szbmppath, bitmap_id, 0, 0, fullscreen);

//默认值设定

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

szdir = targetdir;

shell_object_folder = @folder_name;

svname = "";

svcompany = "";

svserial = "88888888";

if (checkiis()==1) then // 示例:检查系统是否安装iis

//messagebox ("已经安装了iis,安装继续!",severe);

goto dlg_start;

else

messagebox ("该系统没有安装iis,请先安装iis!",warning);

goto end_all_install;//结束安装

endif;

dlg_start:// 开始对话框

dlg_sdwelcome: //欢迎 对话框

sztitle = "欢迎安装使用 "+tmp_product_name+" "+tmp_product_version;

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 = "系统信息概述";

szmsg = "系统概述";

nresult = sdshowinfolist( sztitle, szmsg, list );

listdestroy( list );

if (nresult = back) goto dlg_sdlicense;

dlg_sdregisteruserex://用户信息 对话框

szmsg = "";

sztitle = "用户信息注册";

svcompany = "xxx省";

svserial = "xxx单位";

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_inputadadmin://设置ad目录服务器的ip和用户名

sztitle = "设置目录(ad)服务器";

szmsg = "现在开始设置目录(ad)服务器的ip、管理员帐号和密码";

szquestion=" 请输入目录(ad)服务器的管理员帐号和密码,安装程序将按照您提供的ip地址、帐号和密码进行配置。如果您提供的帐号或密码错误的话,该系统将不能正常使用!";

szadsvr="ip地址:";

szadusr="帐 号:";

szadpwd="密 码:";

szadsvrdefault="192.168.8.8";

szadusrdefault="administrator";

szadpwddefault="";

setdialogtitle(dlg_ask_text,sztitle);

nresult=sdshowdlgedit3 (sztitle, szquestion,szadsvr,szadusr,szadpwd,szadsvrdefault,szadusrdefault,szadpwddefault);

if (nresult = back) goto dlg_sdregisteruserex;

dlg_inputaddomain://设置ad目录服务器的域和组织

sztitle = "设置目录(ad)服务器";

szmsg = "现在开始设置目录(ad)服务器的域名和组织单元";

szquestion=" 请输入目录(ad)服务器的完整域名和组织单元,安装程序将按照您提供的信息进行配置。如果您提供的信息错误的话,该系统将不能正常使用!";

szaddomain="完整域名:";

szadou="组织单元:";

szaddomaindefault="xx.xx.com";

szadoudefault="xxx域名";

setdialogtitle(dlg_ask_text,sztitle);

nresult=sdshowdlgedit2 (sztitle, szquestion,szaddomain,szadou,szaddomaindefault,szadoudefault);

//域名转换为3个dc

if ((strsub ( addc1, szaddomain, 0, strfindex ( szaddomain, ".", 0 )+1))<0) then

//只取第一个,后面的固定

messagebox("你输入的域名有错误,请重新输入!",warning);

goto dlg_inputaddomain;

endif;

if (nresult = back) goto dlg_sdregisteruserex;

dlg_setuptype: //安装类型 对话框

nsetuptype = "完全安装";

sztitle = "安装类型";

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

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

if (nresult = back) then

goto dlg_sdregisteruserex;

endif;

if (nsetuptype = "仅主程序") then

goto dlg_sdaskdestpath;

endif;

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

sztitle = "设置sql数据库";

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

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

szsqlsvr="主机名:";

szsqlusr="用户名:";

szsqlpwd="密 码:";

szsqlsvrdefault="192.168.8.8";

szsqlusrdefault="sa";

szsqlpwddefault="";

setdialogtitle(dlg_ask_text,sztitle);

nresult=sdshowdlgedit3 (sztitle, szquestion,szsqlsvr,szsqlusr,szsqlpwd,szsqlsvrdefault,szsqlusrdefault,szsqlpwddefault);

if (nresult = back) goto dlg_setuptype;

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

sztitle = "确认数据库信息";

szmsg = "点击下一步继续";

liststartcopy = listcreate( stringlist );

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

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

listaddstring(liststartcopy,"主机名:"+szsqlsvrdefault,after);

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

listaddstring(liststartcopy,"密 码:"+szsqlpwddefault,after);

listaddstring(liststartcopy,"",after);

listaddstring(liststartcopy,"请确认您填写的信息,按下一步继续",after);

iscreatedb=true;//安装数据库标志为真

destsvr=szsqlsvrdefault;

destsa=szsqlusrdefault;

destpw=szsqlpwddefault;

nresult = sdstartcopy( sztitle, szmsg, liststartcopy );

listdestroy(liststartcopy);

if (nresult = back) goto dlg_asksql;

setstatuswindow(0, "");

enable(statusex);

statusupdate(on, 100);

if (nsetuptype = "仅数据库") then

goto end_all_install;

endif;

//开始主程序安装

dlg_sdaskdestpath://安装位置 对话框

sztitle = "主程序安装位置";

szmsg = "";

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

targetdir = szdir;

destdir=szdir;

if (nresult = back) goto dlg_setuptype;

dlg_selmode1://设置iis服务器 对话框

sztitle = "设置"+tmp_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_asksql;

if (svedit1=false) goto dlg_asktext1;//选择创建虚拟目录

dlg_asktext ://设置iis服务器,建立站点 对话框

sztitle = "设置iis信息服务器";

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

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

szserverip="地址:";

szserverport="端口:";

szserveripdefault="192.168.8.8";

szserverportdefault="80";

setdialogtitle(dlg_ask_text,sztitle);

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

if (nresult = back) goto dlg_selmode1;

if (nresult = next) goto dlg_sdstartcopy1;

dlg_asktext1 ://设置iis服务器,建立虚拟目录 对话框

sztitle = "设置iis信息服务器";

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

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

szserverip="别名:";

szserverport="目录:";

szserveripdefault="oa";

szserverportdefault=szdir;

setdialogtitle(dlg_ask_text,sztitle);

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

if (nresult = back) goto dlg_asktext;

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

sztitle = "确认iis服务器信息";

szmsg = "点击下一步继续";

liststartcopy = listcreate( stringlist );

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

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

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

if (svedit1=true) then

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

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

endif;

if (svedit2=true) then

listaddstring(liststartcopy,"别名:"+szserveripdefault,after);

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

endif;

listaddstring(liststartcopy,"",after);

listaddstring(liststartcopy,"请确认您填写的信息,按下一步继续",after);

nresult = sdstartcopy( sztitle, szmsg, liststartcopy );

listdestroy(liststartcopy);

if (nresult = back) goto dlg_asktext1;

setstatuswindow(0, "");

enable(statusex);

enable(indvfilestatus);

statusupdate(on, 100);

if (svedit1=true) then

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

endif;

if (svedit2=true) then

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

endif;

end_all_install://结束全部安装

return 0;

end;

function onfirstuiafter()

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

number bopt1, bopt2;

string szmsg;

begin

if ((nsetuptype = "完全安装") || (nsetuptype = "仅数据库"))then

//开始创建数据库

createdatabase(destsvr,destsa,destpw); // 创建和优化数据库

if (nsetuptype = "完全安装")then

//开始设置global.asa

openfilemode (file_mode_normal);//打开文件方式只读

if (openfile (nvfilehandlebak, destdir, "global.bak") < 0) then

messagebox ("打开配置文件失败,请手动配置", severe);

goto end_all_install1;

endif;

openfilemode (file_mode_append);//打开文件方式可写

if (createfile (nvfilehandle, destdir, "global.asa") < 0) then

messagebox ("创建global.asa文件失败,请手动配置", severe);

goto end_all_install1;

else//开始写文件

asaline=1;

while (getline (nvfilehandlebak, globalstr) = 0)

if (asaline=15) then//此行需修改,否则原样写入文件:使用单位所在区域

globalstr="\"uninname=" + svcompany + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=17) then//此行需修改,否则原样写入文件:单位名称

globalstr="application(\"thissoftuser\")=uninname & \"" + svserial + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=18) then//此行需修改,否则原样写入文件:单位名称

globalstr="application(\"unitname\")=uninname & \"" + svserial + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=30) then//此行需修改,否则原样写入文件:sql连接

globalstr="application(\"sqllink\")=\"provider=sqloledb.1;password=" + destpw + ";persist security info=true;user id=" + destsa + ";initial catalog=oa;data source=" + destsvr + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=32) then//此行需修改,否则原样写入文件:sql连接

globalstr="application(\"connectsql\")=\"driver=sql server;server=" + destsvr + ";database=oa;uid=" + destsa + ";initial catalog=oa;pwd=" + destpw + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=37) then//此行需修改,否则原样写入文件:ad管理员帐号

globalstr="application(\"user_sdjswoaversion\")=\"" + szadusrdefault + "@" + szaddomaindefault + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=38) then//此行需修改,否则原样写入文件:ad管理员密码

globalstr="application(\"password_sdjswoaversion\")=\"" + szadpwddefault + "\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=61) then//此行需修改,否则原样写入文件:adip地址和组织单元

globalstr="application(\"adspath_sdjswoaversion\")=\"ldap://" + szadsvrdefault + ":389/ou=" + szadoudefault + ",dc=" + addc1 + ",dc=xxx,dc=com\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

if (asaline=62) then//此行需修改,否则原样写入文件:连接ad

globalstr="application(\"exchangeserver_sdjswoaversion\")=\"" + szadsvrdefault + ":3268/\"";

if (writeline(nvfilehandle, globalstr) < 0) then

messagebox ("写global.asa文件失败,请手动修改", warning);

goto end_all_install1;

endif;

endif;

asaline=asaline+1;//下一行

endwhile;

endif;

// 关闭文件

closefile (nvfilehandle);

closefile (nvfilehandlebak);

sztitle = "创建配置文件";

szmsg = "恭喜,自动修改配置文件成功!";

sprintfbox (information, sztitle, szmsg, "global.asa");

endif;

endif;

end_all_install1:

disable(statusex);

bopt1 = false;

bopt2 = false;

szmsg1 = sdloadstring(ifx_sdfinish_msg1);

szmsg2 = "";

szoption1 = "";

szoption2 = "";

sztitle = tmp_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;

dlg_rebootdialog:

sztitle = "欢迎安装使用 "+tmp_product_name+" "+tmp_product_version;

szmsg = " 安装向导已经成功安装该系统。在使用该系统之前,必须重新启动计算机。";

sdfinishreboot(sztitle, szmsg, sys_bootmachine,"",0);

return 0;

end;

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

// 创建和优化数据库

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

function createdatabase(svsqlsvrf,svsqlusrf,svsqlpwdf)

string szcmdline,szwaittxt,tmpstr;

begin

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

sdshowmsg (szwaittxt, true);

delay(3);

szcmdline = "/u "+svsqlusrf+" /p "+svsqlpwdf+" /s "+svsqlsvrf+" /q \"restore database sdjswoa from disk=" + targetdir + "\\db\\oa\"";

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

tmpstr="数据库创建失败!请确您的系统中已安装 microsoft sql server 2000和sp1!";

sprintfbox (information, "安装提示信息", tmpstr, "");

endif;

sdshowmsg (szwaittxt, false);

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

sdshowmsg (szwaittxt, true);

delay(3);

szcmdline = "/u "+svsqlusrf+" /p "+svsqlpwdf+" /s "+svsqlsvrf+" /q \"use sdjswoa ; exec sp_updatestats\"";

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

tmpstr="数据库优化失败!请联系相关人员或者手动安装!";

sprintfbox (information, "安装提示信息", tmpstr, "");

endif;

sdshowmsg (szwaittxt, false);

return 0;

end;

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

// 创建iis站点

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

function createwebsite(szserveripdefault,szserverportdefault)

string szcmdline,szwaittxt;

begin

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

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

else

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

sdshowmsg (szwaittxt, true);

delay(3);

szcmdline = supportdir ^"mkw3site.vbs"+" -r "+targetdir+" -i "+szserveripdefault+" -o "+szserverportdefault+" -t "+tmp_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=" 正在创建"+tmp_product_name+"的虚拟目录….";

sdshowmsg (szwaittxt, true);

delay(3);

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 checkiis() // 示例:检查系统是否安装iis

number nvtype, nvsize;

string svvalue;

begin

regdbsetdefaultroot ( hkey_local_machine );

if (regdbkeyexist ("system\\currentcontrolset\\services\\iisadmin" ) = 1) then

return (1);

else

return (0);

endif;

end;

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