我正在开发一个使用ClickOnce部署的项目,我正在经历几个问题.
我的软件解决方案中有两个组件:一个需要运行.NET framework 3.5 的桌面客户端,以及一个列出可用文档的服务器(ASP.NET应用程序),并提供了一种使用ClickOnce安装桌面客户端的方法.
我的第一个问题是前提条件:我需要一种在客户端安装之前安装3.5框架的方法.Visual Studio创建了一个处理setup.exe它的东西,但是为了使它工作,它必须直接运行(而不是链接到.application文件),并且在创建ClickOnce清单时必须知道部署URL.
所以我还有两个问题:显然没有办法在安装后使用查询字符串参数运行客户端应用程序setup.exe,所以不要让服务器显示链接到像".../client.application"这样的URL的文档列表. document = doc1"我只能链接到setup.exe.
另一个问题是最糟糕的:服务器旨在用于相对较小的专用网络,而不是用于单个Web服务器.问题是:我在构建时不知道ClickOnce客户端的部署URL,因此在setup.exe选中"从网站安装"选项时无法正常运行.目前,解决方法是使用脱机安装程序,其中包含setup.exe大型ZIP文件中的先决条件和ClickOnce部署文件.
具有适当框架版本的用户仍然可以使用.application带有查询字符串的链接来安装/更新客户端并打开文档.没有框架的用户会收到错误消息("系统更新需要blablabla 3.5.0.0 blabla GAC"),并且必须下载ZIP文件,将其解压缩到本地计算机并运行setup.exe文件以安装框架,然后客户端.之后,他必须返回文档列表并使用链接以适当的参数启动客户端.
毋庸置疑,我对这一策略并不感到自豪,这种策略破坏了ClickOnce的所有部署优势.
是否有可能以更优雅的方式摆脱先决条件问题?在网络中部署服务器时是否有一种简单的方法来修改ClickOnce应用程序的安装URL(比如在配置文件中写入URL)?
我处理的项目包括通过ClickOnce部署的服务器和客户端应用程序.客户端在用户第一次单击http://... file.application链接时安装,并且在安装期间与用户的交互最少(仅标准的ClickOnce安装/不安装对话框).
我们的一位客户希望能够在用户的机器上自动安装客户端.有没有办法在没有任何用户交互的情况下安装ClickOnce应用程序,以便自动化部署过程?
是否存在提供此类部署的软件?
我的问题来自于我不知道ClickOnce部署如何工作的事实(我甚至不知道是否可以从命令行运行ClickOnce安装程序...),并且因为ClickOnce应用程序不是像Windows Installer一样打包,我不确定.