当最终用户正在安装所需的 .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 应用程序发布失败的主要内容,如果未能解决你的问题,请参考以下文章

在使用 CodeSign 进行最终运行时“缺少所需的架构”

如果最终用户没有所需的库怎么办?

“错误:此 Java 实例不支持 32 位 JVM。” [1] “请安装所需的版本。”

使用 asp.net core 删除所需的验证

创建命名管道 (WCF) 所需的最低操作系统权限

当用户选择“在新选项卡中打开”/“在新窗口中打开”而不是使用 html/javascript 点击时如何到达所需的页面