Another way to do the checks would be to actually have the updater client unpack each file in a Zip/PK4 and check if: a.) it is possible to even open the archive, b.) it is possible to extract the file and c.) the extracted CRC matches the CRC value stored in the archive (or do a running sum of extracted CRCs). The Python libraries allow you to extract in chunks to memory so temp files/dir hassles shouldn't be a problem. To some extent the updater already does this after it downloads a Zip file. But doing the full check for all files at the start of the update would probably take a very long time, so maybe make this an option like --deep-check. The main reason for going Python in my mind would be for the GUI stuff. Serps and I seem to have found a reasonably portable gui library for Python so I'm going to start experimenting with that soon.