LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

用InstallShield进行ASP软件的打包和自动安装

admin
2010年7月4日 23:51 本文热度 6010
#include "ifx.h" //不能移动
//////////////////////////////////////////////////////////////////////////////
// 用installshield 进行 asp 软件的打包和自动安装
// 原创作者: 贾俊 (jaron)
// 网址: http://jiangdu.net
// 邮件: jaron@jdinfo.net
// 首次发表于网易,chinaasp,asphouse
//////////////////////////////////////////////////////////////////////////////
// 功能:
// 1.文件复制
// 2.可选自动设置独立站点运行(设置iis)
// 3.可选自动设置虚拟站点运行(设置iis)
// 4.设置目录可读,可写及可运行脚本
// 5.自动创建odbc
// 6.自动创建或附加mdf格式的sql数据库 并优化
// 7.自动安装 scriptencode 解码程序
// 本文仅列出了 installshield 的 script 部分,还有两个 vbs 文件及其他设置
// 测试过程中有任何问题,请来 http://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+" 虚拟目录\n\n 例:\n /";
szoption1 = "";
szoption2 = "";
sztitle = @product_name+"安装完成";
sdfinishex(sztitle,szmsg1,szmsg2,szoption1,szoption2,bopt1,bopt2);


szcmdline = "";
//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信息服务设置失败!\n请自行创建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 n'oasystem' , n'"+supportdir ^"oasystem_data.mdf'\"";
if (launchappandwait("osql.exe", szcmdline,wait) < 0) then
messagebox ("数据库创建失败!请确您的系统中已安装 microsoft sql server 2000.\n如仍无法解决,请联系系统供应商!",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查询分析器中执行 \n use oasystem ; exec sp_updatestats \n完成!",severe);
endif;
sdshowmsg (szwaittxt, false);
return 0;
end;


该文章在 2010/7/4 23:51:07 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved