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中 如果可以,大家誰告訴我怎麼辦 謝謝