7

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

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

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

  • 激活 C:\Install\myapp.application 导致异常。检测到以下故障消息:

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

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


编辑

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

没有可用的 ClickOnce 专家?

4

2 回答 2

5

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

若要在 Visual Studio 中启用此部署策略,请单击“发布向导”的“安装方式”页面上的“从 CD-ROM 或 DVD-ROM”。

要手动启用此部署策略,请更改部署清单中的 deploymentProvider 标记,使该值为空白。在 Visual Studio 中,此属性在项目设计器的发布页面上显示为安装 URL。在 Mage.exe 中,它是开始位置。

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

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

于 2009-11-09T08:24:10.977 回答
2

我有一个类似的问题,除了我在 VS2015 中发布了一个更新项目的应用程序。我的发布设置是:

  • 用户将如何安装应用程序 - “从 CD-ROM 或 DVD-ROM”
  • 该应用程序不会检查更新

我会从我的开发机器(例如mymachine01)发布它,它与 Setup.exe 捆绑在一起的 .application 文件总是包含这样的一行:

<deploymentProvider codebase="http://mymachine01/Application20Name/Application20Name.application" />

我会将其压缩,然后将其放到另一台机器上以测试安装程序,我会收到Application cannot be started. Contact the application vendor.错误消息。单击详细信息按钮将显示The remote name could not be resolved应用程序试图访问的错误mymachine01。为了解决这个问题,我使用了以下步骤:

  1. 在VS中右键单击项目并选择属性
  2. 转到发布选项卡
  3. 点击“选项”
  4. 选择“清单”
  5. 选中“排除部署提供商 URL”
于 2015-11-24T16:17:24.943 回答