|
9 | 9 | import sys |
10 | 10 | import platform |
11 | 11 | import uuid |
12 | | -from distutils.version import LooseVersion |
| 12 | + |
13 | 13 |
|
14 | 14 | try: |
15 | 15 | from urllib.request import build_opener, HTTPSHandler, ProxyHandler |
@@ -66,6 +66,27 @@ def version_to_bin(s): |
66 | 66 | return reduce(lambda a, b: a << 8 | b, list(map(int, s.split(".")))) |
67 | 67 |
|
68 | 68 |
|
| 69 | +def compare_versions(v1, v2): |
| 70 | + """Compare two version strings and return -1, 0, or 1.""" |
| 71 | + def parse_version(version): |
| 72 | + return [int(x) for x in version.split('.')] |
| 73 | + |
| 74 | + parts1 = parse_version(v1) |
| 75 | + parts2 = parse_version(v2) |
| 76 | + |
| 77 | + # Pad with zeros to make lengths equal |
| 78 | + max_len = max(len(parts1), len(parts2)) |
| 79 | + parts1 += [0] * (max_len - len(parts1)) |
| 80 | + parts2 += [0] * (max_len - len(parts2)) |
| 81 | + |
| 82 | + if parts1 < parts2: |
| 83 | + return -1 |
| 84 | + elif parts1 > parts2: |
| 85 | + return 1 |
| 86 | + else: |
| 87 | + return 0 |
| 88 | + |
| 89 | + |
69 | 90 | def download_file(url, file): |
70 | 91 | try: |
71 | 92 | xlog.info("download %s to %s", url, file) |
@@ -262,20 +283,20 @@ def check_update(): |
262 | 283 | test_version, stable_version = versions[0][1], versions[1][1] |
263 | 284 | if test_version != config.skip_test_version: |
264 | 285 | if update_rule == "notice-test": |
265 | | - if LooseVersion(current_version) < LooseVersion(test_version): |
| 286 | + if compare_versions(current_version, test_version) < 0: |
266 | 287 | xlog.info("checked new test version %s", test_version) |
267 | 288 | update_from_github.update_info = '{"type":"test", "version":"%s"}' % test_version |
268 | 289 | elif update_rule == "test": |
269 | | - if LooseVersion(current_version) < LooseVersion(test_version): |
| 290 | + if compare_versions(current_version, test_version) < 0: |
270 | 291 | xlog.info("update to test version %s", test_version) |
271 | 292 | update_from_github.update_version(test_version) |
272 | 293 | if stable_version != config.skip_stable_version: |
273 | 294 | if update_rule == "notice-stable": |
274 | | - if LooseVersion(current_version) < LooseVersion(stable_version): |
| 295 | + if compare_versions(current_version, stable_version) < 0: |
275 | 296 | xlog.info("checked new stable version %s", stable_version) |
276 | 297 | update_from_github.update_info = '{"type":"stable", "version":"%s"}' % stable_version |
277 | 298 | elif update_rule == "stable": |
278 | | - if LooseVersion(current_version) < LooseVersion(stable_version): |
| 299 | + if compare_versions(current_version, stable_version) < 0: |
279 | 300 | xlog.info("update to stable version %s", stable_version) |
280 | 301 | update_from_github.update_version(stable_version) |
281 | 302 | except IOError as e: |
@@ -421,4 +442,5 @@ def get_uuid(): |
421 | 442 | #get_uuid() |
422 | 443 | #check_update() |
423 | 444 | #sys_tray.serve_forever() |
424 | | - create_desktop_shortcut() |
| 445 | + # create_desktop_shortcut() |
| 446 | + print(compare_versions("2.1.1", "2.1.0")) |
0 commit comments