如何使用Inno安装程序安装SQL Server 2008 Express?
问题描述:
任何人都有脚本或过程来安装SQL Server 2008 Express,为应用程序设置数据库并最终安装客户端.NET WinForm应用程序?如何使用Inno安装程序安装SQL Server 2008 Express?
答
在这种我依赖第三方产品(SQL Server Express)的情况下,我倾向于使用命令行驱动安装(直接在cmd文件中或从“正确的”安装工具调用) 。 This site向您展示了如何从命令行安装Express,然后您可以使用SQL Express utility来创建对象。这种方法是由微软'祝福'。
有时最简单的解决方案是最好的,即使这意味着让我的产品的用户在运行我的安装之前单独安装SQL Express。那么,无论如何,对我来说最好:-)
答
以下脚本将检查SQL Server 2008 R2的完整版本。如果已安装完整版本,则会跳过安装SQL Server。如果未安装完整版本,则会检查SQL Express版本。如果它已经安装,它将跳过安装。如果未安装,则将安装SQL Express 2008 R2。
-
创建一个新脚本。让我们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;
-
在你的脚本然后就包括脚本命名为我n此[运行]标签,并调用先前创建的脚本在[code]标签象下面这样:
[Run] `#include "scripts\sql2008express.iss" [Code] sql2008express();
其他说明: - 如果在同一个文件夹中找到了SQL的安装包,然后它会使用它们,如果没有,他们会从互联网上下载。 - 抱歉格式化,它不起作用。复制/粘贴到文本编辑器并进行格式化。它是完整的和工作的。
我希望这也能帮助别人。 :)
我将标记innosetup更改为inno-setup以增加您的答案机会。 – mghie 2009-02-09 05:07:51