如何将应用程序版本与其github版本进行比较?

问题描述 投票:1回答:1

所以我用visual studio winforms构建了一个AwesomeApplication.exe,它有一个带有发布的公共存储库。

我想在应用程序中添加更新检查程序(通知用户可以下载新版本)。

我可以通过github api获取最新的发布信息:https://developer.github.com/v3/repos/releases/#get-the-latest-release

但应用程序并不“知道”哪个github发布标签或版本,除非我在应用程序设置中手动输入(在构建之前)?然后使用api,将该硬编码版本字符串与github release标记进行比较。这是可能的,但需要一点太多的手工工作..想知道还有其他选择吗?

我的发布过程是:

  • 在visual studio中构建应用程序
  • 手动压缩exe
  • 手动将版本和上传zip添加到存储库

解决方案,@ VonC链接的修改版本:

  • 添加visual studio prebuild事件以获取当前最新版本标记(我的prebuild脚本启动powershell以访问github api:https://gist.github.com/unitycoder/c4c5330ad3494ee5b2344a0a86324a3d
  • 获取的标记作为PreviousVersion.txt保存在项目文件夹中,该项目在项目中设置为EmbeddedResource(CopyToOutput设置为“Do Not Copy”,因为我不想将额外的文件添加到文件夹中)
  • 当用户单击应用程序中的“检查更新”按钮时,读取嵌入的PreviousVersion.txt并使用https://developer.github.com/v3/repos/releases/#get-the-latest-release将其与当前可用的github发布标记进行比较
  • 如果字符串不同,则表示用户必须使用旧版本

关于这一点的小更新:实际上在上面的检查中,字符串总是不同的,因为在编译时当前最新版本是1.10,而在编译和添加新版本之后,它已经是1.11(并且编译时字符串是老1.10)。因此临时修复是浮动或int解析您的版本标记号,比较它是否大于0.1或1,然后显示更新可用。

visual-studio github-api
1个回答
1
投票

您可以在exe中嵌入当前版本:请参阅“Embed git commit hash in a .Net dll”。

这样,您的应用程序可以将其内部版本(基于git describe --long,其中包括最接近的标记)与最新版本的版本(基于标记)进行比较

© www.soinside.com 2019 - 2024. All rights reserved.