我在MS Visual Studio 2017 中有一个C#Winforms项目。我添加了一个Visual Studio Installer设置向导项目,以为我的应用程序创建一个安装程序。这是我第一次使用安装程序项目。
安装程序正确具有.NET Framework 4.5.1的先决条件。但是,我想让安装程序包括.NET框架安装,而不是要求用户在安装时间下下载并分别安装它(某些用户的计算机没有Internet连接(。
我已经设置了先决条件,可以在设置属性页面中"从与我的应用程序相同的位置下载先决条件",但是当我构建设置时,我会看到3个错误如下:
错误:要在"先决条件"对话框中启用"从同一位置下载先决条件",您必须下载文件'dotnetfx461 ndp461-kb3102436-x86-x86-x86-x86-x64-x64-allos-anlos-enu.exe.exe'for Item'Microsoft。网络框架4.6.1(x86和x64('到您的本地机器。有关更多信息,请参见http://go.microsoft.com/fwlink/?linkid=616018。
包含的链接实际上没有帮助,因为它指的是ClickOnce安装。我有提到的NDP461 EXE,但我不知道该放在哪里。我看到其他一些问题提到了使用MS Bootstrapper软件包管理器创建Bootstrapper软件包,但这似乎从Internet中消失了,MS的Code.msdn.microsoft显然没有替换的信息。此外,我可以在该主题上找到的大多数文档以及与MSV的较旧版本有关的问题,并且与MSVS 2017不相关(至少不足以直接无法弄清楚!(。
我该如何实际获取设置项目以找到EXE?我是否只需要在正确的位置将其放置(已经尝试了一些在各种MSDN页面和注册表键上列出的(?还是我需要创建一个Bootstrapper软件包?如果后者,是否有此过程中的最新文档?谢谢!
ps:如果我选择使用(最新的(.NET框架,该过程是否会更容易?(我猜我可能已经在机器上的某个地方已经有安装信息了(
更新因此,我尝试切换到Targeting .NET 4.6,下载了NDP46-KB304557-X86-X86-X64-X64-ALLOS-ENU.EXE,并将其放置在目录C:Program Files (x86)Microsoft SDKsClickOnce BootstrapperPackagesDotNetFX46
。现在,安装程序设置项目现在构建,但发出以下警告(同样,其中3个(:
dotnetfx46 ndp46-kb304557-x86-x64-allos-enu.exe'。
我猜这意味着我不应该这样做?
只需下载 ndp461-kb3102436-x86-x64-allos-enu.exe 文件此链接
并将其复制到 C: Program Files(X86( Microsoft SDK Clickonce Bootstrapper packages dotnetfx461
Microsoft Visualio 2017
strong>正确的文件夹以添加Bootstrapper软件包是:
C:Program Files (x86)Microsoft Visual Studio 14.0SDKBootstrapperPackages
链接的各种重新分配.NET软件包可以在此处找到有关不同部署选项的信息:https://learn.microsoft.com/en-us/dotnet/framework/deployment/deployment-guide-for-develoders
错误消息为您提供了正确的文件夹,以添加到包装夹中。因此,应将文件ndp46-kb304557-x86-x64-x64-allos-enu.exe添加到包装下的文件夹" dotnetfx46"中。
我真的不明白为什么微软没有采取步骤使其成为自动化过程,或者至少提供有关如何将Bootstrap软件包添加到Visual Studio上的不同版本的逐步指南。这些年来,该过程和文件夹已更改了几次。
公共密钥Mismach很可能是由于以下事实:NDP46-KB304557-X86-X64-X64-ALLOS-ENU.EXE文件至少有两个版本,该文件与同一文件名分发,但公共钥匙不同。检查此链接:https://connect.microsoft.com/visualstudio/feedback/details/1584164/bootstrapper-packages-packages-have-brekages-have-bren-links-n.-wrong--wrong-wrong-public-public-public-keys-/public-public-keys
=" ANS">对我(VS2017 Enterprise(正确的路径为(4.7.1(C: Program Files(X86( Microsoft SDK Clickonce Bootstrapper packages dotnetfx471
希望这会有所帮助
Benoist Lugnier
迟到了几年,但是我确实找到了一个在VS2017上有用的答案。
注册表密钥" HKLM Software WOW6432Node Microsoft genericbootstrapper"包含一个"路径"密钥,该密钥显示了Boottrapper文件的路径。对我来说,这是以下内容:
c: program Files(x86( Microsoft SDKS Clickonce Bootstrapper
我检查了那条路径,确实有一个" packages dotnetfx461"目录,但它不包含ndp461 ... enu.exe文件。我刚刚复制了该文件,一切都起作用。