如何添加 .NET Framework 安装先决条件

问题描述 投票:0回答:4

我在 Microsoft Visual Studio 2017 中有一个 C# Windows 窗体项目。我添加了 Visual Studio 安装程序安装向导项目来为我的应用程序创建安装程序。这是我第一次使用安装程序项目。

安装程序正确地具有 .NET Framework 4.5.1 的先决条件。但是,我想让安装程序包含 .NET Framework 安装,而不是要求用户在安装时单独下载并安装它(某些用户的计算机没有互联网连接)。

我已经在设置属性页中将先决条件设置为“从与我的应用程序相同的位置下载先决条件”,但是当我构建设置时,我看到三个错误,如下所示:

错误:要在先决条件对话框中启用“从与我的应用程序相同的位置下载先决条件”,您必须下载项目“Microsoft .NET Framework”的文件“DotNetFX461\NDP461-KB3102436-x86-x64-AllOS-ENU.exe” 4.6.1(x86 和 x64)' 到您的本地计算机。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=616018

包含的链接并没有真正的帮助,因为它指的是 ClickOnce 安装。我提到的NDP461 EXE文件,但我不知道把它放在哪里。

我看到其他一些问题提到使用 MS Bootstrapper Package Manager 创建引导程序包,但随着 Microsoft 关闭 code.msdn.microsoft,这似乎已从 Internet 上消失,显然没有任何有关替换的信息

此外,我能找到的有关该主题的大多数文档和 Stack Overflow 问题都与旧版本的 Visual Studio 相关,并且与 Visual Studio 2017 没有关联(至少不足以让我弄清楚!)。

如何真正让安装项目找到 EXE 文件?我是否只需将其放在正确的位置(已经尝试了各种 MSDN 页面和注册表项下列出的一些内容)?或者我需要创建一个引导程序包?如果是后者,是否有关于此过程的最新文档?

PS:如果我选择使用开发计算机上已安装的(更新的).NET Framework,该过程会更容易吗? (我猜机器上的某个地方可能已经有安装信息。)


我尝试切换到目标.NET 4.6,下载NDP46-KB3045557-x86-x64-AllOS-ENU.exe并将其放在目录

C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX46
中。安装程序设置项目现在已构建,但会给出以下警告(同样,其中三个):

警告:“Microsoft .NET Framework 4.6(x86 和 x64)”中“PublicKey”属性的值与文件“C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX46\”的值不匹配NDP46-KB3045557-x86-x64-AllOS-ENU.exe'.

我想这意味着我应该这样做?

c# .net winforms windows-installer visual-studio-2017
4个回答
20
投票

只需从此链接下载NDP461-KB3102436-x86-x64-AllOS-ENU.exe文件。

并将其复制到 C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX461


2
投票

对于我(VS2017企业版)来说,正确的路径是(对于4.7.1) C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX471

希望这会有所帮助

贝诺伊斯特·鲁尼尔


2
投票

对于 Microsoft Visual Studio 2017 添加引导程序包的正确文件夹是:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\

可以在此处找到各种可再发行 .NET 包的链接以及有关不同部署选项的信息: 面向开发人员的 .NET Framework 部署指南

错误消息为您提供了要添加到包文件夹中的正确文件夹。因此,文件 NDP46-KB3045557-x86-x64-AllOS-ENU.exe 应添加到 Packages 下的文件夹“DotNetFX46”中。

我真的不明白为什么 Microsoft 没有采取措施使其成为一个自动化过程,或者至少提供有关如何将引导程序包添加到 Visual Studio 上不同版本的分步指南。这些年来,程序和文件夹已经改变了好几次。

公钥不匹配很可能是由于至少有两个版本的 NDP46-KB3045557-x86-x64-AllOS-ENU.exe 文件以相同的文件名分发,但公钥不同。检查此链接:https://connect.microsoft.com/VisualStudio/feedback/details/1584164/bootstrapper-packages-have-broken-links-and-wrong-public-keys


1
投票

晚了几年,但我确实在 VS2017 上找到了对我有用的答案。

注册表项“HKLM\SOFTWARE\Wow6432Node\Microsoft\GenericBootstrapper”包含一个“Path”项,显示引导程序文件的路径。对我来说,是这样的:

C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\

我检查了该路径,那里确实有一个“Packages\DotNetFX461”目录,但它不包含 NDP461...ENU.exe 文件。我刚刚将文件复制到那里,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.