I'm on mobile so I can't test it atm, but this looks like a really cool project!
A few things that I think you can improve (this is only from looking at the code, so I may not get the full picture):
Move initialization logic (creating directories, etc.) into separate function instead of in the file scope
Instead of downloading CC every time the program is opened, check for updates using builds.json; as update logic gets more complex, move updating to separate class
Detect OS using `os.name`/`sys.platform`/`platform.system()` (see here) + `is_64bit = sys.maxsize > 2**32` to download the correct binary
Line 21-22: Change `finally: "Do nothing"` to `except: pass`; `finally` does nothing to stop errors because there's nothing to catch them; `pass` is a better way to say `"do nothing"`