我正在尝试部署使用VS2008 Express构建的应用程序。我们的想法是将文件上传到网络服务器(通过网站安装),同时为一些没有互联网连接的用户提供离线(CD)安装。
在发布选项中,我将Installation Folder URL
留空,我取消选中The application should check for updates
选项(因为我正在手动处理更新检查),我填写了选项Update location (if different than publish location)
当我尝试测试脱机安装时,无法安装该应用程序。我收到错误“应用程序下载没有成功。请检查您的网络连接...”,当按下详细信息按钮时,我正在读取以下错误:
- 激活C:\ Install \ myapp.application 导致例外。以下 检测到失败消息:
- 正在下载http://myserver.com/myapp.application 没成功。
- 无法连接到远程服务器
- 尝试对无法访问的网络进行套接字操作 195.42.142.11:80
为什么说,虽然所有文件都存在,但是安装是否试图从Internet下载文件?
最后,当我从Update location
中删除服务器URL时,一切正常。每次需要更新应用程序时,是否需要创建两个不同的设置?还是有另一种解决方案吗?
修改:
进一步的测试证明,离线安装在Windows XP中正常运行,但在Windows 7中不起作用。在后一种情况下,使用相同的安装文件,安装程序会尝试从Internet下载应用程序,而不是使用本地.deploy文件。
没有ClickOnce大师?
答案 0 :(得分:5)
ClickOnce运行器将尝试连接到指定的URL,无论文件是否已在本地存在。您将需要两个构建配置来支持CD和基于Web的部署。以下是Microsoft's documentation的相关信息。
启用此部署策略 Visual Studio,单击从CD-ROM或 在如何安装的页面上的DVD-ROM 发布向导。
启用此部署策略 手动,更改部署清单中的deploymentProvider标记,以使值为空。在Visual Studio中,此属性在“项目设计器”的“发布”页面上显示为“安装URL”。在Mage.exe中,它是Start Location。
您可以自动执行此操作,因此您不需要每次都手动编辑项目设置(并且可能会产生一个小错误,导致客户无法更新)。遗憾的是,项目的ClickOnce设置似乎不受标准构建配置的控制,因此您需要手动编辑项目文件(也是MSBuild脚本)或单独的构建脚本,无论您使用何种工具使用
您需要覆盖的值是InstallUrl。对于CD-ROM安装版本,它应该是空白的。然后,您的构建需要构建两个配置。本网站上有大量的例子,其他人也有关于如何做到这一点的说明。
答案 1 :(得分:2)
我有一个类似的问题,除了我在VS2015中发布了一个更近期项目的应用程序。我的发布设置是:
我会从我的开发计算机(例如mymachine01
)发布此文件,并将它捆绑在一起的.application文件与Setup.exe一起包含如下所示的行:
<deploymentProvider codebase="http://mymachine01/Application20Name/Application20Name.application" />
我会将其拉上然后将其放到另一台机器上以测试安装程序,我会收到Application cannot be started. Contact the application vendor.
错误。单击详细信息按钮会显示应用尝试访问The remote name could not be resolved
的{{1}}错误。为了解决这个问题,我使用了以下步骤: