如何使用 msbuild 引导 .NET 3.5 SP1?按照找到的说明不起作用

Posted

技术标签:

【中文标题】如何使用 msbuild 引导 .NET 3.5 SP1?按照找到的说明不起作用【英文标题】:How to bootstrap .NET 3.5 SP1 with msbuild? following found instructions doesn't work 【发布时间】:2011-04-07 07:13:55 【问题描述】:

我正在尝试使用 msbuild GenerateBootstrapper 任务来分发带有框架的 .net 应用程序,而无需互联网连接来安装它。

我发现很多帖子都指向相同的说明:

Enable Samesite for the .NET Framework 3.5 SP1 bootstrapper

按照说明操作后,我仍然无法生成引导程序。我可以看到的更明显的问题是,从 dotNetFx35.exe 中提取文件不会提取与自述文件中显示的相同的文件和文件夹列表(例如 TOOLS 文件夹不存在)。

我做错了什么?我是否遵循旧的指示?

msbuild错误如下:

C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\TOOLS\clwireg.exe' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\TOOLS\clwireg_x64.exe' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\TOOLS\clwireg_ia64.exe' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): warning MSB3165: The value of the 'PublicKey' attribute in '.NET Framework 3.5 SP1' does not match that of file 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\dotNetFX30\XPSEPSC-x86-en-US.exe'.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): warning MSB3165: The value of the 'PublicKey' attribute in '.NET Framework 3.5 SP1' does not match that of file 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1\dotNetFX30\XPSEPSC-amd64-en-US.exe'.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\dotNetMSP\x86\NetFX2.0-KB948609-v6001-x86.msu' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\dotNetMSP\x86\NetFX3.0-KB948610-v6001-x86.msu' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\dotNetMSP\x64\NetFX2.0-KB948609-v6001-x64.msu' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.
C:\svn\GII\5.1b\Installer\src\Installer\Installer.wixproj(103,5): error MSB3152: The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\dotNetMSP\x64\NetFX3.0-KB948610-v6001-x64.msu' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

我已经解决了这个问题。 Microsoft 文档提供的下载完整 .net 框架 3.5 SP1 的链接不正确。 .NET Framework 3.5 SP1 full install package 的包里面确实有预期的文件。

【讨论】:

我发现除了 Mohsen 回答中提到的 3.5SP1 修复程序之外,还需要在 Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages 文件夹中同时包含 DotNetFX35 和 DotNetFX35SP1 包【参考方案2】:

看看这个

大家好,

让我解释一下这个问题。

我们仍在调查为什么 实际文件的公钥令牌 不同于我们在 product.xml 文件。不用说, 尽管我们有一些东西溜走了 测试。你有我的歉意 那个。

好消息是引导程序 在这种情况下工作得很好。 当我们建造时,我们比较数字 将磁盘上的文件签名到 PublicKeyToken 中列出的 product.xml 或 package.xml。如果他们 是不同的,那么我们使用值 磁盘上的实际文件,因为这 是什么将被复制和/或发布 在“与我的应用程序相同的位置” 设想。这样,引导程序 工作正常。

我们确实会显示构建警告,以提醒 开发者/建造者那东西 与预期不同。这 在“从 组件供应商的网站”场景 因为如果正在下载的文件 来自组件供应商的相同 就像在磁盘上一样,然后下载将 未通过证书测试并且不会 安装。幸运的是,在这种情况下, 在那种情况下,只有 dotnetfx35setup.exe 文件实际上是 从微软下载的,然后 密钥正确。

如果您想摆脱构建 警告,您可以更新您的 Product.XML 中的 PublicKey 与 以下值: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001 P>

将它用于两个 XPSEPSC* 文件。

我希望这有助于澄清事情, 我们将继续 跟进。感谢您的报告 这将帮助我们留住更多的人 避免遇到这种情况。

此致,

David Guyer 项目经理 - 设置 项目 Visual Studio

【讨论】:

以上是关于如何使用 msbuild 引导 .NET 3.5 SP1?按照找到的说明不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当项目以 3.5 为目标时,Msbuild 4.0 是不是引用 System.Core 4.0?

改变 WIX 生成的 .NET 3.5 引导程序的行为

构建 VS2008 .NET 3.0 解决方案,无需在构建服务器上安装 .NET 3.5

.NET Framework 3.5 的 .NET Framework 2.0 SDK 的等效项是啥?

怎样使用 MSBuild 自动编译和发布 NET 网站

Jenkins结合.net平台工具之Msbuild