0

我正在尝试对 VS 2012 进行完全无人值守的安装。它可以在某些 Windows 安装上不强制重启但在其他安装上不强制重启。这是我正在使用的命令行:

vs_professional.exe /adminfile AdminDeployment.xml /quiet /norestart

我在启动 VS 2012 安装程序之前安装了 .NET 4.5。我对 AdminDeployment.xml 所做的唯一更改是:

<BundleCustomizations TargetDir="default" NoWeb="yes"/>

我们有适用于 Windows 7 桌面的区域特定图像。安装程序可以在我们的北美映像上运行而不会强制重新启动,但是它会在安装 SQL CE 时强制重新启动而不提示我们的 EMEA 映像。以下是 SQL CE 日志中的一些消息:

MSI (s) (E0:70) [18:32:09:942]:产品:Microsoft SQL Server Compact 4.0 SP1 x64 ENU。组件 '{3FA0170E-227C-37C7-BAC0-64691A992C81}' 的程序集 'Microsoft.VC90.CRT,version="9.0.30729.4148",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64",type="win32"'正在使用中。您必须重新启动才能更新程序集。

MSI (s) (E0:70) [18:32:10:911]:产品:Microsoft SQL Server Compact 4.0 SP1 x64 ENU。组件 '{982245D9-F692-3224 -BEC0-C642D74C712F}' 正在使用中。您必须重新启动才能更新程序集。

MSI (s) (E0:70) [18:32:11:036]:产品:Microsoft SQL Server Compact 4.0 SP1 x64 ENU -- 安装操作成功完成。

MSI (s) (E0:70) [18:32:11:051]:Windows Installer 安装了产品。产品名称:Microsoft SQL Server Compact 4.0 SP1 x64 ENU。产品版本:4.0.8876.1。产品语言:1033。制造商:微软公司。安装成功或错误状态:0。

MSI (s) (E0:70) [18:32:11:067]:RebootAction 属性的值为 MSI (s) (E0:70) [18:32:11:067]:Windows 安装程序需要重新启动系统。产品名称:Microsoft SQL Server Compact 4.0 SP1 x64 ENU。产品版本:4.0.8876.1。产品语言:1033。制造商:微软公司。系统重启类型:1. 重启原因:1.

在这种情况下,是什么导致 Windows 忽略该/norestart选项?我已经研究过尝试传递 msiexec 使用的一些参数,例如REBOOT=ReallySuppress[我发现这是一个有趣的选项],但无济于事。

为什么 SQL CE 安装程序会忽略/norestart以及如何修复它?

4

1 回答 1

0

答案(来自 Microsoft)是 SQL CE 安装程序中存在错误。解决方法是安装 SQL CE,然后安装 VS 2012 的其余部分。该缺陷将在 VS 的未来版本中修复。

以下是 SSCERuntime 的示例安装:

<installer path>\packages\SSCE40\SSCERuntime_x64-enu.exe /q /I REBOOT=R /l*v <log file>

以下是MS的回复:

根据我们的日志分析,我们确定了导致重新启动的包:应用执行包:ssceruntime_x64_msi,操作:安装,路径:C:\ProgramData\Package Cache\E33F355F5E83D93099A732E2ECE02E07818B2696\packages\SSCE40\SSCERuntime_x64-enu.exe,参数:'"C :\ProgramData\Package Cache\E33F355F5E83D93099A732E2ECE02E07818B2696\packages\SSCE40\SSCERuntime_x64-enu.exe" /q /i /l*v 导致系统重启的错误如下: MSI (s) (E4:34) [ 10:16:48:964]:产品:Microsoft SQL Server Compact 4.0 SP1 x64 ENU。组件“{9DA4DC8A-9731-3F0E-8BD5-FC17CA6848AD}”的程序集“Microsoft.VC90.CRT,version="9.0.30729.4148",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="x86",type="win32"'正在使用中。您必须重新启动才能更新程序集。这是 VC++ 2008 dll,它显示另一个进程获取了这个 dll 的锁并且不允许更新它。我们发现这是 SSCERuntime 的一个错误,它没有使用 ExitCodes 编写来处理这种情况。我们的产品团队正在努力解决这个问题,并将考虑在 Visual Studio 的下一个版本中解决。目前,解决方法是先安装 ssceruntime.exe,然后在从 AdminDeployment.xml 文件中排除 SQLCE 组件后,使用命令“vs_professional.exe /adminfile AdminDeployment.xml /quiet /norestart”安装 VS2012。我们发现这是 SSCERuntime 的一个错误,它没有使用 ExitCodes 编写来处理这种情况。我们的产品团队正在努力解决这个问题,并将考虑在 Visual Studio 的下一个版本中解决。目前,解决方法是先安装 ssceruntime.exe,然后在从 AdminDeployment.xml 文件中排除 SQLCE 组件后,使用命令“vs_professional.exe /adminfile AdminDeployment.xml /quiet /norestart”安装 VS2012。我们发现这是 SSCERuntime 的一个错误,它没有使用 ExitCodes 编写来处理这种情况。我们的产品团队正在努力解决这个问题,并将考虑在 Visual Studio 的下一个版本中解决。目前,解决方法是先安装 ssceruntime.exe,然后在从 AdminDeployment.xml 文件中排除 SQLCE 组件后,使用命令“vs_professional.exe /adminfile AdminDeployment.xml /quiet /norestart”安装 VS2012。

于 2013-05-24T20:49:39.520 回答