之前收到一个任务,制作安装包,要求把必备的一些必备的组件如.NET Framework这些玩意用一键安装的形式安装上去,SQL Server是必备的其中之一。可是在系统必备处勾选了SQL Server 2005 Express SP2(x86),在生成的时候报错了:
系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“SQL Server 2005 Express Edition SP2 (x86)”中的文件“SqlExpress\sqlexpr32.exe”。有关详细信息,请参见帮助。
可是我谷歌了也谷不出办法。安装了SQL Server 2005 Express也是无补于事,还有另一件头痛的事,安装SQL Server 2005还需要.NET Framework2.0,这样系统必备组件我的VS2010里面压根就没有啊!这个在网上找了一下还是有解决办法。就是到VS2005或VS 2008的C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages里面把 DotNetFX文件夹复制到C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages下面。果然在系统必备里多了一项。
对这个做法思考一番,看了一下各个文件夹下面的文件,又尝试了一下,终于悟出了一些东西,沿用类似的方法,就可以自定义添加系统必备了。
首先要了解一下每个必备项的安装目录结构,拿这个SQL Server2008的作为例子
- en和zh-Hans是各种语言版本的安装包
- product.xml是比较关键的一个文档,定义着这个必备组件的配置信息。
- SqlExpress.exe是检测程序而已,作用在于安装时检测这个必备组件安装了没。
接着随便进入一种语言的目录下看看,选择了中文汉语的。
- eula.rtf:安装时的一些自述信息,例如受什么法律保护之类的。
- package.xml:一键安装时的一些配置信息。
- SQLExpr_x64_chs.exe和SQLExpr_x86_chs.exe是SQL Server 2008 Express的安装包
上面提及到两个配置文件,要添加好一个“系统必备”无非就是配置好这些必备组件的安装信息罢了。
由于还没完全弄明白各个节点各个属性的含义,只是把弄明白的列出来
product.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- SQL Express 2008 VS Bootstrapper : product.xml : Language neutral information --> 3 <Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Microsoft.Sql.Server.Express.10.0"> 4 <RelatedProducts> 5 <EitherProducts> 6 <DependsOnProduct Code=".NETFramework,Version=v4.0" /> 7 <DependsOnProduct Code="Microsoft.Net.Framework.3.5.SP1" /> 8 </EitherProducts> 9 <DependsOnProduct Code="Microsoft.Windows.Installer.4.5" /> 10 <IncludesProduct Code="Microsoft.Sql.Server.Express.1.0" /> 11 <IncludesProduct Code="Microsoft.Sql.Server.Express.9.2" /> 12 </RelatedProducts> 13 <PackageFiles> 14 <PackageFile Name="SqlExpressChk.exe" /> 15 </PackageFiles> 16 </Product>