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

ahm*_*iee 6 .net c# clickonce visual-studio

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

我按照如何:在ClickOnce应用程序中包含先决条件(请注意包文件夹位于v8.1A文件夹而不是v8A文件夹)中进行了操作,但仍然说它无法找到文件.我已经尝试过Visual Studio 2013Visual Studio 2015 RC.

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

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

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

要在"先决条件"对话框中启用"从我的应用程序的相同位置下载先决条件",必须为项目"Microsoft .NET Framework 4 Client Profile(x86和x64)和.NET for Update"下载文件"DotNetFX40ClientKB2468871\dotNetFx40_Client_x86_x64.exe".框架4(KB2468871)'到您的本地机器.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883.

Han*_*ant 6

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

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

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

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

这与你要做的事情完全不相容.无论是.NET Framework和SQL Express的共享的组件和需要管理员权限才能安装并风险不稳定已安装的.NET或SQL服务器的机器.

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

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

如果您想为用户提供安装程序附带的这些先决条件,那么获得优先权的唯一方法是创建一个普通的MSI安装程序.