狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

InstallShield制作安裝程序例子

admin
2013年1月17日 2:42 本文熱度 4873

本文主要是打包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);


1.安裝協議對話框代碼(其中license.txt是安裝協議內容)



Dlg_Start:  
    // beginning of dialogs label  
Dlg_SdWelcome:  
    szTitle = "xx系統";  
    szMsg   = "安裝程序即將在本機上安裝xx系統,確定是否繼續安裝?繼續請按【下一步(next)】";  
    nResult = SdWelcome( szTitle, szMsg );  
    if (nResult = BACK) goto Dlg_Start;  


Dlg_SdLicense:    
    szLicenseFile = SUPPORTDIR ^ "license.txt";
    szTitle    = "xx系統";
    szMsg      = "";
    szQuestion = "您是否接受該協議?接受請按【是(Yes)】。繼續安裝必須接受該協議。";
    nResult    = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile );
    if (nResult = BACK) goto Dlg_SdWelcome;


2.用戶信息對話框(其中序列號checkString是上篇中,安裝程序根據磁盤序列及我們設置的編碼規則生成的字符串)



Dlg_SdShowInfoList:        
    szTitle = "系統本地編號";  
    szMsg    = "將下面的本地編號發送給權限授予機構,在接收到相應的注冊碼后,您將進行繼續注冊!";       
    szField1 = "編號";  
    svEdit1 = localNum;    
    nResult = SdShowDlgEdit1(szTitle, szMsg,szField1, svEdit1);          
    if (nResult = BACK) goto Dlg_SdWelcome;  
Dlg_SdRegisterUserEx:  
    szMsg   = "";  
    szTitle = "";        
    nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );  
    if (nResult = BACK) goto Dlg_SdShowInfoList;  
    if (szSerial != checkString)  then       
        MessageBox( "錯誤!", SEVERE);  
       goto Dlg_SdRegisterUserEx;      
    endif;   
ListDestroy( list );
if (nResult = BACK) goto Dlg_SdLicense;


3.選擇安裝路徑(包括判斷磁盤容量)



Dlg_SdAskDestPath:
    szTitle = "";
    szMsg   = "";
    svTemp = szDir;
    nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
    if ( svTemp != szDir) then 
  szDir = szDir^@COMPANY_NAME ^@PRODUCT_NAME;
 endif;
 TARGETDIR = szDir;
 GetDisk (szDir, svDrive);
 lFreeSpace = GetDiskSpace (svDrive);
 if (lFreeSpace < 209715200) then 
 MessageBox("警告:安裝路徑所在的磁盤空間不足200M!請重新選擇!",SEVERE);
 goto Dlg_SdAskDestPath;
 endif;
    if (nResult = BACK) goto Dlg_SdRegisterUserEx;


4.安裝類型對話框



Dlg_SetupType:          
    szTitle    = "xx系統";
    szMsg      = "";
    nResult = SetupType ( szTitle , szMsg , "" , nSetupType , 0 );
    if (nResult = BACK) then
        //goto Dlg_SdAskDestPath;
        goto Dlg_SdRegisterUserEx
    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;


1.復制文件,并且顯示用戶的配置信息,顯示文件復制進度條


Dlg_ObjDialogs:
    nResult = ShowObjWizardPages(nResult);
    if (nResult = BACK) goto Dlg_SdComponentTree;


Dlg_SdStartCopy:    
    szTitle = "xx系統";  
    szMsg   = "安裝信息準備完畢,并且獲得安裝權限,下一步將進行文件拷貝。";
    listStartCopy = ListCreate( STRINGLIST ); 


    ListAddString(listStartCopy,"客戶信息:",AFTER);
 ListAddString(listStartCopy,"用戶名:" + szName,AFTER);
 ListAddString(listStartCopy,"用戶單位:" + szCompany,AFTER);
 ListAddString(listStartCopy,"",AFTER);
 ListAddString(listStartCopy,"程序安裝路徑:" + szDir,AFTER);
 ListAddString(listStartCopy,"",AFTER);
 //ListAddString(listStartCopy,"程序文件夾:" + szfolder,AFTER);
 ListAddString(listStartCopy,"",AFTER);
 
 switch (nSetupType)
 case TYPICAL : ListAddString(listStartCopy,"安裝類型:典型安裝",AFTER);
 case COMPACT: ListAddString(listStartCopy,"安裝類型:壓縮安裝",AFTER);
 case CUSTOM: ListAddString(listStartCopy,"安裝類型:自定義安裝",AFTER);
 endswitch; 

    nResult = SdStartCopy( szTitle, szMsg, listStartCopy ); 
    ListDestroy(listStartCopy);       
    if (nResult = BACK) goto Dlg_ObjDialogs;   

    SetStatusWindow(0, "");
    Enable(STATUSEX);
    StatusUpdate(ON, 100); 


    return 0;
end;



配置MYSQL服務器


修改my.ini文件



[mysqld]
# 設置mysql的安裝目錄
basedir=$MYSQL_HOME
# 設置mysql數據庫的數據的存放目錄,必須是data,或者是//xxx/data
datadir=$MYSQL_HOME/data
# 設置mysql服務器的字符集
default-character-set=utf8
 
[client]
# 設置mysql客戶端的字符集
default-character-set=gbk


安裝MYSQL服務



LaunchAppAndWait(TARGETDIR+"http://MYSQL//bin//mysqld.exe","--install MySQL --defaults-file=:/Dev/mysql-5.0.45/my.ini",WAIT);


啟動MYSQL服務



LaunchAppAndWait ("net","start mysql",WAIT );


配置JAVA和TOMCAT環境變量,并且啟動TOMCAT

catalina_home=TARGETDIR + "http://apache-tomcat-5.5.12";  
   java_home=TARGETDIR + "http://jdk1.5.0_05";     
   szKey="Environment";  
   RegDBSetDefaultRoot(HKEY_CURRENT_USER);     
   RegDBSetKeyValueEx(szKey,"JAVA_HOME",REGDB_STRING,java_home,-1);  
   RegDBSetKeyValueEx(szKey,"CATALINA_HOME",REGDB_STRING,catalina_home,-1);  
   szEnv = "Environment";  
   pEnv = &szEnv;  
   SendMessage (0xffff, 0x001A , 0, pEnv );


啟動TOMCAT



LaunchAppAndWait(TARGETDIR+"http://apache-tomcat-5.5.12//bin//startup.bat","",WAIT);


創建開始菜單快捷方式,創建桌面快捷方式,創建URL快捷方式,打開瀏覽器

szFolderName = FOLDER_STARTMENU;
  CreateProgramFolder(szFolderName);   
  szCommandLine = TARGETDIR ^ "apache-tomcat-5.5.12//bin//startup.bat";
  szCommandLine = "/"" + szCommandLine + "/"";
  szFolderName = "xx//xx.exe";
  AddFolderIcon(FOLDER_PROGRAMS, szFolderName, szCommandLine, TARGETDIR, "", 0, "", REPLACE);


szCommandLine = TARGETDIR ^ "apache-tomcat-5.5.12//bin//startup.bat";
  szCommandLine = "/"" + szCommandLine + "/"";
  szFolderName = "xx";
  if (AddFolderIcon (FOLDER_DESKTOP, szFolderName, szCommandLine, TARGETDIR,
  "", 0, "", REPLACE) < 0) then
  MessageBox ("安裝程序在進行桌面上添加快捷方式失敗,稍侯請自己添加!.", SEVERE);
  endif;


OpenFileMode (FILE_MODE_APPEND);
   if(CreateFile (nvFileHandle, FOLDER_DESKTOP, "xx.url")>=0) then;
    WriteLine (nvFileHandle, "[InternetShortcut]");
    WriteLine (nvFileHandle, "URL=http://LocalHost:8080/index.jsp");
    WriteLine (nvFileHandle, "IconFile=" + TARGETDIR ^ "images//icon.ico");
    WriteLine (nvFileHandle, "IconIndex=0");
    CloseFile (nvFileHandle);
   else
     MessageBox ("桌面快捷方式創建失敗!",SEVERE);
   endif; 


szCmdLine = "http://LocalHost:8080/index.jsp";
   if (LaunchApp(PROGRAMFILES ^"Internet Explorer"^"IEXPLORE.EXE", szCmdLine) < 0) then
   MessageBox ("不能打開瀏覽器.",SEVERE);
   endif;


卸載應用程序:關閉TOMCAT,關閉MYSQL。刪除注冊表,刪除環境變量,刪除快捷方式。

LaunchAppAndWait("net","stop mysql",WAIT);
    LaunchAppAndWait(TARGETDIR+"http://apache-tomcat-5.5.12//bin//shutdown.bat","",WAIT);
    LaunchAppAndWait(TARGETDIR+"http://MYSQL//bin//mysqld.exe","--remove MySQL",WAIT);  
   
    RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);   
    szSubKey = "CATALINA_HOME";  
    szValue = TARGETDIR + "http://apache-tomcat-5.5.12";    
    RegDBDeleteValue(szSubKey,szValue);
    szSubKey = "JAVA_HOME";  
    szValue = TARGETDIR + "http://jdk1.5.0_05";    
    RegDBDeleteValue(szSubKey,szValue);
    
    DeleteFolderIcon (FOLDER_PROGRAMS,"xx");
    DeleteFolderIcon (FOLDER_PROGRAMS,"xx");
    DeleteFolderIcon (FOLDER_DESKTOP,"xx") ;


該文章在 2013/1/17 2:42:06 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved