我在部署项目的时候,需要用批处理无人值守安装SQLserver,.Net等组件。
于是查了微软官方文档,其中一项内容如下:
http://msdn.microsoft.com/zh-cn/library/ms144259.aspx
SQL Server 安装程序控件 |
/IACCEPTSQLSERVERLICENSETERMS 仅在为无人参与安装指定了 /Q 或 /QS 参数时是必需的。 |
必需,用于确认接受许可条款。 |
请注意,此项提示将“无人参与安装指定了 /Q 或 /QS 参数时是必需的”重点标识了。。
并且,给出了一个示例,内容如下:
安装新的具有 SQL Server 数据库引擎、复制和全文搜索组件的独立实例。
Setup.exe
/q /ACTION=Install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER
/SQLSVCACCOUNT="<DomainName\UserName>"
/SQLSVCPASSWORD="<StrongPassword>"
/SQLSYSADMINACCOUNTS="<DomainName\UserName>" /AGTSVCACCOUNT="NT
AUTHORITY\Network Service" /IACCEPTSQLSERVERLICENSETERMS
在我多次安装均出错的情况下,先解压了安装包,再进行命令行下手工尝试,得到错误为“无法识别指定的设置“IACCEPTSQLSERVERLICENSETERMS”。”
我尝试删除了 /IACCEPTSQLSERVERLICENSETERMS 参数。出人意料的竟然成功了。。
这,这简直就是坑爹啊!!!
下面给出一个我写的批处理,希望给有相同需求的朋友一些提示或帮助。
@echo off
for /f "delims=[] tokens=2" %%i in ('ver') do set MyVer=%%i
for /f "tokens=2" %%i in ('echo %MyVer%') do set MyVer=%%i
for /f "tokens=1,2,3 delims=. " %%i in ( 'echo %MyVer% ') do (
set MajorVer=%%i
set MinorVer=%%j
set BuildNum=%%k
)
set MajorVer= %MajorVer%.%MinorVer%
if /I %MajorVer% == 5.1 (
echo "Windows XP"
)
if /I %MajorVer% == 5.2 (
echo "Windows 2003"
)
if /I %MajorVer% == 6.0 (
echo "Windows Vista"
)
if /I %MajorVer% == 6.1 (
echo "Windows 7"
)
:XP
set INSTALLER45="WindowsInstaller4_5\WindowsXP-KB942288-v3-x86.exe"
echo 正在安装 Windows Installer4.5...
%INSTALLER45% /quiet /norestart /nobackup /passive
goto STARTSETUP
:2003
set INSTALLER45="WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x86.exe"
echo 正在安装 Windows Installer4.5...
%INSTALLER45% /quiet /norestart /nobackup /passive
goto STARTSETUP
:Vista
set INSTALLER45="WindowsInstaller4_5\Windows6.0-KB958655-v2-x86.MSU"
echo 正在安装 Windows Installer4.5...
%INSTALLER45% /quiet /norestart /nobackup /passive
goto STARTSETUP
:STARTSETUP
set DOTNETFX40="DotNetFX40\dotNetFx40_Full_x86_x64.exe"
set DOTNETFX40ZH="DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe"
set SQL2008="SqlExpress2008\SQLEXPR32_x86_CHS.EXE"
echo 正在安装 dotNetFx40...
%DOTNETFX40% /lang:ENU /norestart /passive
%DOTNETFX40ZH% /norestart /passive
echo 正在安装 SQLserver 2008 Express...
%SQL2008% /qs /ACTION=Install /FEATURES=SQL /INSTANCENAME=SQLEXPRESS /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM" /SQLSYSADMINACCOUNTS="NT AUTHORITY\SYSTEM" /AGTSVCACCOUNT="NT AUTHORITY\Network Service"