天天看點

InstallShield2008中內建安裝SQLServerExpress2005的方法

1) SQL Server 2005的版本有哪些

如下是關于SQL Server的版本資訊:

NO SQL Server名稱 RTM SP1 SP2 SP3

1 SQL Server 2008 10.00.1600.22

2 SQL Server 2005 9.0.1399 9.0.2047 9.0.3042 9.00.4035

3 SQL Server 2000 8.00.194 8.00.384 8.00.532 8.00.760

4 SQL Server 7.0 7.00.623 7.00.699 7.00.842 7.00.961

關于該版本号在系統資料庫中的位置, 對于SQL Server 2005, 我們可以使用如下的方法來準确的獲得類似上面的表格的版本号資訊:

1) HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/InstalledInstance

該鍵值的内容是所有的已安裝的執行個體的名稱, 類型是REG_MULTI_SZ, 就是一個字元串清單. 枚舉其中的所有的執行個體名, 對每一個執行個體名, 執行如下步驟.

2) HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/Instance Names/SQL

在該鍵值下, 以之前得到的執行個體名為鍵名, 得到一個字元串值, 該字元串就是該執行個體的ID.

3) 用第2步中取得的ID名, 組成如下的系統資料庫路徑:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/ID/MSSQLServer/CurrentVersion

如果第2步中沒有取得ID名, 則直接用執行個體名代入. 取該鍵下面的"CurrentVersion"字元串, 即可得到指定執行個體的版本号.

2) 如何在InstallShield中包含SQL Server 2005的安裝包

有兩種方法可以将SQL Server的安裝包包含進來:

1) 将安裝檔案打包到安裝包的壓縮文檔中

2) 直接将安裝檔案放到安裝包的Disk1目錄下

第一種封裝性更好一些, 不過加大了安裝包啟動時的解壓縮時間.

步驟為:

1) 打開InstallShield 2008并載入工程檔案

2) 在"Installation Designer"視圖, 定位到"Behavior and Logic" -> "Support Files/Billboards" -> "Support Files" -> "Language Independent". 在右側的檔案清單中添加SQL Server的安裝檔案.

3) SQL Server 2005的安裝包的指令行安裝的式樣是什麼

SQL Server 2005允許無人值守的安裝方式, 隻要事先在配置檔案中寫好相應的内容即可:

[Options]

ADDLOCAL=SQL_Engine

INSTANCENAME=MyInstanceName

DISABLENETWORKPROTOCOLS=2

SECURITYMODE=SQL

将以上内容儲存到如"sqlinstall.ini"檔案中, 并與SQL Server的安裝包一樣放置到2)中所述的位置, 安裝的時候通過如下的指令行, 将該配置檔案傳遞給安裝程式:

例如: SUPPORTDIR+SQLEXPR.exe "/q /qn /settings SUPPORTDIR+sqlinstall.ini";

其中, "SQLEXPR.exe"就是SQL Server 2005 Express SP2的安裝包, "SUPPORTDIR"是InstallShield的宏, 即InstallShield的解壓目錄.

4) InstallShield中如何編寫安裝腳本

如下安裝SQL Server時的腳本代碼, 供參考.

// 構造安裝指令行所要用到的一些變量

szPath = SUPPORTDIR;

LongPathToShortPath( szPath );

szApplication = szPath ^ SQL_INSTALL_EXE_FILEPATH;

szCommand = "/q /qn /settings " + szPath ^ SQL_INSTALL_INI;

szCommand = szCommand + " SAPWD=" + g_szSapwd;

// 顯示"等待安裝..."的提示資訊

SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, TRUE );

LaunchApplicationInit();

nResult = LaunchAppAndWait(szApplication, szCommand, WAIT);

if ( nResult < 0 ) then

// 安裝程式運作失敗,如果安裝失敗, 則提示使用者是否需要顯示SQL Server的Log檔案. 該Log檔案是由SQL Server安裝程式生成的

SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, FALSE );

// 詢問是否打開Log檔案

nResult = PmAskYesNo( szStringListOut, "", SEVERE );

if ( nResult = YES ) then

LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );

endif;

return FALSE;

endif;

SdShowMsg( @LOC_AR_INSTALLING_SQL_SERVER, FALSE ); // 關閉提示對話框

if (LAAW_PARAMETERS.nLaunchResult = 0) then

// 檢查是否成功安裝

if (ElExistInstance2(g_szInstance) != g_szInstance) then

// 詢問是否打開Log檔案

nResult = PmAskYesNo( szStringListOut, "", SEVERE );

if ( nResult = YES ) then

LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );

endif;

return FALSE;

else // 如果安裝成功則建立資料庫

if ( FALSE = CreateDB() ) then

PmMessageBox( "Create Database Failed!", "", SEVERE );

return FALSE;

endif;

endif;

else

nResult = PmAskYesNo( szStringListOut, "", SEVERE );

if ( nResult = YES ) then

LaunchAppAndWait( "notepad.exe", SQL2005LOG, NOWAIT );

endif;

return FALSE;

endif;