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

http://blog.csdn.net/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值