如何使用Inno Setup安装SQL Server 2008 Express?

时间:2009-01-18 01:08:20

标签: inno-setup sql-server-2008-express

任何人都有脚本或程序来安装SQL Server 2008 Express,为应用程序设置数据库并最终安装客户端.NET WinForm应用程序?

2 个答案:

答案 0 :(得分:3)

在我依赖第三方产品(SQL Server Express)的情况下,我倾向于使用命令行驱动的安装(直接在cmd文件中或从“正确的”安装工具调用)。 This site向您展示了如何从命令行安装Express,然后您可以使用SQL Express utility创建对象。这种方法被微软“祝福”。

有时最简单的解决方案是最好的,即使这意味着让我的产品用户在运行我的安装之前单独安装SQL Express。好吧,无论如何最适合我: - )

答案 1 :(得分: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. 在您的脚本中,只需在[Run]标签中包含脚本,然后在[Code]标签中调用之前创建的脚本,如下所示:

    [Run]
    `#include "scripts\sql2008express.iss"
    [Code]
    sql2008express(); 
    
  3. 其他说明: - 如果SQL的安装工具包在同一文件夹中找到,那么它将使用它们,如果没有,它们将从Internet下载。 - 抱歉格式化,它不起作用。将其复制/粘贴到文本编辑器中并进行格式化。它完整​​且有效。

    我希望这对其他人也有帮助。 :)