【问题标题】:How to remove previous versions of an offline clickonce application如何删除以前版本的脱机 clickonce 应用程序
【发布时间】:2011-10-21 12:45:48
【问题描述】:

我们有一个 net 4.0 winforms 应用程序,我们通过单击一次将其发布到客户端 PC。安装大小约为 80 MB。应用程序离线可用,更新发生在应用程序启动时使用

ApplicationDeployment.CurrentDeployment.Update

每次我们更新应用程序时,一切正常,每个客户端都会更新。然而,应用程序缓存的大小不断增长......我们注意到 LocalAppData 文件夹中保存了两个以上的版本。 clickonce 安装文件夹的大小超过 1GB。

ClearOnlineAppCache 仅适用于在线应用程序,我们没有找到任何信息来清理离线应用程序的 LocalAppData。

有什么方法可以从我们的客户端电脑管理 LocalAppData 文件夹中我们应用程序的早期版本?

更新: 我们删除了我们的自定义更新代码,并使用了 Clickonce 框架的更新机制。现在旧版本已被正确删除,LocalAppData 中只保留了两个版本。我仍然不知道为什么我们通过自定义更新代码更新时会保留所有版本。

【问题讨论】:

  • 这里有同样的问题。由于我们自定义的更新行为,只有我们不能更改为默认值。

标签: winforms installation clickonce


【解决方案1】:

我以前见过这个问题,但在回答之前我与 Microsoft 的 ClickOnce 负责人进行了澄清。

它保留了两个版本的部署,并且每个程序集都有额外的文件夹。在处理更新时,ClickOnce 通过与它已经缓存的程序集进行比较来确定哪些文件已更改,并且它只下载已更改的文件。部署文件夹具有指向单独文件夹中程序集的硬链接。因此,您可能会看到其他文件,但它实际上不是文件,它是指向仅程序集文件夹中文件的链接。 Explorer 会将其显示为文件,但事实并非如此。因此,除非您的磁盘空间不足并且只关心文件夹大小,否则请注意 Windows 资源管理器报告的信息可能不准确。

【讨论】:

  • 我们还没有用完磁盘空间,但是 CheckForUpdate 方法需要很长时间来检测是否有新的更新可用。当我们清除 LocalAppData 文件夹的文件并运行我们的应用程序时,CheckForUpdate 会正常运行,直到第 5 次或第 6 次更新...
【解决方案2】:

这个问题有答案here

我写了一个函数来清理客户端的旧 ClickOnce 版本。

在我的机器中,我释放了 6Gb 的空间。我什至不想知道旧版本组织范围内使用的总空间...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多