Auto Patcher

Started by
7 comments, last by simpler 11 years, 6 months ago
Hi GameDev!

I just finished the first version of my new program Auto Patcher and thought I should start a topic here to get some response.

Auto Patcher is a small program made for other developers that makes sure that the people using your applications allways have the latest version. It works by uploading files to a FTP server and then comparing the users version against the one on the server to find out if there is an update ready. If there is one, it will download it and replace the old version and then start the application when ready.

I thought this was something pretty useful for myself since I now can assume that the (few) people testing my programs allways have the latest version. They never have to visit my homepage to download the latest one, Auto Patcher will do it for them. I think I will use Auto Patcher with all my programs and the nice thing is that it's totally generic, it can be used with anything. So feel free to try it out yourself!

The only thing you need is a FTP server and then you're ready to roll.

It is written in C++ with the Win32 API so the only supported platform is Windows.

Here's some pictures:

xUN3C.png
Credentials dialog

fS2mK.png
Patcher dialog

yBSQL.png
The client app

I've written a small tutorial on my homepage explaining how to use it. If something is unclear or doesn't make sense let me know.
You can download Auto Patcher from the top of my projects list.
The source code can be found on github.

Thanks for reading! smile.png
Advertisement
Here's the changelog for version 1.1


v1.1
- Added a password dialog when launching the uploader
- Added multithreading when uploading and downloading files
- Fixed the window icon not being visible
- Fixed a bug where both programs got the "Not responding" status when managing large files
- The data.sef and patch_notes.txt files should now allways get uploaded
- Centered the patch notes window
[/quote]

You can download the latest version from the top of my projects page.
v1.2
- The user now can choose if he wants to update or not
- Fixed proper handling of connection errors
- Added a "Auto run" checkbox that specifies whether the executable should start instantly or not when there's no new updates
- Fixed passwords with certain special characters not getting decrypted properly[/quote]

Download the latest version from here.
1.3
- Fixed bug when starting the specified program
- Made AutoPatcher.exe run minimized if there's no new version and no connection errors
- Improved the speed and reaction time of both programs[/quote]

Download it from the top of my projects list.
A tip is to never give the client side any access to any ftp credentials, doesn't matter if the info is encrypted or not, because you can still always get the password and username from the memory once it's decrypted for the application itself to use :)...
Yeah I know reverse engineering is a possibility but I don't see any other way to accomplish what Auto Patcher does without letting the client have the FTP credentials. If you got an idea on how to make it safer, please let me know.
I've written several of these type of programs, excellent choice for updating programs. May I suggest you do it through HTTP instead. No login, no password needed and the files can be hosted on just about any server out there. Plus users can't change the files on the host, only download them.
Also, do you use compression for the files that are stored on the server?

******************************************************************************************
Youtube Channel


I've written several of these type of programs, excellent choice for updating programs. May I suggest you do it through HTTP instead. No login, no password needed and the files can be hosted on just about any server out there. Plus users can't change the files on the host, only download them.
Also, do you use compression for the files that are stored on the server?


Yes the files are uploaded in a .zip archive. I will definitly have to check out how to do it through HTTP instead. Am I in the right direction if I consider using libcurl?

1.4
- Fixed bug with the progress bar not moving
- Added a text label showing the data received[/quote]

Download it from the top of my projects list.

This topic is closed to new replies.

Advertisement