如何将应用程序版本与其 github 版本进行比较?
How to compare application version to its github releases?
所以我用 visual studio winforms 构建了一个 AwesomeApplication.exe,
它有一个 public 版本库。
我想向应用程序添加更新检查器(通知用户新版本可供下载)。
我可以通过 github api 获取最新版本信息:
https://developer.github.com/v3/repos/releases/#get-the-latest-release
但是应用程序没有 "know" github 发布标签或版本,
除非我在应用程序设置中手动输入(在构建之前)?然后使用 api,将硬编码版本字符串与 github 发布标签进行比较。那是可能的,但是需要太多的手动工作..想知道还有其他选择吗?
我的发布过程是:
- 在 visual studio
中构建应用程序
- 手动压缩 exe
- 手动添加版本并将 zip 上传到存储库
解决方法,修改版@VonC link:
- 添加 visual studio 预构建事件以获取当前最新版本标签(我的预构建脚本启动 powershell 以访问 github api: https://gist.github.com/unitycoder/c4c5330ad3494ee5b2344a0a86324a3d )
- 获取的标签在项目文件夹中保存为PreviousVersion.txt,它在项目中设置为EmbeddedResource(CopyToOutput设置为"Do Not Copy",因为我不希望文件夹中有额外的文件)
- 当用户单击应用程序中的 "Check Updates" 按钮时,我会读取嵌入的 PreviousVersion.txt 并将其与使用 https://developer.github.com/v3/repos/releases/#get-the-latest-release[=39= 的当前可用 github 发布标签进行比较]
- 如果字符串不同,则意味着用户必须使用旧版本
对此的小更新:
实际上,通过上面的检查,字符串总是不同的,因为在编译时,当前最新版本是 1.10,而在编译和添加新版本之后,它已经是 1.11(编译时字符串是旧的 1.10)。
所以临时解决办法是浮动或解析你的版本标签号,
例如比较它是否大 0.1 或 1,然后显示可用更新。
您可以将当前版本嵌入到您的 exe 中:请参阅“Embed git commit hash in a .Net dll”。
这样,您的应用程序可以将其内部版本(基于 git describe --long
,其中包括最接近的标签)与最新发布的版本(也基于标签)进行比较
所以我用 visual studio winforms 构建了一个 AwesomeApplication.exe, 它有一个 public 版本库。
我想向应用程序添加更新检查器(通知用户新版本可供下载)。
我可以通过 github api 获取最新版本信息: https://developer.github.com/v3/repos/releases/#get-the-latest-release
但是应用程序没有 "know" github 发布标签或版本, 除非我在应用程序设置中手动输入(在构建之前)?然后使用 api,将硬编码版本字符串与 github 发布标签进行比较。那是可能的,但是需要太多的手动工作..想知道还有其他选择吗?
我的发布过程是:
- 在 visual studio 中构建应用程序
- 手动压缩 exe
- 手动添加版本并将 zip 上传到存储库
解决方法,修改版@VonC link:
- 添加 visual studio 预构建事件以获取当前最新版本标签(我的预构建脚本启动 powershell 以访问 github api: https://gist.github.com/unitycoder/c4c5330ad3494ee5b2344a0a86324a3d )
- 获取的标签在项目文件夹中保存为PreviousVersion.txt,它在项目中设置为EmbeddedResource(CopyToOutput设置为"Do Not Copy",因为我不希望文件夹中有额外的文件)
- 当用户单击应用程序中的 "Check Updates" 按钮时,我会读取嵌入的 PreviousVersion.txt 并将其与使用 https://developer.github.com/v3/repos/releases/#get-the-latest-release[=39= 的当前可用 github 发布标签进行比较]
- 如果字符串不同,则意味着用户必须使用旧版本
对此的小更新: 实际上,通过上面的检查,字符串总是不同的,因为在编译时,当前最新版本是 1.10,而在编译和添加新版本之后,它已经是 1.11(编译时字符串是旧的 1.10)。 所以临时解决办法是浮动或解析你的版本标签号, 例如比较它是否大 0.1 或 1,然后显示可用更新。
您可以将当前版本嵌入到您的 exe 中:请参阅“Embed git commit hash in a .Net dll”。
这样,您的应用程序可以将其内部版本(基于 git describe --long
,其中包括最接近的标签)与最新发布的版本(也基于标签)进行比较