【问题标题】:Silent Install of SQL Server Express 2012 from Inno Setup从 Inno Setup 静默安装 SQL Server Express 2012
【发布时间】:2013-10-18 12:41:57
【问题描述】:

我正在尝试通过使用 Inno Setup 创建的应用程序安装程序静默安装 SQL Server Express 2012。从命令行运行以下命令时,会安装 SQL Server Express 2012,因为我只想显示安装进度,但不允许用户输入任何输入。

有效的命令行命令:

C:\Users\Jason\Desktop>SQLEXPR_x86_ENU.exe /ACTION=Install /INSTANCENAME=MYINSTANCE /INSTANCEID=MYINSTANCE /QS /HIDECONSOLE /INDICATEPROGRESS="False" /IAcceptSQLServerLicenseTerms /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSYSADMINACCOUNTS="builtin\administrators" /SKIPRULES="RebootRequiredCheck"

为了从我的 Inno Setup 脚本中执行此操作,我有以下代码:

Exec(installName,
  '/ACTION=Install /INSTANCENAME=MYINSTANCE /INSTANCEID=MYINSTANCE /QS /HIDECONSOLE /INDICATEPROGRESS="False" /IAcceptSQLServerLicenseTerms /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSYSADMINACCOUNTS="builtin\administrators" /SKIPRULES="RebootRequiredCheck"',
  '',
  SW_SHOW,
  ewWaitUntilTerminated,
  ResultCode);

在哪里installName = SQLEXPR_x86_ENU.exe

从安装程序运行时,SQL Server Express 2012 安装程序会启动,但在第一个信息对话框之后,它会显示 SQL Server 安装中心窗口,并且用户必须在安装程序继续之前选择安装类型。他们还必须同意直接从命令行运行时不需要的许可协议。

关于如何从 Inno Setup 静默运行安装程序的任何想法?

【问题讨论】:

  • 如果你使用相同的参数,在命令行运行和从 Inno 运行应该没有任何区别。可能会让您在使用 SQL Server 时遇到麻烦的一件事是 from 安装它的位置 - 特别是,{tmp} 文件夹有时是一个足够长的路径名,安装将失败,因为添加到此的 SQL Server 自己的子文件夹将打破最大路径长度限制。如果您在 Inno 中与在其外部执行的位置相同的位置运行安装,请查看它是如何进行的。
  • 我尝试从相同的位置运行,但结果相同。安装程序运行正常,但从 Inno Setup 运行时仍需要用户输入。
  • 我正在使用以下命令行,它对我来说工作正常:/QS /IACCEPTSQLSERVERLICENSETERMS /HIDECONSOLE /ENU /InstanceName="MyInstance" /UpdateEnabled=False /Action=Install /Features=SQL /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSVCSTARTUPTYPE=Automatic /BROWSERSVCSTARTUPTYPE=Automatic
  • 从命令行我可以静默启动 SQL Server Express 安装程序,但是当从 Inno Setup 执行相同的命令时,它仍然会提示用户。我添加了原始示例中缺少的“/FEATURES=SQLENGINE”,但它仍然需要用户输入。
  • 许可证接受的东西必须大写,即 /IACCEPTSQLSERVERLICENSETERMS

标签: sql-server-2012 installation inno-setup sql-server-2012-express


【解决方案1】:

从“BUILTIN\Administrators”更改为“BUILTIN\Users”就可以了。

【讨论】:

  • 我将此标记为答案,因为它确实实现了安装程序在静默模式下运行的结果。但是,如果我理解正确,这意味着所有用户,无论他们是否是管理员,都将拥有 SQL Server Express 数据库实例的系统管理员权限。这是正确的吗?
【解决方案2】:

问题可能在于将命令行参数传递给SQLEXPR_x86_ENU.exe 如果您使用命令行运行提取的 SQL setup.exe,一切都应该没问题。但是,如果您通过SQLEXPR_x86_ENU.exe 传递命令行,它首先提取安装程序,然后使用修改后的命令行运行它 - 删除一对引号""(或者更确切地说,它仅将第一个字符串作为参数传递)。这就是为什么setup.exe 的整个命令行参数应该放在额外的引号"" 中的原因 您的命令行应如下所示(以'" 开头,以"' 结尾):

'"/ACTION=Install /INSTANCENAME=MYINSTANCE /INSTANCEID=MYINSTANCE /QS /HIDECONSOLE /INDICATEPROGRESS="False" /IAcceptSQLServerLicenseTerms /SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSYSADMINACCOUNTS="builtin\administrators" /SKIPRULES="RebootRequiredCheck""'

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多