当文件位于必须的位置时,ClickOnce无法找到其先决条件

时间:2015-07-07 18:46:12

标签: c# .net visual-studio clickonce

我希望使用带有一些先决条件的ClickOnce发布我的应用程序(.NET 4.5和SQL Server Express)。

我在 How to: Include Prerequisites with a ClickOnce Application 中说过(请注意包文件夹位于v8.1A文件夹而不是v8A文件夹),但它仍然说它无法找到文件。我已经尝试了Visual Studio 2013Visual Studio 2015 RC。

  

从与我的应用程序相同的位置启用'下载先决条件'在“先决条件”对话框中,您必须下载文件' DotNetFX45 \ dotNetFx45_Full_x86_x64.exe'对于项目' Microsoft .NET Framework 4.5(x86和x64)'到你的本地机器。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883

     

从与我的应用程序相同的位置启用'下载先决条件'在“先决条件”对话框中,您必须下载文件' SqlExpress2012 \ SQLEXPR32_x86_ENU.EXE'对于项目' SQL Server 2012 Express'到你的本地机器。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883

     

从与我的应用程序相同的位置启用'下载先决条件'在“先决条件”对话框中,您必须下载文件' SqlExpress2012 \ SQLEXPR_x64_ENU.EXE'对于项目' SQL Server 2012 Express'到你的本地机器。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883

     

从与我的应用程序相同的位置启用'下载先决条件'在“先决条件”对话框中,您必须下载文件' DotNetFX40ClientKB2468871 \ dotNetFx40_Client_x86_x64.exe'对于项目' Microsoft .NET Framework 4客户端配置文件(x86和x64)和.NET Framework 4更新(KB2468871)'到你的本地机器。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883

2 个答案:

答案 0 :(得分:6)

您对ClickOnce部署中的可能性有一个非常错误的想法。规范的MSDN页面是this one。高亮显示该网页中最重要的部分:

  

对用户计算机的影响。在Windows Installer部署中,应用程序通常依赖于共享组件,可能存在版本冲突;使用ClickOnce部署,每个应用程序都是独立的,不会干扰其他应用程序   安全权限。 Windows Installer部署需要管理权限,并且只允许有限的用户安装; ClickOnce部署使非管理用户只能安装和授予应用程序所需的代码访问安全权限。

  不影响共享组件或其他应用程序:是
  安装共享文件:没有   安装到全局程序集缓存:否   多个用户的安装:没有   安装时间注册表访问:受限制

这些故意限制旨在让用户对使用ClickOnce安装.NET程序感觉良好。他们不需要管理员的帮助来安装程序。并且安装程序无法对机器进行大幅更改,导致其他程序出现故障。安装人员非常非常常见的问题。

这与你想要做的事情完全不相容。 .NET Framework和SQL Express 都是共享组件,而需要管理员访问才能安装,而执行会破坏已经拥有.NET的机器的稳定性或者安装了SQL服务器。

所以这根本行不通。您可以选择它们作为先决条件,但在安装时发生的所有事情都是ClickOnce安装程序验证它们是否符合要求。换句话说,该机器必须已安装正确版本的.NET和SQL Express。如果没有,那么部署将失败,用户将获得告诉他下载安装程序位置的对话框。然后完全取决于他(或他的管理员)下载并运行安装程序。之后,您的ClickOnce安装将毫无困难地完成。

部署向导非常糟糕,它应该隐藏底部的单选按钮。只有“来自组件供应商的网站”才是这些先决条件的有效选择。 bootstrapper .xml文件格式不够复杂,无法限制选择。

如果您想为用户提供安装程序中包含的这些先决条件,那么只有先行的方法才能创建正常的MSI安装程序。

答案 1 :(得分:0)

我过去完成此方案的方式只是使用内置的“发布”功能。根据我的经验,它们似乎运作良好。

在应用程序的“发布配置”部分中,有一个“先决条件”按钮,您可以单击并检查.NET Framework和SQL Express等。在ClickOnce安装期间,它会提示用户在安装应用程序之前将其从Microsoft中删除。Application Properties

Prerequisites Selection