当最终用户正在安装所需的 .NET 运行时时,ClickOnce 应用程序发布失败
Posted
技术标签:
【中文标题】当最终用户正在安装所需的 .NET 运行时时,ClickOnce 应用程序发布失败【英文标题】:ClickOnce application publishing fails when an end-user is in progress of installing required .NET runtime 【发布时间】:2014-12-17 21:30:42 【问题描述】:尝试发布,我反复收到此错误:
Unable to add 'setup.exe' to the Web site. The file 'setup.exe' already exists in this Web site.
我正在运行 VS2013,发布“仅在线可用”应用程序,因为过去我遇到过奇怪的问题,即更新导致用户在使用“离线”选项。
这很好用。但是,我正在使用 .NET 4.5.2 创建这个项目,这意味着我的所有最终用户都必须更新。这也很好,因为我将运行时包含在我的项目的 Application Files 中。
在进行一些测试运行时,我偶然发现了一个巨大的问题/烦恼:当用户运行已发布文件夹中的 setup.exe 时,.NET 更新的安装程序运行,但在此更新期间,我无法发布为文件显然正在使用中。这在过去 VS2010 中不是问题。
有什么解决方法吗?想象一下,当我尝试发布更新时,有人将 .NET 安装程序长时间停留在屏幕上。问题挺大的。
附言此答案不适用,因为它不是实际的权限问题: Clickonce publish - "The file 'default.htm' already exists in this Web site"
【问题讨论】:
【参考方案1】:首先,我认为这个“问题”即使在 VS2010 中也一直存在,只是以前从未发生过。
现在的解决方法:
-
在发布更新之前禁用网站/Web 应用程序。
始终先发布到中间文件夹,然后再发布到 PROD。
【讨论】:
我可能遗漏了一些东西,但发布到中间文件夹不会解决问题吗?这将允许我发布,是的,但在我最终能够发布或复制到官方文件夹之前,没有人会得到实际的更新。 setup.exe 和 Application.application 文件之间有区别吗?我不应该让他们使用 .exe 吗? @Keith setup.exe 是一个引导程序,可以帮助您安装先决条件,然后执行 .application,它将保证目标环境已准备好执行您的应用程序。如果您没有任何先决条件,那么要求您的用户仅运行 .application 应该是安全的,但是如果您决定包含先决条件会发生什么? 嗯,没错。我想我需要做的是避免它被“使用”还要求我的用户单独安装 .NET 4.5.2。 Infragistics dll 等其他先决条件又如何呢?运行 .application 会安装这些吗? 没关系,我懒得这么问。我可以在别人的机器上运行一些测试。【参考方案2】:如果您只想解除违规者的锁定,请右键单击桌面上的我的电脑,右键单击树中的计算机管理并选择“连接到另一台计算机”。输入安装文件所在服务器的名称。展开共享文件夹 => 打开文件。找到安装文件上的锁,右键单击它并选择关闭打开文件。
【讨论】:
这是一个有效的解决方法,在紧急情况下使用了多次,但它没有解决根本问题。以上是关于当最终用户正在安装所需的 .NET 运行时时,ClickOnce 应用程序发布失败的主要内容,如果未能解决你的问题,请参考以下文章