这两天都在弄一个 Windows Setup 项目,希望弄得尽善尽美,直到刚刚终于大功告成,但当我想将 .Net Framework 3.5 SP1 的安装档也加入到我的 Setup 项目时(如下图),却发现项目无法编译。
错误讯息如下:>>>>>>>>>>
1、系统必备的安装位置未设置为“组件供应商的网站”,无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\DotNetFX35\x64\dotnetfx35langpack_x64zh-CHS.exe”。有关详细信息,请参见“帮助”。
2、系统必备的安装位置未设置为“组件供应商的网站”,无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\DotNetFX35\x86\dotnetfx35langpack_x86zh-CHS.exe”。有关详细信息,请参见“帮助”。
解决的方式如下:>>>>>>>>>>>>>>>
1. 先取得 .NET Framework 3.5 Service Pack 1 (Full Package) ( 231 MB )
2. 再根据 Visual Studio 2008 SP1 readme 的 2.3.1. General Issues 章节进行修正即可!
由于中文版的 Visual Studio 2008 SP1 自述文件 文件质量有问题,照着做很容易做错,因此修正的流程补充说明如下:
1. 先找到 [Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1 目录,若是 x64 架构 [Program Files] 请替换成 C:\ProgramFiles(x86)
2. 用「记事本」开启该目录下的 Product.xml 文件
3. 将以下片段插入到
<PackageFiles CopyAllPackageFiles=”IfNotHomeSite”> 这行下方:
<PackageFile Name="TOOLS\clwireg.exe" />
<PackageFile Name="TOOLS\clwireg_x64.exe" />
<PackageFile Name="TOOLS\clwireg_ia64.exe" />
4. 找到<PackageFileName=”dotNetFX30\XPSEPSC-x86-en-US.exe” 这行与 <PackageFile Name=”dotNetFX30\XPSEPSC-amd64-en-US.exe” 这行,并将这两行的 PublicKey 原本的值改成以下的值 ( 请注意复制的时候不要复制到空格符 ):
3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232
118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D0574476
5CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758
CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F
13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C74
2A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B
707CEE554D77D2085576810203010001
5. 将 Product.xml 存档。
6. 将已下载的 .NET Framework 3.5 Service Pack 1 (Full Package) 解压缩到任意暂存目录,解压缩的方法必须透过指令执行:dotNetFx35.exe /x: (或用WinRAR解压)
7. 解压缩后,该目录会多出一个WCU目录,在里面又会有一个dotNetFramework目录,请将WCU\dotNetFramework目录下所有的目录与档案都移至[ProgramFiles]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1 目录下。完成后的图示如下:
8. 如上图标红框的部分是 语言包(Language Pack) 的部分,各位在 Visual Studio 2008 SP1 自述文件 的 2.3.1. 章节里也可以下载的到,照着目录放置下载后的档案即可。 以 Chinese (Traditional) 为例,档案下载后的目录结构会变成以下这样:(简体中文目录名是:zh-CHS,将dotNetFX35目录完整拷贝到zh-CHS下即可。)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qwlovedzm/archive/2010/06/03/5645099.aspx
ClickOnce 发布,在系统必备中勾选了 .NET Framework 3.5 SP1,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件,答案就在下面。首先我们需要 framework 3.5_SP1 安装包,可以到下面的地址下载
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
把它解压,导航到 framework 3.5_SP1\wcu\dotNetFramework\ 文件夹,将其中的 dotNetFX20、dotNetFX30、dotNetFX35、dotNetMSP 文件夹和文件 dotNetFx35setup.exe 复制到 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1 目录中,对于 x64 操作系统,该路径位于 %ProgramFiles(x86)% 下。
这时执行发布,会提示如下错误:
系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\DotNetFX35\x64\dotnetfx35langpack_x64zh-CHS.exe”。有关详细信息,请参见帮助。
按照提示,我们去下载需要的文件,地址如下:
http://www.microsoft.com/downloads/details.aspx?familyid=8489ED13-B831-4855-96F7-DD35E4C02A20&displaylang=zh-cn
这里我们只需要下载 dotnetfx35langpack_x64zh-CHS.exe 和 dotnetfx35langpack_x86zh-CHS.exe 即可,因为发布只提示缺少这两个文件。
=======如果你急着发布,这段可以忽略=======
下载完成后,将他们放到 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\DotNetFX35\ 目录对应的文件夹内,dotnetfx35langpack_x64zh-CHS.exe 放 x64,dotnetfx35langpack_x86zh-CHS.exe 放 x86。
以为一切正常了,执行发布,仍然报错,这是怎么回事儿?Google了半天,在这个帖子(http://blog.csdn.net/hhxshhxs88/archive/2009/07/25/4379621.aspx)里找到了解决办法,下面是具体操作,与此帖不同的是,我没有创建 zh-chs 文件夹。
==========================================
导航到 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\zh-Hans 目录,新建一个文件夹,命名为 dotNetFX35,在 dotNetFX35 文件夹内建立两个子文件夹,分别命名为 x86 和 x64,然后把刚才下载的文件拷到相应的子目录中。
再去发布,这回应该没有错误了。
********以下内容仅供吹毛求疵者参考********
但是还有两个警告,类似如下的提示:
“.NET Framework 3.5 SP1”中“PublicKey”特性的值与文件“C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\dotNetFX30\XPSEPSC-x86-en-US.exe”的该特性值不匹配。
这是因为 XPSEPSC-x86-en-US.exe 的 publicKey 与 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\product.xml 文件中标记的 publicKey 不同造成的。要想消除警告,我们需要手工帮它匹配上。
首先,定位到错误提示的文件,然后右键→属性→数字签名,如图所示:
在“签名列表”中选择签名,然后点“详细信息”,弹出窗口如图所示:
在窗口中点“查看证书”,在弹出窗口中选择“详细信息”卡片,在下面的列表中选中“公钥”,如图所示:
然后把公钥对应的编码拷贝到记事本,将其中的空格替换掉。最后,我们打开 product.xml 文件,查找 XPSEPSC-x86-en-US.exe,将其对应的 publicKey 替换成刚才处理好的字符串就 OK 了。
*****************************************
另附
当选择".NET Framework 3.5 SP1 Client Profile"系统必备,发布时会提示找不到 DotNetFx35ClientSetup.exe,大家可以通过下面的地址下载,然后拷贝到 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFx35Client 目录即可成功发布。
http://www.microsoft.com/downloads/details.aspx?FamilyID=8cea6cd1-15bc-4664-b27d-8ceba808b28b&displaylang=zh-cn
注意:DotNetFx35ClientSetup.exe 是 Client Profile 基于 Web 的安装程序,需要通过 Internet 连接下载和安装。