C# ClickOnce部署将保留多个版本(是,超过两个)

C# ClickOnce部署将保留多个版本(是,超过两个),c#,visual-studio,deployment,clickonce,C#,Visual Studio,Deployment,Clickonce,我有一个应用程序,它将所有旧版本保留在我的磁盘上。它是一个公司内部应用程序,需要频繁更新,因此这对于快速扩大备份规模来说是一场灾难 根据文档和其他StackOverflow问题,应该只在磁盘上保留当前和以前的版本。但是,每次部署项目并升级客户端时,我都会得到所有EXE、DLL和数据文件的另一个副本。我没有对应用程序做任何更改,只是在VisualStudio中再次推动部署 如何解决此问题 这个问题似乎发生在Windows7和WindowsXP,以及64位和32位Windows上 我已经对安装版本的

我有一个应用程序,它将所有旧版本保留在我的磁盘上。它是一个公司内部应用程序,需要频繁更新,因此这对于快速扩大备份规模来说是一场灾难

根据文档和其他StackOverflow问题,应该只在磁盘上保留当前和以前的版本。但是,每次部署项目并升级客户端时,我都会得到所有EXE、DLL和数据文件的另一个副本。我没有对应用程序做任何更改,只是在VisualStudio中再次推动部署

如何解决此问题

这个问题似乎发生在Windows7和WindowsXP,以及64位和32位Windows上

我已经对安装版本的文件夹进行了区分,以下文件有所不同:

MyApp.exe.manifest
MyApp.exe.cdf-ms
MyDll1.cdf-ms
MyDll2.cdf-ms
没有实际的可执行文件不同,也没有
MyApp.manifest
MyDll1.manifest

另一种选择怎么样。在运行时查找包含我的应用程序的其他文件夹并将其删除是否安全?那会弄坏什么东西吗


ClickOnce只是一个明显的神秘黑匣子吗?

您是否立即检查它?他们一天左右都不走?ClickOnce清道夫服务应该出现并删除旧版本。如果将最新版本作为所需更新推送,是否会删除其他版本?(为此,请在更新对话框中将所需的最低版本设置为您正在部署的相同版本)。

清道夫服务是ClickOnce引擎的一部分;它是自动运行的,而不是您可以直接访问的。它应该出现并清理旧版本

关于min版本的问题。如果部署新版本并将最低必需版本设置为新版本#,是否将应用程序更新为该版本?然后将前一个留在磁盘上

你能看到什么样的图案吗?缓存的部署数量是否有限制

还有一些关于阴影文件夹的东西,它正在我的记忆边缘搔痒;文件实际上并不存在。我会做一些调查,看看我的笔记,看看能找到什么

它是什么样的应用程序?WinForms/WPF/VSTO

当你说它正在缓存文件夹时,它是哪个文件夹?例如,对于winforms应用程序,为每个版本创建了两个文件夹(xxxxtion…和xxxxexe…或类似的内容),再加上一堆文件夹——为部署中包含的每个程序集创建一个文件夹——这些都是程序集的缓存版本,以避免每次未更改时都必须下载它们。您看到的是xxxxtion和xxxxexe文件夹的倍数吗

从文档中:

通过限制ClickOnce缓存大小的配额,在线托管的ClickOnce应用程序可以占用的空间量受到限制。缓存大小适用于所有用户的在线应用程序;单个部分受信任的在线应用程序只能占用配额空间的一半。已安装的应用程序不受缓存大小的限制,也不计入缓存限制。对于所有ClickOnce应用程序,缓存仅保留当前版本和以前安装的版本。
默认情况下,客户端计算机有250 MB的存储空间用于在线ClickOnce应用程序。数据文件不计入此限制。系统管理员可以通过更改注册表项HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\OnlineAppQuotaInKB(以KB为单位表示缓存大小的DWORD值)来扩大或减少特定客户端计算机上的此配额。例如,为了将缓存大小减少到50MB,您可以将该值更改为51200,我想我终于找到了这个值。出于某种未知(坦白说,也是不可接受的)原因,如果新版本正在运行,旧版本的清理将不会发生——它只是默默地失败

清理尝试在旧版本退出时运行,但由于我重新启动了应用程序,新版本已经启动,阻止了清理


另外,请注意,其他答案中提到的“清道夫服务”似乎完全是捏造的。我没有发现任何此类服务的文档,也没有任何证据表明它正在运行。清理似乎是作为clickonce更新过程的一部分以内联方式进行的。

请澄清,您的意思是所有旧版本仍存储在客户端计算机上?所有版本都应保留在部署位置,直到/除非您删除它们,因为您可能在同一时间在不同版本上有不同的用户。是的,在客户端计算机上,隐藏在用户文件夹中如果在发布设置中指定所需的最低版本号,是否会产生影响?不,似乎不会产生影响在客户端保留任何用户设置或配置吗?这是一个黑暗中的镜头——只是想知道,为了在升级过程中保存设置,它是否必须保留创建或保存设置的第一个版本?所需的最低版本不起任何作用。有没有办法立即运行此“ClickOnce清道夫”服务?是否有关于此清道夫服务的任何文档?我还没有听说过它。此外,我创建了一个新的windows窗体应用程序,并用click once进行了部署,但它确实运行正常,只剩下两个版本。因此,我的真实应用程序有一些不同之处,但我在它们的发布配置中找不到任何差异。是的,一天后它们仍然存在。你能提供有关此清道夫服务的MSDN链接吗?我找不到它,但我可能只是错过了这里显而易见的一点。它是一个winforms应用程序,有您描述的两种类型的文件夹。只有两个“exe”文件夹,其中包含应用程序