当前位置: 首页 > 编程语言 > C#

ClickOnce部署会留下多个版本(没错,不止两个版本)分享

时间:2023-04-10 20:52:37 C#

ClickOnce部署会留下多个版本(没错,不止两个版本)我有一个ClickOnce应用,它把所有旧版本都留在我的磁盘上.这是一个经常更新的内部企业应用程序,因此这对于快速扩展我们的备份大小来说是一场灾难。根据文档和其他StackOverflow问题,它应该只将当前和以前的版本保留在磁盘上。但是,每次部署项目和升级客户端时,我都会得到所有EXE、DLL和数据文件的另一份副本。我没有对应用程序进行任何更改,只是在VisualStudio中再次推送部署。我怎么解决这个问题?该问题似乎出现在Windows7和WindowsXP以及64位和32位Windows上。我对已安装版本的文件夹进行了比较,发现以下文件不同:MyApp.exe.manifestMyApp.exe.cdf-msMyDll1.cdf-msMyDll2.cdf-ms没有实际的可执行文件,也没有MyApp。manifest,MyDll1.manifest等如何替换。在运行时找到包含我的应用程序的其他文件夹并删除它们是否安全?这会破坏什么吗?ClickOnce只是一个看似神秘的黑盒子吗?我想我终于明白了。由于一些未知的(坦率地说,这是不可接受的)原因,如果新版本正在运行,旧版本的清理将不会发生——它只是默默地失败。清理尝试在旧版本退出时运行,但由于我重新启动了应用程序,新版本已经启动,阻止了清理。另外,请注意,其他答案中提到的“清道夫服务”似乎完全是捏造的。我没有找到此类服务的任何文档,也没有找到它正在运行的任何证据。作为clickonce更新过程的一部分,清理似乎是内联发生的。清道夫服务是ClickOnce引擎的一部分;它会自动运行,而不是您可以直接访问的东西。它应该来清理旧版本。关于最小版本。如果您部署新版本并将最低最低要求版本设置为新版本#,它是否会将应用程序更新到该版本?然后将以前的文件留在磁盘上?你能看到任何模式吗?它缓存的部署数量是否有限制?还有一些关于影子文件夹的东西让我记忆犹新;这些文件并不真正存在。我会做一些研究并查看我的笔记,看看我能找到什么。它是什么类型的应用程序?WinForms/WPF/VSTO?当你说它是缓存文件夹时,它是哪个文件夹?例如,对于winforms应用程序,为每个构建创建两个文件夹(xxxxtion...和??xxxxexe...或类似的东西)加上一堆文件夹-一个用于部署中包含的每个程序集-这些是程序集的缓存版本这样就不必在每次没有更改时都下载它们。您看到的xxxxtion和xxxxexe文件夹是倍数吗?你现在检查一下吗?他们甚至在一天左右后都没有离开?ClickOnce清道夫服务应该启动并删除旧版本。如果您将最新版本作为必需更新推送,是否会删除其他版本?(为此,请将“更新”对话框中的最低要求版本设置为您正在部署的相同版本)。我知道这个问题有点老了,但我们最近遇到了这个问题,我不确定为什么。对于某些用户来说,似乎只是偶尔发生。我们尝试实现一个代码,可以部分删除..Apps2.0目录下的一些旧文件夹,但是当回滚到以前的版本时,如果以前的版本文件夹应该在那里但被我们的代码删除了,那么ClickOnce不会'不要检查它是否被删除并重新下载,而是假设它仍然存在,然后安装就会损坏,IT需要为每个用户手动重新安装,然后才能再次使用该应用程序!如果您有50多个用户,那就太糟糕了。如果有人知道强制ClickOnce在更新之前/之后重新下载所有文件依赖项的方法,我想知道!如何删除清除Click-Once(版本控制)缓存来自文档:在线托管的ClickOnce应用程序受限于ClickOnce缓存大小配额占用的空间量。缓存大小适用于所有用户的在线申请;个别部分受信任的在线应用程序仅限于占用一半的配额空间。安装的应用程序不受缓存大小的限制,并且不计入缓存限制。与所有ClickOnce应用程序一样,缓存仅保留当前版本和以前安装的版本。默认情况下,客户端计算机有250MB的联机ClickOnce应用程序存储。数据文件不计入此限制。系统管理员可以通过更改注册表项HKEY_CURRENT_USERSoftwareClassesSoftwareMicrosoftWindowsCurrentVersionDeploymentOnlineAppQuotaInKB来扩大或减少特定客户端计算机上的此配额,这是一个DWORD值,表示缓存大小(以千字节为单位)。例如,要将缓存大小减小到50MB,可以将此值更改为51200每个人都有用,需要了解更多有关C#的学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: