如何添加.Net框架先决条件来安装安装

时间:2017-04-22 11:19:08

标签: c# .net winforms windows-installer visual-studio-2017

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

安装程序正确具有.Net framework 4.5.1的先决条件。但是,我想让安装程序包含.Net框架安装,而不是要求用户在安装时单独下载和安装它(某些用户的计算机没有Internet连接)。

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

  

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

所包含的链接并不真正有用,因为它引用了ClickOnce安装。我提到的NDP461 exe,但我不知道在哪里放。我看到一些其他问题提到使用MS Bootstrapper软件包管理器创建一个bootstrapper软件包,但这似乎已经从MS上关闭了code.msdn.microsoft,apparently no information on a replacement而从互联网上消失了。此外,我可以在这个问题上找到的大多数文档和SO问题都与旧版本的MSVS有关,并且与MSVS 2017没有关联(至少不能直接让我弄明白!)。

如何实际获取安装项目以找到exe?我是否只需要将它放在正确的位置(已尝试过在各种MSDN页面和注册表项下列出的一些)?或者我需要创建一个bootstrapper包吗?如果是后者,是否有关于此过程的最新文档?谢谢!

PS:如果我选择使用已经安装在我的开发机器上的(更新的).Net框架,那么这个过程会更容易吗? (我猜可能已经在某个机器上安装了这些信息)

更新所以我尝试转而定位到.NET 4.6,下载NDP46-KB3045557-x86-x64-AllOS-ENU.exe并将其放在目录C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX46中。安装程序设置项目现在已构建,但会发出以下警告(同样,其中3个):

  

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

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

4 个答案:

答案 0 :(得分:14)

只需从下载 NDP461-KB3102436-x86-x64-AllOS-ENU.exe 文件 This Link

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

答案 1 :(得分:2)

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

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

可以在此处找到各种可再发行.NET软件包的链接以及有关不同部署选项的信息: https://docs.microsoft.com/en-us/dotnet/framework/deployment/deployment-guide-for-developers

错误消息为您提供了要添加到packages文件夹的正确文件夹。所以应该将文件NDP46-KB3045557-x86-x64-AllOS-ENU.exe添加到文件夹" DotNetFX46"在包裹下。

我真的不明白为什么微软没有采取措施使其成为一个自动化过程,或者至少提供有关如何在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

答案 2 :(得分:2)

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

希望这会有所帮助

贝诺斯·卢尼耶

答案 3 :(得分:0)

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

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

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

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