InstallShield制作JSP+TOMCAT+JDK+MYSQL(第一篇)

 工作之余没事情做,研究了一下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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值