The core idea would be to find the difference between the set of files currently installed on someone's computer and the newest set of files that should be installed on that person's specific computer; and (once these differences are determined) download whatever new files are missing and discard whatever old files are obsolete; hopefully in an "atomic" way (that makes it impossible for someone to start the software at the wrong time and get a mixture of old and new).
Note that determining "should be installed on that person's specific computer" may involve an amount of logic. It can depend on which OS the user actually has (32-bit Windows XP, 64-bit Windows 8?), or which CPU they have (with/without AVX?), or which version of DirectX or Java or whatever they have, or whether they're a registered user or not (e.g. only using a free version with restricted features), or whether their video card can handle high detail textures or not, or whether they've enabled various optional features, or...
Also note that the same system could (should?) be used for installing and uninstalling software. For installing software, the set of files currently installed is "nothing" (so the auto-updater knows it needs to download everything in the set of new files). For uninstalling software, you can just pretend that the newest set of files that should be installed is "nothing" and discard the set of currently installed files.
In addition; I'd want some security and/or fault tolerance. For example, maybe the files are encrypted with the provider's private key, and the auto-updater uses the provider's public key to decrypt the files. Maybe every file downloaded has an MD5 checksum and (after decrypting?) the auto-updater makes sure the file's data actually does match the MD5 checksum.
Let's talk about bandwidth. Is the data compressed? If there's a 123 MiB file and the new version of that file only has 12 bytes that are different; do you download the entire 123 MiB file, or do you only download something that describes the differences ("insert 4 bytes here, replace 6 bytes there, then append 2 bytes on the end")?
What does the server store? Does it store plain files only (and compress, encrypt, etc. every single time the file is downloaded); or does the server store pre-compressed and pre-encrypted files, plus store pre-computed descriptions of how to convert old files into new files (so if we're updating that 123 MiB file the server can quickly provide the "insert 4 bytes here, replace 6 bytes there, then append 2 bytes on the end" description)?
Now; let's look at your "refine.txt". Do the technical details within "refine.txt" that describe how it will actually work, cover anything important at all?