问题描述:
在安装和部署应用程序时,在“系统必备”中包含“.NET Framework 3.5 SP1”,并选择“从与我的应用程序相同的位置下载系统必备组件”或者“从下列位置下载系统必备组件”时,生成失败!找不到.NET Framework 3.5 SP1的安装组件。
原因:
.NET Framework 3.5 SP1 bootstrapper 组件包不存在。
说明:
bootstrapper 组件包是生成 .NET Framework 安装包的必要组件。它位于[Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper目录或者%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper目录下。在其 Packages 文件夹下包含了 .NET Framework 必备组件的安装程序,如果选择了必备组件,它们可能被打包在你的安装项目中。
那么现在就到图中那个 DotNetFX35SP1 目录中看一看,几乎空空如野。问题就出现在这里头。大家在安装 .NET Framework 3.5 SP1 SDK 时是否看过其中的“自述文档”,关于此版本的 Bootstrapper 没有被自动创建的问题微软写在了它的 Readme 文件中,但是,或许您认认真真地阅读过那份文档,也找不到关于Bootstrapper的蛛丝马迹,呃,这个不怪你,你应该去阅读英文原版的 Readme……(别再去翻《Visual Studio 速成版自述文件》了,那里什么都没有!)
相关链接:
Visual Studio 2008 Service Pack 1 (SP1) Readme - 这篇文档的 2.3.1.1 章节中详细描述了关于如何解决 3.5SP1 bootstrapper 的问题。
解决方法:
你最好有VS2008SP1CHSX1512981.iso那个VS2008SP1简体中文光盘镜像文件。我们需要的三个安装包:dotnetfx35.exe、dotnetfx35langpack_x86zh-CHS.exe和dotnetfx35langpack_x64zh-CHS.exe那里面都有。不必再从网上下载。下面是参考《Visual Studio 2008 Service Pack 1 (SP1) Readme》文档中的解决步骤:
- 修改配置文件。
打开[Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1文件夹或者%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1文件夹(64位操作系统),比如我这里是:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1。
用记事本编辑 Product.xml 文件,在<PackageFiles>元素下添加:
- <PackageFile Name="TOOLS\clwireg.exe" />
- <PackageFile Name="TOOLS\clwireg_x64.exe" />
- <PackageFile Name="TOOLS\clwireg_ia64.exe" />
搜索“PackageFile Name="dotNetFX30\XPSEPSC-x86-en-US.exe”,将它的PublicKey改成:
3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
同样,搜索“PackageFile Name="dotNetFX30\XPSEPSC-amd64-en-US.exe”,将它的PublicKey也改成上面的相同值。
保存文件。配置文件修改完成。 - 提取dotNetFx35.exe文件内容。你可以点击这里下载:http://go.microsoft.com/fwlink?LinkID=118080
运行命令提示符,进入dotNetFx35.exe所在目录,输入“dotNetFx35.exe /x:”,会自动在当前目录解压出“WCU”文件夹(也可以用WinRAR解压)。将WCU文件夹下所有文件复制到“%Program Files%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1”或者“%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1”(64位操作系统)文件夹下面。 - 提取语言包。把对应的语言包复制到dotNetFx35SP1下的对应文件夹中。
比如简体中文,将dotnetfx35langpack_x86zh-CHS.exe复制到DotNetFX35SP1\zh-CHS\DotNetFX35\x86目录里,将dotnetfx35langpack_x64zh-CHS.exe复制到DotNetFX35SP1\zh-CHS\DotNetFX35\x64目录里。注意:x86和x64的语言包都需要被复制过去。
如果你没有语言包,参考下面的表格下载自己的语言文件:
一个ClickOnce范例组图: