ClickOnce 如何执行应用程序更新

ClickOnce 使用应用程序部署清单中指定的文件版本信息来决定是否更新应用程序的文件。 更新开始后,ClickOnce 使用一种称为 文件修补 的技术来避免应用程序文件的冗余下载。

文件修补

更新应用程序时,ClickOnce 不会下载应用程序的新版本的所有文件,除非文件已更改。 而是将当前应用程序的应用程序清单中指定的文件的哈希签名与新版本清单中的签名进行比较。 如果文件的签名不同,ClickOnce 将下载新版本。 如果签名匹配,则该文件未从一个版本更改为下一个版本。 在这种情况下,ClickOnce 将复制现有文件,并在应用程序的新版本中使用该文件。 此方法可防止 ClickOnce 再次下载整个应用程序,即使只有一两个文件已更改。

文件补丁也适用于使用DownloadFileGroupDownloadFileGroupAsync 方法按需下载的程序集。

注释

ApplicationDeployment 类和System.Deployment.Application 命名空间中的 API 在 .NET Core 和 .NET 5 及更高版本中不受支持。 在 .NET 7 中,支持访问应用程序部署属性的新方法。 有关详细信息,请参阅 .NET 中的 Access ClickOnce 部署属性。 .NET 7 不支持 ApplicationDeployment 方法的等效项。

如果使用 Visual Studio 编译应用程序,则每当重新生成整个项目时,它将为所有文件生成新的哈希签名。 在这种情况下,所有程序集都将下载到客户端,尽管只有少数程序集可能已更改。

文件修补不适用于标记为数据并存储在数据目录中的文件。 无论文件的哈希签名如何,始终下载这些内容。 有关数据目录的详细信息,请参阅 在 ClickOnce 应用程序中访问本地和远程数据