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

28

ClickOnce 是否可以配置为删除旧的发布目录?

或者

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

当前,每次进行 ClickOnce 发布时都会在 IIS 服务器上创建一个新目录。这个新目录包含了整个应用程序的副本,会被下载。旧目录似乎不再使用,并且占用了大量空间。

以下是被创建的目录名称样本。您可以看到应用程序版本号被用于名称中。
EduBenesysNET_1_0_1_0
EduBenesysNET_1_0_1_1
….
EduBenesysNET_1_0_1_192
EduBenesysNET_1_0_1_193

我们已经发布了194个版本的构建,每个目录仍然存在。由于一个构建的大小约为50MB,您可以看到保留旧目录将开始消耗磁盘空间。

我们的应用程序工作方式是您始终需要下载最新版本。您没有跳过下载的选项,因此我希望删除旧目录不会成为问题。

2个回答

14

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

然而,仔细一看就会发现观察到的发布行为实际上不是ClickOnce技术的特性,而是Visual Studio Publish Wizard的一个功能 - 例如在ClickOnce Publishing Process中的ClickOnce publish folder structure一节中看到:

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

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

不幸的是,VS发布向导似乎确实没有提供删除旧版本的选项,至少它既不可见也没有记录在某个地方。但是,考虑到生成过程产生的文件夹结构只是一个构件,您也可以添加自定义构建步骤来完成这个任务 - 找出细节(例如访问VS自动化属性以导出最后一次发布的版本等)超出了您的问题的范围;)

关于你的子问题:

我希望删除旧目录不会成为问题。

当然不是问题,这仅取决于您最终希望保留多少个版本以便进行回滚操作,例如请参见Can I delete previous old versions from Publishing Location created by ClickOnce?


我添加了第二个问题,问是否有人编写了删除已发布目录的代码。很好的主意Opel,将其移动到单独的问题中。然后,我会链接回这个问题。 - Gerhard Weiss

3
简短的回答是,这不是 Visual Studio 或 ClickOnce 部署中内置的功能,您需要找到另一种方式来实现此操作,例如通过在服务器上运行脚本。
如果您将更新作为所需更新推送,则可以删除除当前版本之外的所有版本。如果您不这样做,那么您需要保留两个版本以防用户回退一个版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接