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

时间:2018-02-17 05:05:23

标签: visual-studio github-api

所以我用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,然后显示更新可用。

1 个答案:

答案 0 :(得分:1)

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

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

相关问题