admin管理员组文章数量:1622287
http://blog.csdn/wpabbs/article/details/3129602
版权声明:本文为博主原创文章,未经博主允许不得转载。
工作之余没事情做,研究了一下InstallShield打包,得到了一些小的经验,跟大家分享一下。因为我也是新手,错误之处还请见谅,希望对大家有所帮助。
本文主要是打包JSP+TOMCAT+JDK+MYSQL。
首先下载InstallShield软件,现在版本很多,但是脚本代码几乎差不多的。
其次下载Tomcat绿色版,MYSQL绿色版,把安装过的JDK拷贝一份。
再次把数据库文件放到MYSQL目录下,把项目放到TOMCAT下。
一切准备就绪,我们就开始了。。。。
1.设置安装语言,在选择项目后,如果选择的多种安装语言,则安装程序运行时首先让选择安装语言,此处不需我们写脚本。如果只有一种语言则安装时不弹出选择语言对话框。
2.设置启动画面,只需要把默认的图片更换即可,不过图片名称不能改变。
3.如何判断操作系统,代码如下:
Function OnBegin()
Begin
if ( !SYSINFO.bIntel) then
szMsg = "提示:该软件只能运行在Intel系列的处理器上!/n/n安装程序将终止";
MessageBox(szMsg, SEVERE);
abort;
endif;
if (SYSINFO.WIN9X.bWinMe ||
SYSINFO.WINNT.bWinNT ||
SYSINFO.WINNT.bWinNT4 ||
SYSINFO.WINNT.bWin2000) then
szMsg = "提示:该软件只能运行在WIN9X系统上才能确保程序的正常工作!/n/n是否继续安装?";
if ( !AskYesNo (szMsg, NO)) then
abort;
endif;
endif;
end
4.操作系统内存容量判断
if (GetSystemInfo (EXTENDEDMEMORY, nvFreeMem, svResult) < 0) then
MessageBox ("内存检测失败,安装程序将终止!.", SEVERE);
abort;
endif;
if ( nvFreeMem < 16384 ) then
szMsg = "该软件只能安装在16M以上内存的机器中。/n很遗憾,本机器可用内存不足16M!/n/n安装程序将终止!"; MessageBox (szMsg, SEVERE);
abort;
endif;
5.序列号的生成(首先获得磁盘序列,然后生成序列号)
NUMBER volumeNum;
//Before using the GetVolumeInformation API you will need to prototype it
prototype KERNEL32.GetVolumeInformation (BYREF STRING, BYREF STRING, NUMBER, BYREF NUMBER, BYREF NUMBER, BYREF NUMBER, BYREF STRING, NUMBER);
//prototype for the custom InstallScript function
prototype GetVolumeSerial();
//function definition
function GetVolumeSerial()
STRING lpRootPathName;
STRING lpVolumeNameBuffer;
NUMBER nVolumeNameSize;
NUMBER lpVolumeSerialNumber;
NUMBER lpMaximumComponentLength;
NUMBER lpFileSystemFlags;
STRING lpFileSystemNameBuffer;
NUMBER nFileSystemNameSize;
BOOL APIReturn;
begin
lpRootPathName="d://";
nVolumeNameSize=60;
nFileSystemNameSize=60;
//APIReturn=GetVolumeInformation(lpRootPathName, lpVolumeNameBuffer, nVolumeNameSize, lpVolumeSerialNumber, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize);
APIReturn=GetVolumeInformation(lpRootPathName, lpVolumeNameBuffer, nVolumeNameSize, lpVolumeSerialNumber, lpMaximumComponentLength, lpFileSystemFlags, lpFileSystemNameBuffer, nFileSystemNameSize);
if (APIReturn) then
volumeNum = lpVolumeSerialNumber ;
if (volumeNum < 0) then
volumeNum = 0 - volumeNum;
endif;
//NumToStr(volumeNum,lpVolumeSerialNumber);
//SprintfBox(INFORMATION, "", "Volume= %s/nVolume Serial= %d", lpRootPathName, lpVolumeSerialNumber);
if (volumeNum > 2139999999 - 135792468) then
//volumeNum = 123456789;
volumeNum = volumeNum - volumeNum/100000000*100000000;
endif;
else
volumeNum = 123456789;
//MessageBox("Failure.",0);
endif;
end ;
prototype getNumString();
function getNumString()
number numSpace;
number numMen;
string tmpString;
begin
//tmpNum = GetWindowHandle(HWND_INSTALL); //安装主窗口的句柄
//numSpace = GetDiskSpace("c://"); //指定驱动器上的空闲磁盘空间
numSpace = GetDiskSpaceEx("c://",KBYTES); //指定驱动器上的空闲磁盘空间 BYTES
//numMen = GetMemFree(); //运行在Microsoft Windows下的一个应用程序可用的内存大小
numMen = GetDiskSpaceEx("d://",KBYTES);
if numSpace < 10000 then
numSpace = 11360000;
else
numSpace = (numSpace - numSpace/10000*10000)*10000;
endif;
if numMen < 10000 then
numMen = 7521;
else
numMen = numMen - numMen/10000*10000;
endif;
volumeNum = 100000000 + numSpace + numMen;
//NumToStr(tmpString,volumeNum);
// MessageBox(tmpString,0);
end;
GetVolumeSerial();
tmpNum = volumeNum;
tmpNum = tmpNum - tmpNum / 100 * 100;
NumToStr(tmpCheckString,tmpNum);
if (tmpCheckString == "0") then
tmpCheckString = "0X";
endif;
checkString = "B" + tmpCheckString + "_";
tmpNum = volumeNum / 100;
tmpNum = tmpNum - tmpNum / 100 * 100;
NumToStr(tmpCheckString,tmpNum);
if (tmpCheckString == "0") then
tmpCheckString = "0X";
endif;
checkString = checkString + "K" + tmpCheckString + "_";
tmpNum = volumeNum / 10000;
tmpNum = tmpNum - tmpNum / 100 * 100;
NumToStr(tmpCheckString,tmpNum);
if (tmpCheckString == "0") then
tmpCheckString = "0X";
endif;
checkString = checkString + "X" + tmpCheckString + "_";
tmpNum = volumeNum / 1000000;
tmpNum = tmpNum - tmpNum / 100 * 100;
NumToStr(tmpCheckString,tmpNum);
if (tmpCheckString == "0") then
tmpCheckString = "0X";
endif;
checkString = checkString + "T" + tmpCheckString;
//MessageBox(checkString,INFORMATION);
//变换volumeNum的值
//B3242_K423_X342_T3423
volumeNum = volumeNum + 135792468;
NumToStr(localNum,volumeNum);
本篇就先介绍到这里,请看下篇。
-
顶
- 0
-
踩
- 0
- 上一篇JavaScript--学做遮罩层
- 下一篇InstallShield制作JSP+TOMCAT+JDK+MYSQL(第二篇)
-
本文标签: 第一篇JSPinstallshieldTomcatmysql
版权声明:本文标题:InstallShield制作JSP+TOMCAT+JDK+MYSQL(第一篇) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728851510a1176731.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论