【问题标题】:How to add .Net framework prerequisite to setup install如何添加 .Net 框架先决条件来设置安装
【发布时间】:2017-09-19 09:28:24
【问题描述】:

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

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

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

错误:要在先决条件对话框中启用“从与我的应用程序相同的位置下载先决条件”,您必须为项目“Microsoft . NET Framework 4.6.1(x86 和 x64)”到您的本地计算机。如需更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=616018

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

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

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 SDKs\ClickOnce Bootstrapper\Packages\ DotNetFX46\NDP46-KB3045557-x86-x64-AllOS-ENU.exe'。

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

【问题讨论】:

  • 搜索了大约3个小时,终于找到了你的帖子,解决了我的问题。

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


【解决方案1】:

晚了几年,但我确实在 VS2017 上找到了适合我的答案。

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

C:\Program Files (x86)\Microsoft SDKs\ClickOnce 引导程序\

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

【讨论】:

    【解决方案2】:

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

    希望这会有所帮助

    Benoist LUGNIER

    【讨论】:

      【解决方案3】:

      对于 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

      错误消息为您提供了要添加到包文件夹的正确文件夹。所以应该将文件 NDP46-KB3045557-x86-x64-AllOS-ENU.exe 添加到 Packages 下的文件夹“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

      【讨论】:

      • 如何知道正确的文件夹名称? “DotNetFX46”从何而来,如果我想部署“Visual Studio Tools for Office Runtime”,如何命名?
      • 第二个链接失效。如何获得与我的 DotNetFX48 安装程序匹配的新 Product.xml?随着时间的推移,这个问题只会变得更糟。
      【解决方案4】:

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

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

      【讨论】:

      • 谢谢,我按照微软指南没有成功,docs.microsoft.com/en-us/visualstudio/deployment/…,指南说将文件复制到以下目录 C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages
      • 这成功了!对于框架 4.8,请改用此文件夹:DotNetFX48
      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多