如何将.NET Framework先决条件添加到安装程序安装

5jvtdoz2  于 2023-10-21  发布在  .NET
关注(0)|答案(4)|浏览(152)

我在Microsoft Visual Studio2017中有一个C# Windows窗体项目。我添加了Visual Studio Windows安装向导项目,以便为我的应用程序创建安装程序。这是我第一次使用安装程序项目。
安装程序正确地具有.NET Framework 4.5.1的先决条件。然而,我想让安装程序包括.NET Framework安装,而不是要求用户在安装时单独下载和安装(一些用户的机器没有互联网连接)。
我已经在安装程序属性页中将系统必备设置为“从与我的应用程序相同的位置下载系统必备”,但是当我构建安装程序时,我看到以下三个错误:
错误:若要在“预览”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将项目“Microsoft .NET Framework 4.6.1(x86和x64)”的文件“DotNetFX4.6.1\NDP4.6.1-KB3102436-x86-x64-AllOS-ENU.exe”下载到本地计算机。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=616018
包含的链接并没有真正帮助,因为它指的是ClickOnce安装。我有提到的NDP 461 EXE文件,但我不知道把它放在哪里。
我看到其他一些问题提到使用MS Bootstrapper Package Manager创建 Bootstrap 包,但随着Microsoft关闭 * code.msdn.microsoft *,apparently without any information on a replacement,这似乎已经从互联网上消失了。
此外,我能找到的关于这个主题的大多数文档和堆栈溢出问题都与旧版本的Visual Studio有关,并且没有相关性(至少不足以让我直接弄清楚!)到Visual Studio 2017。
我该如何让安装项目找到EXE文件?我只需要把它放在正确的位置(已经试过了一些列在各种MSDN页面和注册表项下的)吗?或者我需要创建一个 Bootstrap 包?如果是后者,是否有关于这一过程的最新文件?
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 SDK\ClickOnce Bootstrapper\Packages\DotNetFX46\NDP46-KB3045557-x86-x64-AllOS-ENU.exe”的值不匹配。
我想这意味着我不应该这样做?

hwamh0ep

hwamh0ep1#

只需从this link下载NDP 461-KB 3102436-x86-x64-AllOS-ENU.exe文件。
复制到C:\Program Files(x86)\Microsoft SDK\ClickOnce Bootstrapper\Packages\DotNetFX461

fhg3lkii

fhg3lkii2#

对于Microsoft Visual Studio 2017**,添加 Bootstrap 包的正确文件夹**是:

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

各种可再发行的.NET软件包的链接可以在这里找到,沿着有关于不同部署选项的信息:.NET Framework deployment guide for developers

错误消息给予要添加到包文件夹中的正确文件夹。因此,应将文件NDP46-KB3045557-x86-x64-AllOS-ENU.exe添加到Packages下的文件夹“DotNetFX 46”中。
我真的不明白为什么微软没有采取措施,使这一过程自动化,或至少提供一个分步指南,如何添加 Bootstrap 包到不同版本的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

wixjitnu

wixjitnu3#

对于我(Visual Studio 2017 Enterprise),正确的路径是(对于471)*C:\Program Files(x86)\Microsoft SDK\ClickOnce Bootstrapper\Packages\DotNetFX 471 *

b4lqfgs4

b4lqfgs44#

我确实在Visual Studio 2017上找到了一个适合我的答案。
注册表项“HKLM\WARE\Wow6432Node\Microsoft\GenericBootstrapper”包含一个“Path”项,用于显示 Bootstrap 文件的路径。对我来说,这是以下几点:
C:\Program Files(x86)\Microsoft SDK\ClickOnce Bootstrapper
我检查了该路径,确实有一个“Packages\DotNetFX461”目录,但它不包含NDP461... ENU.exe文件。我只是把文件复制到那里,一切正常。

相关问题