【发布时间】:2011-03-31 22:53:01
【问题描述】:
我在 2 年前尝试使用 ClickOnce 安装,但遇到以下问题:
- 应用程序因错误而无法启动
- 对文件系统的访问受限
后来我看到谷歌浏览器使用ClickOnce在本地获取安装包,然后开始真正的安装
是否可以通过 ClickOnce 从服务器下载文件并保存在本地?
【问题讨论】:
我在 2 年前尝试使用 ClickOnce 安装,但遇到以下问题:
后来我看到谷歌浏览器使用ClickOnce在本地获取安装包,然后开始真正的安装
是否可以通过 ClickOnce 从服务器下载文件并保存在本地?
【问题讨论】:
我的公司已经使用 ClickOnce 三年多了,我们有成千上万的客户安装多个产品(桌面和 Office 插件),几乎没有遇到任何问题。我们确实有一个签名证书,因为我们所有的客户都是外部客户,它向他们保证安装来自受信任的来源。
此外,如果使用自动更新和桌面应用程序(不适用于 VSTO),更改签名证书的问题已在 .NET 3.5 中得到修复,并且在 .NET 4 中的所有情况下均已修复。并且有针对这些情况的解决方法哪里还有问题。
ClickOnce 的巨大优势在于能够发布更新并让用户自动获取它们,而且更新是增量的。如果您的应用程序访问数据库,这一点尤其重要,并且您需要确保在将更改部署到数据库时用户更新应用程序。
如果您有 ClickOnce 应用并且在启动时出现错误,您需要尝试从 ClickOnce 缓存中运行 [exe] 并确定问题出在您的应用中还是与部署有关。
我不确定从服务器下载 ClickOnce 并在本地保存文件是什么意思。如果您指的是部署本身,它就是这样做的。如果您的意思是它可以从其他地方下载文件并将它们保存在本地,那么肯定可以。我们的应用程序使用 WebClient 来上传和下载文件。
请注意,并非所有用户都安装 ClickOnce 应用程序,并且您不能写入 Program Files。如果您正在使用其他文件,则需要将它们填充到 LocalApplicationData 中。我们的应用程序在 LAD 文件夹下创建一个缓存并在其中保留信息,这对我们来说很好。
【讨论】:
我们过去曾使用过 ClickOnce,但后来放弃了。必须拥有证书是一件很痛苦的事情,当我们更换托管它的服务器时,它破坏了一切,我们不得不从所有客户端卸载并重新安装为具有新证书的新应用程序。但是关于你的问题......
ClickOnce 可以通过标准方式(Web 服务器)部署到网络共享或 CD。但是,如果您想避免出现问题,请不要使用 ClickOnce。将文件下载到桌面并进行安装有点违背了目的。
使用普通的安装项目创建一个 MSI,并将其发布到网络上。用户可以下载它并运行设置就好了。 (但是,如果 Windows 阻止它,因为它来自不受信任的来源,他们可能必须取消阻止它。)
【讨论】: