可以将ClickOnce配置为删除旧的已发布目录吗?

时间:2010-09-30 20:58:37

标签: visual-studio visual-studio-2008 clickonce publish

可以将ClickOnce配置为删除旧的已发布目录吗?

是否有人编写了一些代码来删除这些发布目录(可能保留最后10个)?

目前,每次完成ClickOnce Publish时,都会在IIS服务器上创建一个新目录。此NEW目录包含整个应用程序的副本,该副本将被下载。旧目录似乎不再使用,只是占用了大量空间。

以下是正在创建的目录名称的示例。如您所见,名称中正在使用应用程序版本号 EduBenesysNET_1_0_1_0
EduBenesysNET_1_0_1_1
...。
EduBenesysNET_1_0_1_192
EduBenesysNET_1_0_1_193

我们有194个(零基础)版本,每个目录都在那里。如果一个构建的大小约为50mb,你可以看到如何将旧目录保留在磁盘空间中。

我们的应用程序的工作方式是您始终必须下载最新版本。您没有跳过下载的选项,所以我希望删除旧目录应该不是问题。

2 个答案:

答案 0 :(得分:13)

好问题(+1) - 人们会认为这应该是可能的......

仔细观察后发现,观察到的发布行为实际上并不是ClickOnce技术的一个特征,而是Visual Studio Publish Wizard中的一个 - 参见例如 ClickOnce发布文件夹结构部分ClickOnce Publishing Process

  

如果使用Mage或自定义工具手动生成或更新ClickOnce应用程序发布,您不受此文件夹和文件结构的限制。对于任何特定的ClickOnce出版物,依赖链包括以下内容:[...] [强调我的]

Walkthrough: Manually Deploying a ClickOnce Application得出相同的结论,即VS使用的文件夹结构只是一种(合理的)约定/方法。

不幸的是,VS发布向导似乎并没有提供删除旧版本,至少它既不可见也不记录在某处。但是,鉴于生成的文件夹结构只是构建过程的工件,您可以添加一个自定义构建步骤来执行此操作 - 确定详细信息(即访问VS自动化属性以获取上次发布的版本等)是但是在你的问题范围之外;)

关于你的子问题:

  

我希望删除旧目录应该不是问题。

绝对不是问题,它只取决于您最终要为回滚操作保留多少这些问题,请参阅例如Can I delete previous old versions from Publishing Location created by ClickOnce?

答案 1 :(得分:2)

简短的回答是,这不是Visual Studio或ClickOnce部署中内置的东西,您必须找到另一种方法来执行此操作,可能是通过您在服务器上运行的脚本。

如果您按需要更新推送更新,则可以删除当前版本以外的所有版本。如果你不这样做,你将需要保留两个版本,以防用户恢复版本。