ClickOnce CD 安装程序尝试连接到 Internet

标签 clickonce offline

我正在尝试部署使用 VS2008 Express 构建的应用程序。这个想法是将文件上传到网络服务器(通过网站安装),同时为一些没有互联网连接的用户提供离线 (CD) 安装。

在发布选项中,我留下了 Installation Folder URL空白,我取消了选项 The application should check for updates (因为我正在手动处理更新检查)并且我填写了选项 Update location (if different than publish location) .

当我尝试测试离线安装时,无法安装该应用程序。我收到错误消息“应用程序下载未成功。请检查您的网络连接...”,当按下“详细信息”按钮时,我看到以下错误:

  • Activation of C:\Install\myapp.application resulted in exception. Following failure messages were detected:


为什么虽然所有文件都存在,但安装程序试图从 Internet 下载文件?

最后,当我从 Update location 中删除服务器 URL 时,一切正常。每次需要更新应用程序时,是否都需要创建两个不同的设置?或者还有其他解决方案吗?

编辑 :

进一步的测试证明,离线安装在 Windows XP 中可以正常工作,但在 Windows 7 中不起作用。在后一种情况下,使用相同的安装文件,安装程序尝试从 Internet 下载应用程序,而不是使用本地的 .部署文件。

没有 ClickOnce 大师可用?

最佳答案

ClickOnce 运行程序将尝试连接到指定的 URL,无论文件是否已在本地存在。您将需要两个构建配置来支持 CD 和基于 Web 的部署。以下是来自Microsoft's documentation的相关信息.

To enable this deployment strategy in Visual Studio, click From a CD-ROM or DVD-ROM on the How Installed page of the Publish Wizard.

To enable this deployment strategy manually, change the deploymentProvider tag in the deployment manifest so that the value is blank. In Visual Studio, this property is exposed as Installation URL on the Publish page of the Project Designer. In Mage.exe, it is Start Location.



您可以自动执行此操作,因此您无需每次都手动编辑项目设置(即使是小错误也会导致客户端无法更新)。不幸的是,项目的 ClickOnce 设置似乎不受标准构建配置的控制,因此您需要对项目文件(也是 MSBuild 脚本)或使用任何工具的单独构建脚本进行一些手动编辑用。

您需要覆盖的值是 InstallUrl。对于 CD-ROM 安装版本,它应该是空白的。然后,您的构建将需要构建这两种配置。这个网站上有很多例子,其他网站有关于如何做到这一点的说明。

关于ClickOnce CD 安装程序尝试连接到 Internet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679889/

相关文章:

javascript - 是否可以缓存整个网站,包括开始 html 页面和在没有互联网连接的情况下启动?

gradle - 有没有办法将 Gradle 插件从存储库下载到 Gradle 缓存并在离线模式下使用它?

javascript - 主机Socket.IO离线

c# - 缺少 ClickOnce Url 参数

.net - 检测没有 UserAgent 字符串的 .NET 版本

visual-studio - 缺少 Visual Studio Clickonce 特定目标选项卡

caching - HTML5 离线 : browser loads cached index page even when online

html - 动态创建页面的 Phonegap 离线应用程序

clickonce - 如何将自定义 URL 协议(protocol)与 ClickOnce 应用程序关联?

.net - 使用 ClickOnce 部署 System.Net.Http.dll