首页 > 代码库 > 先NetFx3,再MUI——Windows Server 2012 R2 with Update 无法安装 .Net

先NetFx3,再MUI——Windows Server 2012 R2 with Update 无法安装 .Net

        Windows Server 2012 R2 with Update 发布已经有段时间了,现在的命名的确挺奇怪的,不叫Service Pack,叫Update,感觉和XBOX的升级或者Windows Phone的升级一样……好吧,那就这样吧。

        以上可以忽略。问题是我打算把自己的Lab环境更新到这个版本,计划来测试XenDesktop 7.6。于是,按照惯例,首先做一个模板,也按照惯例,装好语言包之后,sysprep进行封装。

        生成VM,开始搭环境,创建AD,没有问题。安装SQL数据库……问题来了:SQL安装需要.Net Framewaork 3.5。如你所熟知的,Windows Server 2012开始,安装文件中包含了.Net Framewaork 4.0,对应的,.Net Framework 3.5不再在默认安装镜像(WIM)中包含。

        但这不意味着无法安装.Net Framework 3.5,实际上,在配置管理器中,能够勾选这一选项的。

       image

       是否看到警示?即使勾选功能,实际上是无法进行安装的,会提示缺少源文件。这是由于在安装镜像中,有Metadate(元数据)但是没有安装文件。对应的,安装文件存放在安装介质的 x:\sources\sxs 这个并行文件夹中。因此,你需要指定安装文件位置。

       image

       实际上,除了.Net Framework 3.5,其他的功能包也可以使用这样的方式进行安装。特别的,记得我们可以把不同的镜像整合到一个WIM文件吗?(使用 dism 可以查看install.wim中有不止一个镜像,可以使用index进行选择)如果安装的系统需要其他镜像中的功能包,就可以使用这种方式进行安装,路径可以使用wim开头,即:wim:\x:\sources\install.wim:4,网络路径可以是:wim:\\share\sources\install.wim:4。这里路径可以自定义,4表示index 4,第四个镜像。

       看了这么久,以上都不是重点~~~因为这些内容你可以很容易搜索到。接下来才是有趣的事情。

       按照以前使用过无数次的安装命令行:

       dism /online /enable-feature /featurename:NetFx3 /all /source:x:\sources\sxs /limitaccess

       关于这个命令行,可以参考TechNet文章:

       Deploy .NET Framework 3.5 by using Deployment Image Servicing and Management (DISM)

       http://technet.microsoft.com/en-us/library/dn482069.aspx

       结果,安装报错了~ 0x800f081f,找不到安装源文件~

      imagehttp://support2.microsoft.com/kb/3002547

      这不科学啊……Windows Server 2012 直到 R2 我都是这么干的……今天咋就不行了呢……

      我必须找到原因。

      首先怀疑的是with Update……

      因为查KB,有一篇文章介绍了MS14-046之后的两个补丁,如果没有安装.Net Framework 3.5,由于meatdata的改变,就不再能够“初次”安装。具体描述参考:

      Enabling the Microsoft .NET Framework 3.5 optional Windows feature on Windows 8, Windows Server 2012, Windows 8.1, or Windows Server 2012 R2 may fail after you install security update 2966827 or 2966828

      http://support2.microsoft.com/kb/3002547

      MS14-046: Description of the security update for the .NET Framework 3.5 on Windows 8 and Windows Server 2012: August 12, 2014

      http://support2.microsoft.com/kb/2966827

      MS14-046: Description of the security update for the .NET Framework 3.5 on Windows 8.1 and Windows Server 2012 R2: August 12, 2014

      http://support2.microsoft.com/kb/2966828

      仔细想了想,不太对啊。Update对应的安全通告号码,KB号都在这个补丁之前啊:

      image

      应该不是这个问题……难道是介质上的NetFx3源文件有问题?

      这是逼着我重新镜像wim文件来验证啊……

      dism /mount-wim /wimfile:x:\sources\install.wim /index:4 /mountdir:/c:\wim\offline

      image

      image

      事实证明,安装介质上的NetFx3源文件没有问题……

      我是不会告诉你我已经折腾了一晚……于是决定,重新安装模板系统,进行NetFx3的安装

      image

      这次一点问题木有……

      仔细思考了一下所有的测试和结构,最终我认为问题出在MUI上。

      NetFx3在安装的时候,实际检测了系统支持的语言版本,然后查找对应的安装源文件。由于安装介质本身是英文版,所以自然找不到中文的NetFx3的语言包。

      再回忆一下我更新 Windows Server 2008 R2 SP1 模板安装.Net Framework 3.5 SP1的时候,也是分两个语言版本进行了安装。应该就是这个原因了。

先NetFx3,再MUI——Windows Server 2012 R2 with Update 无法安装 .Net