我正在处理一个使用ClickOnce部署的项目,并且遇到了几个问题。
我的软件解决方案中有两个组件:需要.NET框架3.5才能运行的桌面客户端和列出可用文档并提供通过ClickOnce安装桌面客户端的方式的服务器(ASP.NET应用程序)。
我的第一个问题是先决条件问题:我需要一种在客户端安装之前安装3.5框架的方法。Visual Studio创建了一个setup.exe
来处理这个问题,但为了使其工作,必须直接运行它(而不是链接到.application
文件),并且在创建ClickOnce清单时必须知道部署URL。
所以我又有了两个问题:显然没有办法在使用setup.exe
安装后使用查询字符串参数运行客户端应用程序,因此,与其让服务器显示文档列表链接到像“.../client.application?document=doc1”这样的URL,我只能有一个链接到setup.exe
的链接。
setup.exe
无法正常运行。目前的解决方法是使用离线安装程序,其中包含大型 ZIP 文件中的setup.exe
、先决条件和 ClickOnce 部署文件。
具有适当框架版本的用户仍然可以使用带有查询字符串的.application
链接到文档来安装/更新客户端并打开文档。没有框架的用户会收到错误消息(“需要系统更新 blablabla 3.5.0.0 blabla GAC”),必须下载 ZIP 文件,将其提取到本地计算机并运行setup.exe
文件以安装框架,然后安装客户端。之后,他必须返回到文档列表,并使用正确的参数链接启动客户端。
不用说,我对这种策略并不感到自豪,这破坏了所有 ClickOnce 部署的优势。
有没有可能以更优雅的方式解决先决条件问题?是否有一种简单的方法在部署网络时修改 ClickOnce 应用程序的安装 URL(例如编写 URL 到配置文件或其他内容)?