在安装和部署应用程序时,在“系统必备”中包含“.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 目录中,几乎没有Bootstrapper 。问题就出现在这里。在安装 .NET Framework 3.5 SP1 SDK 时是否看过其中的“自述文档”,关于此版本的 Bootstrapper 没有被自动创建的问题微软写在了它的 Readme 文件中,但是,在《Visual Studio 速成版自述文件》找不到关于Bootstrapper的说明,应该去阅读英文原版的 Readme(晚上一朋友说不能部署安装DotNetFX35SP1,问其安装的语言版本为简体中文,由于我安装的是Windows 7 Build 7000,在DXperience v2009 vol 1.2的时候一直安装不上,现在看到DXperience v2009 vol 1.3解决了,一直在安装DXperience就没有去找原因,装完DXperience再找微软的说明文档,在英文原版中看到解决方法)。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位操作系统),比如我这里是:D:/Program Files/Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages/DotNetFx35SP1。
用记事本编辑 Product.xml 文件,在<PackageFiles>元素下添加:
< PackageFile Name = " TOOLS/clwireg.exe " />搜索 <PackageFile Name="dotNetFX30/XPSEPSC-x86-en-US.exe",将它的PublicKey改成:
< PackageFile Name = " TOOLS/clwireg_x64.exe " />
< PackageFile Name = " TOOLS/clwireg_ia64.exe " />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”文件夹(也可以用7z或WinRAR解压,我比较中意用7z,因为是免费的解压缩软件。)。将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目录里。繁体中文将dotnetfx35langpack_x86zh-CHT.exe复制到DotNetFX35SP1/zh-CHT/DotNetFX35/x86目录里,将dotnetfx35langpack_x64zh-CHT.exe复制到DotNetFX35SP1/zh-CHT/DotNetFX35/x64目录里。注意:x86和x64的语言包都需要被复制过去。
如果没有语言包,参考下面的表格下载自己的语言文件:
Language | Architecture | Source URL | Destination |
---|---|---|---|
Chinese (Simplified) | x86 | zh-CHS/DotNetFX35/x86 | |
x64 | zh-CHS/DotNetFX35/x64 | ||
Chinese (Traditional) | x86 | zh-CHT/DotNetFX35/x86 | |
x64 | zh-CHT/DotNetFX35/x64 | ||
English | x86 | N/A | N/A |
x64 | N/A | N/A | |
French | x86 | fr/DotNetFX35/x86 | |
x64 | fr/DotNetFX35/x64 | ||
German | x86 | de/DotNetFX35/x86 | |
x64 | de/DotNetFX35/x64 | ||
Italian | x86 | it/DotNetFX35/x86 | |
x64 | it/DotNetFX35/x64 | ||
Japanese | x86 | ja/DotNetFX35/x86 | |
x64 | ja/DotNetFX35/x64 | ||
Korean | x86 | ko/DotNetFX35/x86 | |
x64 | ko/DotNetFX35/x64 | ||
Portuguese – Brazil | x86 | pt-BR/DotNetFX35/x86 | |
x64 | pt-BR/DotNetFX35/x64 | ||
Russian | x86 | ru/DotNetFX35/x86 | |
x64 | ru/DotNetFX35/x64 | ||
Spanish | x86 | es/DotNetFX35/x86 | |
x64 | es/DotNetFX35/x64 |
通过以上方法之后生成部署安装成功
相关连接:
其他引导程序包用来通过 Visual Studio 安装程序项目与 Clickonce 应用程序再发行组件
要解决问题的那兄弟都在梦中呢(他今天周六还上班),呵呵!当你梦中醒来,发现我帮你解决了,你是不是在梦中都笑了,哈哈!:)
希望也能帮助在困扰安装和部署.NET Framework 3.5 SP1 bootstrapper 包的朋友。