2009-01-18 209 views

回答

3

在這種我依賴第三方產品(SQL Server Express)的情況下,我傾向於使用命令行驅動安裝(直接在cmd文件中或從「正確的」安裝工具調用) 。 This site向您展示瞭如何從命令行安裝Express,然後您可以使用SQL Express utility來創建對象。這種方法是由微軟'祝福'。

有時最簡單的解決方案是最好的,即使這意味着讓我的產品的用戶在運行我的安裝之前單獨安裝SQL Express。那麼,無論如何,對我來說最好:-)

+0

您的示例被截斷。完整的代碼在這裏: http://www.experts-exchange.com/Programming/Installation/Q_23868626.html – dcraggs 2009-11-11 12:51:35

+0

是的,不知道那裏發生了什麼。它*是*完整的,實際上,鏈接仍然有效,儘管它們不在編輯框中。這可能會丟失SO的數據。無論如何,我們最終使用了其他方法,所以我編輯了答案 - 這非常簡單,比其他非祝福解決方案更安全。我也拒絕爲了獲得解決方案而必須註冊該網站(並付款)。 SO的模型好得多。 – paxdiablo 2009-11-11 13:24:07

2

以下腳本將檢查SQL Server 2008 R2的完整版本。如果已安裝完整版本,則會跳過安裝SQL Server。如果未安裝完整版本,則會檢查SQL Express版本。如果它已經安裝,它將跳過安裝。如果未安裝,則將安裝SQL Express 2008 R2。

  1. 創建一個新腳本。讓我們sql2008express.iss,內容如下

    [CustomMessages] 
    
    sql2008r2expressx86_title=Microsoft SQL Server 2008 R2 Express Edition x86 (Including Tools) 
    sql2008r2expressx64_title=Microsoft SQL Server 2008 R2 Express Edition x64 (Including Tools) 
    
    sql2008r2expressx86_size=235.5 MB 
    sql2008r2expressx64_size=247.5 MB 
    
    [Code] 
    
    const 
    sql2008r2expressx86_url='http://download.microsoft.com/download/5/5/8/558522E0-2150-47E2-8F52-FF4D9C3645DF/SQLEXPRWT_x86_ENU.exe'; 
    sql2008r2expressx64_url='http://download.microsoft.com/download/5/5/8/558522E0-2150-47E2-8F52-FF4D9C3645DF/SQLEXPRWT_x64_ENU.exe'; 
    
    procedure sql2008express(); 
    
    var 
    version: string; 
    
    begin 
    // Check if the full version fo the SQL Server 2008 R2 is installed 
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', version); 
    if (version < '10.5') or (version = '') then begin 
    // If the full version is not found then check for the Express edition 
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion', 'CurrentVersion', version); 
    if (version < '10.5') (*or (version > '9.00') or (version = '') *) then begin 
    if isX64() then 
        AddProduct('SQLEXPRWT_x64_ENU.exe', '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=SQL,AS,RS,IS,Tools /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="builtin\Administrators" /INDICATEPROGRESS /TCPENABLED=1 /BROWSERSVCSTARTUPTYPE=Automatic /ERRORREPORTING=0 /SQMREPORTING=0 /SECURITYMODE=SQL /SAPWD=1234', CustomMessage('sql2008r2expressx64_title'), CustomMessage('sql2008r2expressx64_size'), sql2008r2expressx64_url,false,false) 
    else 
    AddProduct('SQLEXPRWT_x86_ENU.exe', '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=Install /FEATURES=SQL,AS,RS,IS,Tools /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="builtin\Administrators" /INDICATEPROGRESS /TCPENABLED=1 /BROWSERSVCSTARTUPTYPE=Automatic /ERRORREPORTING=0 /SQMREPORTING=0 /SECURITYMODE=SQL /SAPWD=1234', CustomMessage('sql2008r2expressx86_title'), CustomMessage('sql2008r2expressx86_size'), sql2008r2expressx86_url,false,false); 
         end; 
        end; 
    end; 
    
  2. 在你的腳本然後就包括腳本命名爲我n此[運行]標籤,並調用先前創建的腳本在[code]標籤象下面這樣:

    [Run] 
    `#include "scripts\sql2008express.iss" 
    [Code] 
    sql2008express(); 
    

其他說明: - 如果在同一個文件夾中找到了SQL的安裝包,然後它會使用它們,如果沒有,他們會從互聯網上下載。 - 抱歉格式化,它不起作用。複製/粘貼到文本編輯器並進行格式化。它是完整的和工作的。

我希望這也能幫助別人。 :)

相關問題