欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

InstallShield制作安裝程序例子

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

本文主要是打包JSP+TOMCAT+JDK+MYSQL。


首先下載InstallShield軟件,現(xiàn)在版本很多,但是腳本代碼幾乎差不多的。


其次下載Tomcat綠色版,MYSQL綠色版,把安裝過的JDK拷貝一份。


再次把數(shù)據(jù)庫文件放到MYSQL目錄下,把項目放到TOMCAT下。


一切準(zhǔn)備就緒,我們就開始了。。。。


1.設(shè)置安裝語言,在選擇項目后,如果選擇的多種安裝語言,則安裝程序運(yùn)行時首先讓選擇安裝語言,此處不需我們寫腳本。如果只有一種語言則安裝時不彈出選擇語言對話框。


2.設(shè)置啟動畫面,只需要把默認(rèn)的圖片更換即可,不過圖片名稱不能改變。


3.如何判斷操作系統(tǒng),代碼如下:



Function OnBegin()
Begin
if ( !SYSINFO.bIntel) then
szMsg = "提示:該軟件只能運(yùn)行在Intel系列的處理器上!/n/n安裝程序?qū)⒔K止";
MessageBox(szMsg, SEVERE);
abort;
endif;
if (SYSINFO.WIN9X.bWinMe || 
SYSINFO.WINNT.bWinNT || 
SYSINFO.WINNT.bWinNT4 || 
SYSINFO.WINNT.bWin2000) then
szMsg = "提示:該軟件只能運(yùn)行在WIN9X系統(tǒng)上才能確保程序的正常工作!/n/n是否繼續(xù)安裝?";
if ( !AskYesNo (szMsg, NO)) then 
abort;
endif;
endif;
end 


4.操作系統(tǒng)內(nèi)存容量判斷



if (GetSystemInfo (EXTENDEDMEMORY, nvFreeMem, svResult) < 0) then
 MessageBox ("內(nèi)存檢測失敗,安裝程序?qū)⒔K止!.", SEVERE);
 abort;
endif;
if ( nvFreeMem < 16384 ) then 
szMsg = "該軟件只能安裝在16M以上內(nèi)存的機(jī)器中。/n很遺憾,本機(jī)器可用內(nèi)存不足16M!/n/n安裝程序?qū)⒔K止!"; 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://"); //指定驅(qū)動器上的空閑磁盤空間   
     numSpace = GetDiskSpaceEx("c://",KBYTES); //指定驅(qū)動器上的空閑磁盤空間        BYTES   
     //numMen = GetMemFree();  //運(yùn)行在Microsoft Windows下的一個應(yīng)用程序可用的內(nèi)存大小      
     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.安裝協(xié)議對話框代碼(其中l(wèi)icense.txt是安裝協(xié)議內(nèi)容)



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


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


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



Dlg_SdShowInfoList:        
    szTitle = "系統(tǒng)本地編號";  
    szMsg    = "將下面的本地編號發(fā)送給權(quán)限授予機(jī)構(gòu),在接收到相應(yīng)的注冊碼后,您將進(jìn)行繼續(xù)注冊!";       
    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系統(tǒng)";
    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.復(fù)制文件,并且顯示用戶的配置信息,顯示文件復(fù)制進(jìn)度條


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


Dlg_SdStartCopy:    
    szTitle = "xx系統(tǒng)";  
    szMsg   = "安裝信息準(zhǔn)備完畢,并且獲得安裝權(quán)限,下一步將進(jìn)行文件拷貝。";
    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服務(wù)器


修改my.ini文件



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


安裝MYSQL服務(wù)



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


啟動MYSQL服務(wù)



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


配置JAVA和TOMCAT環(huán)境變量,并且啟動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);


創(chuàng)建開始菜單快捷方式,創(chuàng)建桌面快捷方式,創(chuàng)建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 ("安裝程序在進(jìn)行桌面上添加快捷方式失敗,稍侯請自己添加!.", 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 ("桌面快捷方式創(chuàng)建失??!",SEVERE);
   endif; 


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


卸載應(yīng)用程序:關(guān)閉TOMCAT,關(guān)閉MYSQL。刪除注冊表,刪除環(huán)境變量,刪除快捷方式。

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 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved