【问题标题】:How to install SQL Server 2008 Express with Inno Setup?如何使用 Inno Setup 安装 SQL Server 2008 Express?
【发布时间】:2009-01-18 01:08:19
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你的例子被截断了。完整代码在这里:experts-exchange.com/Programming/Installation/Q_23868626.html
    • 是的,不确定那里发生了什么。它完整的,事实上,链接仍然有效,尽管它们不在编辑框中。这可能是从 SO 丢失的数据。无论如何,我们最终使用了另一种方法,所以我编辑了答案——它做起来非常简单,而且比其他非祝福的解决方案安全得多。我也拒绝为了获得解决方案而必须在您链接的那个网站上注册(并付费)。 SO的模型好多了。
    【解决方案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(); 
      

    其他说明: - 如果在同一个文件夹中找到了 SQL 的安装工具包,那么它将使用它们,如果没有,它们将从 Internet 下载。 - 抱歉格式化,它不起作用。在文本编辑器中复制/粘贴并格式化。它已完成并且正在运行。

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

    【讨论】:

    • AddProduct 在 InnoSetup 中似乎无法识别 - 你有指向其 iss 文件的链接吗?
    • 我认为代码是从这篇文章中提取的。答案并不完整。应该被否决,因为它没有引用原始来源。 codeproject.com/Articles/20868/…
    • @alexandrudicu 如果文件可用怎么办。即不下载
    • 如果在同一文件夹中找到文件“SQLEXPRWT_x64_ENU.exe”,它将在安装时使用。如果没有,它将被下载到当前文件夹然后启动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多