InstallShield SQL 數據庫安裝

function OnFirstUIAfter()
    STRING szTitle
, szMsg1, szMsg2, szOpt1, szOpt2;
    NUMBER bvOpt1, bvOpt2;
    NUMBER bShowUpdateServiceDlg;
    STRING szWaitText;
    STRING szServiceName;
    NUMBER svServiceState;
    STRING szMsde2000, szCmdLine,szStartServiceArgs;
begin
    // 如果安裝程序以“維護”模式啓動
    if (MAINTENANCE) then
        goto EndProcess
;
    endif;

    // 檢查系統是否安裝了 MSDE 
2000 SP4
    szWaitText 
= "正在檢查系統是否安裝了 MSDE2000 SP4 …….";
    SdShowMsg( szWaitText, TRUE);    
    
    szServiceName 
= "MSSQLSERVER";
    if(ServiceGetServiceState(szServiceName, svServiceState) < ISERR_SUCCESS) then
        // 沒有安裝 MSDE,轉安裝處理
        goto InstallMSDE
;    
    endif;
    goto StartMSDE; 
    
InstallMSDE:  // 安裝數據庫服務  
    szWaitText 
= "正在安裝 MSDE2000 SP4。這個過程需要幾分鐘,請稍等";
    SdShowMsg(szWaitText, TRUE); 
    
    szMsde2000 
= SRCDIR ^ "MSDE" ^ "setup.exe";
    // 將 MSDE 2000 SP4 安裝到系統 Program File 目錄下
    szCmdLine 
= "TARGETDIR="" + PROGRAMFILES + "" /q";
    if(LaunchAppAndWait(szMsde2000, szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_MAXIMIZED) < 0 ) then
        MessageBox (
"安裝 MSDE2000 SP4 失敗,請聯繫系統管理員!", SEVERE);
        goto EndProcess;
    endif;

StartMSDE: // 啓動 MSDE2000 服務
    szWaitText 
= "正在啓動 MSDE2000 SP4 …….";
    SdShowMsg( szWaitText, TRUE);    
   
    // 安裝了 MSDE 
2000, 試着啓動服務
    szStartServiceArgs 
= "";    
    if(svServiceState != SERVICE_RUNNING) then
        if (ServiceStartService (szServiceName
, szStartServiceArgs) < ISERR_SUCCESS ) then
            MessageBox (
"啓動服務" + szServiceName + "出錯。", SEVERE);
            goto EndProcess;
        endif;        
    endif;

    // 加載用戶數據庫
    szWaitText 
= "正在創建所需數據庫.";
    SdShowMsg(szWaitText, TRUE);
    Delay(2); 
    
    // 先試着分離先前已經加載的數據庫
    szCmdLine 
= "-E -Q "exec exec sp_detach_db GEChargeLicence "";
    if(LaunchAppAndWait("osql.exe ", szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0) then 
        MessageBox (
"分離原來的數據庫失敗!請確認系統中已安裝 MSDE 2000 SP4 並且服務已啓動。如問題仍無法解決,請與聯繫統管理員聯繫!", SEVERE); 
    endif; 
    
    // 將數據文件複製到程序安裝目錄
    CreateDir( TARGETDIR ^ 
"Data");
    CopyFile( SRCDIR ^ "Data" ^ "GEChargeLicence.mdf", TARGETDIR ^ "Data" ^ "GEChargeLicence.mdf");
    CopyFile( SRCDIR ^ "Data" ^ "GEChargeLicence.ldf", TARGETDIR ^ "Data" ^ "GEChargeLicence.ldf");    
    
    // 附加數據庫    
    szCmdLine 
= "-E -Q "exec sp_attach_db 'GEChargeLicence', '"+  TARGETDIR ^ "Data" ^ "GEChargeLicence.mdf', '" +  TARGETDIR ^ "Data" ^ "GEChargeLicence.ldf' ""; 
    if (LaunchAppAndWait("osql.exe ", szCmdLine, LAAW_OPTION_WAIT|LAAW_OPTION_HIDDEN) < 0) then 
          MessageBox (
"數據庫創建失敗!請確認系統中已安裝 MSDE 2000 SP4 並且服務已啓動。如問題仍無法解決,請與聯繫統管理員聯繫!", SEVERE); 
    endif;
    
    SdShowMsg(szWaitText
, FALSE);     
    
EndProcess:    
    
    // 以下代碼是系統自動插入的
    ShowObjWizardPages(NEXT)
;
    
    szTitle 
= "";
    szMsg1 = ""; 
    szMsg2 = "";
    szOpt1 = "";
    szOpt2 = "";
    bvOpt1   = FALSE;
    bvOpt2   = FALSE;    

    // Set this to true if you have the update service enabled
, and if you want to check for updates.
    // Note: the ISUS Starter Edition does not support checking for updates programatically.  So
, 
    // only set this to true if you have at least the ISUS Professional Edition.
    bShowUpdateServiceDlg 
= FALSE;
    
    //{{IS_SCRIPT_TAG(Dlg_SdDinishEx)    
    
    if ( BATCH_INSTALL ) then
        SdFinishReboot ( szTitle 
, szMsg1 , SYS_BOOTMACHINE , szMsg2 , 0 );
    else
        
        // If the update service is enabled
, show finish dialog that includes
        // update check option.
        if( bShowUpdateServiceDlg && ( ENABLED_ISERVICES & SERVICE_ISUPDATE ) ) then

            if( SdFinishUpdateEx( szTitle
, szMsg1, szMsg2, szOpt1, szOpt2, TRUE ) ) then

                // Don't check for updates in silent mode.
                if( MODE !
= SILENTMODE ) then
                    UpdateServiceCheckForUpdates( 
"", FALSE );
                endif;

            endif
;

        else
            SdFinish ( szTitle 
, szMsg1 , szMsg2 , szOpt1 , szOpt2 , bvOpt1 , bvOpt2 );
        endif;

    endif
;
    //}}IS_SCRIPT_TAG(Dlg_SdDinishEx)    
end
; 

 按F7 製作安裝影像。生成的安裝影像文件位於 [盤符:]/InstallShield Express Projects/[安裝項目名稱]/Media/cdrom/Disk Images/Disk1
5、向影像中添加 MSDE 2000 SP4 的安裝文件。
請先參照 MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分發 MSDE 2000 SP4》的說明。
打開文件夾 [盤符:]/InstallShield Express Projects/[安裝項目名稱]/Media/cdrom/Disk Images/Disk1, 然後創建兩個子文件 MSDE  和 Data 。
            [盤符:]/InstallShield Express Projects/[安裝項目名稱]/Media/cdrom/Disk Images/Disk1/MSDE    用於存放 MSDE 2000 SP4  安裝文件;
            [盤符:]/InstallShield Express Projects/[安裝項目名稱]/Media/cdrom/Disk Images/Disk1/Data   用於存放你要安裝的數據庫文件;
說明:MSDE 2000 ReadmeSql2k32desksp4.htm 中《4.1 再分發 MSDE 2000 SP4》中的說明並太確切。實際上,爲了讓 MSDE 2000 SP4 的Setup.exe 正確運行,還需要將所下載並解壓 MSDE 2000 SP4 中 *.dll  和 *.rll 複製到 [盤符:]/InstallShield Express Projects/[安裝項目名稱]/Media/cdrom/Disk Images/Disk1/MSDE  中。

 

注意:這個檢測腳本好象不能用在WebProject中 如果可以,大家誰告訴我怎麼辦 謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章