WinterLeaf Presents.... The AutoPatcher
by Luis Rodrigues · 02/27/2013 (1:19 pm) · 30 comments
So what is this AutoPatcher thinguy anyways?
Glad you asked.
This was initially presented here by Richard Preziosi, but has since been revamped and rebranded.
You can go there and read on a few of the more technical aspects of the process if you want. It's still pretty much accurate in that respect.
Go on, i'll wait...
Back? Good, let's continue then.
The AutoPatcher is a bundle pack with the patch maker app (AutoPatcher) and our own WLE updater library (AutoUpdater), that you can use to keep your customers up to date on the latest and greatest release of your software, be that a bug fix or an upgrade.
Here's how it works
First you use the AutoPatcher to create your update project. You feed information into two basic forms about your studio and the app your about to release, press a button and you get a log generated for you.You than place that log and the apps files online somewhere.
Next it's time for the AutoUpdater. The AutoUpdater is Net library, but don't worry, when you buy it you get a demo WPF app to give you a boost on this step. It's just about ready to use actually.
So you take that demo, XAML it into whatever look fits your app most, put some values in a couple of properties, add whatever else you want and what you get is na updater/launcher for your app.
If you ever played na MMO you know what i mean by that.
So now, finally, you just send your customers the launcher with the Updater Library and it takes care of getting your app from your online repository into your customers computer, ready to run.
Next time you want to update it, just generate a new log file, place the new log and new files online and the AutoUpdater takes care of things for you client side.
It's actually a lot simpler than it sounds. Trust me.Plus you'll get a step by step User Guide with it that probably goes way too deep on some aspects than it would probably be needed, so it's highly unlikly you'll ever have a problem with it.
We really tried to make the process fool proof.
Simplicity has an... interface
Just look at this cool and sleak interface if you don't believe me. That's the most complex form of the two you'll need to fill and as you can see, one of the fields automaticaly takes the value from the other form and most of the form's space is taken by the Update Notes area, which, by the way, is actually optional.
There's no words to explain how simple we made this for you.
The user guide itself will go with you field by field on every form, and lists one by one every event, method and property on the library. Plus goes with you step by step in taking the demo laucher and making it work for your app. That's how simple we made it for you.
Sure, creating the launcher itself takes a bit more effort, but most of the job regarding the update process is done for you in the demo we will be providing, and most of the remaining work is actually you changing the interface of the launcher in XAML to customize it to the look you want - so actually it's as much work as you want it to be.
So when is it coming out?
Really soon. In fact, right next month.We're aiming at releasing this and OneWorld at right about the same time. So keep an eye out for both this products and more coming your way from our studio.
Hope you enjoyed knowing a bit more about this product and get as psyched as i am about it.
Leave any questions and comments below and i'll answer as i can.
About the author
Started Programming age 12 on 48kb ZX Spectrum than moved to Turbo Pascal, Turbo C++, Delphi, Java, etc. Currently Working as a programmer of in-house tools 4 a technical translations company, and working with WinterLeaf Entertainment on off days
#2
To answer your questions:
1) Price is not yet set in stone, but we will let you know the moment it is.
2) Not out of the box, no. Usually products get added files or files get changed. Can you give us a use case where deletion is required? You could always download with the updater a text file with a list and have your software delete the files on that list, but if you can give us a use case that can is relevant we could update it for that option for a 1.1 release.
3) That is being discussed also with the price - i will though get Paul on this to give you a better answer on 1) and 3) keep coming here to get his answer on this
4) You can set the url as you like - so if you place there www.mydomain.com:81/myproduct, it will use port 81. You can also use ftp for the download
If you have any questions let me know - meanwhile i'll ping Paul for a better answer on 1) and 3) for you
Luis
02/28/2013 (12:09 pm)
Hi TarlyTo answer your questions:
1) Price is not yet set in stone, but we will let you know the moment it is.
2) Not out of the box, no. Usually products get added files or files get changed. Can you give us a use case where deletion is required? You could always download with the updater a text file with a list and have your software delete the files on that list, but if you can give us a use case that can is relevant we could update it for that option for a 1.1 release.
3) That is being discussed also with the price - i will though get Paul on this to give you a better answer on 1) and 3) keep coming here to get his answer on this
4) You can set the url as you like - so if you place there www.mydomain.com:81/myproduct, it will use port 81. You can also use ftp for the download
If you have any questions let me know - meanwhile i'll ping Paul for a better answer on 1) and 3) for you
Luis
#3
We are still looking into a competitive price.
Support tends to run on a yearly basis unless otherwise noted, but that year is for all upgrades, support, etc.
We got the finshed product in our hands a week or two ago. now we are doing last QA checks, documentation, web setup, EULAa, etc.... so once we are through this phase, we will have better answers for some of your questions. keep an eye here and on winterleafentertainment.com for updates on this and all of our other products.
Thanks!
Paul
02/28/2013 (12:32 pm)
Tarly:We are still looking into a competitive price.
Support tends to run on a yearly basis unless otherwise noted, but that year is for all upgrades, support, etc.
We got the finshed product in our hands a week or two ago. now we are doing last QA checks, documentation, web setup, EULAa, etc.... so once we are through this phase, we will have better answers for some of your questions. keep an eye here and on winterleafentertainment.com for updates on this and all of our other products.
Thanks!
Paul
#4
I was thinking of things like art assests... something is not seen during testing. Say collision does not work. You decide not to use that assest. Since you are not updating it, it will just sit in the clients game Dir. Taking up space. worst yet.. .a level is found to have such a flaw that all assests cannot be used.
If you just update files, and have no way to remove something, it just bloats the clients Game dir. If we had a way to mark files for deletion as they update, we then can control the issue rather than making ALL client delete nad reinstall. FOr those that pay for bandwidth in DL, I think being able to control deleting certain file vs clean install for all would be a HUGE benny.
and thank you both for such fast replies.
Tarly
02/28/2013 (1:04 pm)
IN response to question 2:I was thinking of things like art assests... something is not seen during testing. Say collision does not work. You decide not to use that assest. Since you are not updating it, it will just sit in the clients game Dir. Taking up space. worst yet.. .a level is found to have such a flaw that all assests cannot be used.
If you just update files, and have no way to remove something, it just bloats the clients Game dir. If we had a way to mark files for deletion as they update, we then can control the issue rather than making ALL client delete nad reinstall. FOr those that pay for bandwidth in DL, I think being able to control deleting certain file vs clean install for all would be a HUGE benny.
and thank you both for such fast replies.
Tarly
#5
While my software is in development I can see the files and file structure changing a lot.
I love the idea of a auto patcher, Its one of the items on my to do list, I was looking at this and nearly bought it in its original form, looks like I'll be picking this up next week.
Your resources are great, shame I have no use at all for 'One World' I love that idea as well :-)
[edit]
@Tarly, you beat me to it Lol, looks like we are on the same page. A not 2 clean way is to download a 0 length file to overwrite the depreciated file. hmm that brings up a question.
@Luis, can you use 0 length files as updates? say to download over an existing depreciated large file?
[/edit]
02/28/2013 (1:21 pm)
Hi, @Luis, I can see a need for #2 above, If I make a big modification, say change the way textures are used (combine several into a combined texture file) I would then want the old files removing, If I combine objects into a .zip file I may want to remove the old .dts's/.dae'sWhile my software is in development I can see the files and file structure changing a lot.
I love the idea of a auto patcher, Its one of the items on my to do list, I was looking at this and nearly bought it in its original form, looks like I'll be picking this up next week.
Your resources are great, shame I have no use at all for 'One World' I love that idea as well :-)
[edit]
@Tarly, you beat me to it Lol, looks like we are on the same page. A not 2 clean way is to download a 0 length file to overwrite the depreciated file. hmm that brings up a question.
@Luis, can you use 0 length files as updates? say to download over an existing depreciated large file?
[/edit]
#6
Have another thing planned to add to this that i can't discuss just yet too.
And Tarly, after 1st download, no downloads are of the full software, only the files that are new / have been changed get download. Minimum bandwidth usage unless the user stays a really long time without updating and you change the software almost completly
As for David's last question - I havent tested with 0 bytes (although there should be no reason not to work) - but 1 byte would be more than enough for this cases.
Or you could go with my file list idea.
Here's the gist of it:
With an update download a text file (or whatever you prefer) with the list of files to delete.
Then, when your launcher is done downloading the update, it will open up the file, and go about deleting all the files in that list
After that it can delete that file too and return control to the user so he /she can press play or whatever else you decide your launcher should have
02/28/2013 (1:53 pm)
@Tarly and David - good points, will put that in my todo list. Can't promise it will be there on release date but on an update sure.Have another thing planned to add to this that i can't discuss just yet too.
And Tarly, after 1st download, no downloads are of the full software, only the files that are new / have been changed get download. Minimum bandwidth usage unless the user stays a really long time without updating and you change the software almost completly
As for David's last question - I havent tested with 0 bytes (although there should be no reason not to work) - but 1 byte would be more than enough for this cases.
Or you could go with my file list idea.
Here's the gist of it:
With an update download a text file (or whatever you prefer) with the list of files to delete.
Then, when your launcher is done downloading the update, it will open up the file, and go about deleting all the files in that list
After that it can delete that file too and return control to the user so he /she can press play or whatever else you decide your launcher should have
#7
And your right 1 byte would be ok as a blank file takes up err I can't remember what it is now, it used to be 7k . even if it's 0 length.
Thinking about it, you would have to keep a list of files to remove just about forever, however your removing them.
02/28/2013 (2:07 pm)
@Luis, the file list is a workable idea, although you would have to keep it, adding to it as you remove files as you never know when someone will log in that hasn't logged on in ages.And your right 1 byte would be ok as a blank file takes up err I can't remember what it is now, it used to be 7k . even if it's 0 length.
Thinking about it, you would have to keep a list of files to remove just about forever, however your removing them.
#8
Another idea is, since you can have the launcher do anything you want, you could have that list on an online database with marking of what release they were deleted at and have the laucher get from that database the list of only the ones deleted after the current version. That way, even though you keep the entire list, it only gets the files it needs to delete. For a client that keeps up to date this list should be minimum per update
02/28/2013 (2:24 pm)
@David - yes you would need to keep that list on forever. The good news is that just thinking about this and knowing the back works of the updater i may have a way to do it without such a list - but will need some time to look into it. As i said, it's for a 1.1 release.Another idea is, since you can have the launcher do anything you want, you could have that list on an online database with marking of what release they were deleted at and have the laucher get from that database the list of only the ones deleted after the current version. That way, even though you keep the entire list, it only gets the files it needs to delete. For a client that keeps up to date this list should be minimum per update
#9
House.dts, 1.0
House2.dts, 1.0
Barn.dts, 1.2
...
Hotel.dts, 1.6
so the client if its v1.2 just deletes v1.2+ files
02/28/2013 (3:45 pm)
yup was much what I was thinking ofHouse.dts, 1.0
House2.dts, 1.0
Barn.dts, 1.2
...
Hotel.dts, 1.6
so the client if its v1.2 just deletes v1.2+ files
#10
02/28/2013 (4:11 pm)
exactly
#11
Something that is more automated?
I am a bit lazy... and .. I have a TON on my plate trying to juggle building something to play. LOL.
Tarly
02/28/2013 (4:26 pm)
Hmm... couldn't something be done with Creation date, the older one gets deleted. Just to cut down on the over head of keeping track of individual files?Something that is more automated?
I am a bit lazy... and .. I have a TON on my plate trying to juggle building something to play. LOL.
Tarly
#12
02/28/2013 (4:43 pm)
@Tarly - Creation date is a terrible idea for this. What about resource files that never get changed?
#13
House1.dts file creation date 2/1/13
House1.dts file creations date 2/2/13
since second one is newer. file 2/1/13 is deleted.
or file name house1.dts and it has a box by it. a check mark updates it with new file . a x marks it for deletion, no file to replace it. an Z renames it to file.old so it stays on system.
have not really thought about a lot of this. Just know that if I can't delete stuff thru the updater, then I can see a game getting larger and larger. If they delete the game dir... it would then have to redownload all the "current files"
T.
02/28/2013 (4:51 pm)
NOt all files dated the deletion date.House1.dts file creation date 2/1/13
House1.dts file creations date 2/2/13
since second one is newer. file 2/1/13 is deleted.
or file name house1.dts and it has a box by it. a check mark updates it with new file . a x marks it for deletion, no file to replace it. an Z renames it to file.old so it stays on system.
have not really thought about a lot of this. Just know that if I can't delete stuff thru the updater, then I can see a game getting larger and larger. If they delete the game dir... it would then have to redownload all the "current files"
T.
#14
It would be cool, from a new level point of view if you could play the game, whilst downloading the updates for it to be ready to play without having to exit, reload. Not sure what impact this would have on a live updated, if a dedicated server was updated, and the clients being out of sync in terms of artwork/scripts which would need to reloaded. Probably going outside the realms of patching and into streaming.
How would AutoPatcher work in a Molebox environment?
02/28/2013 (5:03 pm)
This looks good. I currently use WyBuild for patching (may give you a few ideas on price), but always open to looking at other, best suited solutions. Can this patch up a game whilst people are in the game for the changes to take effect after they log out and back in again? So in effect download in the background, or check for updates first download them, then apply them before loading the game. It would be cool, from a new level point of view if you could play the game, whilst downloading the updates for it to be ready to play without having to exit, reload. Not sure what impact this would have on a live updated, if a dedicated server was updated, and the clients being out of sync in terms of artwork/scripts which would need to reloaded. Probably going outside the realms of patching and into streaming.
How would AutoPatcher work in a Molebox environment?
#15
The way we have it set, you don't have to set things file by file - just choose a dir where the app files are and it will create a log of those files automaticaly - so no setting per file.
Anyway, settings per file would still leave the problem of late updates mentioned by David - so that doesn't work either. What would work is delete all files not in the log. Course that leaves the problem of save files and prefs files. Something i am thinking through now.
@Jules Since with a game in play the files are being used, would be hard to update them at that time. You could probably come up with something like this by keeping two copies of the app. While running one update the other. Next time will run the other and update the first one.
Keeping two copies of the same app/game at a clients computer might be a bad idea though. Anyway, for online games, servers should only accept the latest client version anyway, and for offline games than you can leave the choice to update or not and when to update to the client. Just update only on the click of a button.
02/28/2013 (5:28 pm)
@Tarly - Creation date doesn't work. On an update the second file would gave already replaced the first one, leaving nothing to deleteThe way we have it set, you don't have to set things file by file - just choose a dir where the app files are and it will create a log of those files automaticaly - so no setting per file.
Anyway, settings per file would still leave the problem of late updates mentioned by David - so that doesn't work either. What would work is delete all files not in the log. Course that leaves the problem of save files and prefs files. Something i am thinking through now.
@Jules Since with a game in play the files are being used, would be hard to update them at that time. You could probably come up with something like this by keeping two copies of the app. While running one update the other. Next time will run the other and update the first one.
Keeping two copies of the same app/game at a clients computer might be a bad idea though. Anyway, for online games, servers should only accept the latest client version anyway, and for offline games than you can leave the choice to update or not and when to update to the client. Just update only on the click of a button.
#16
02/28/2013 (5:30 pm)
Sorry, updated my post just after you posted yours.
#17
But maybe i'm not getting what MoleBox does
02/28/2013 (5:35 pm)
@Jules - i have no experience with molebox. From their websiteQuote:converts existing software applications into standalone executables that run on any computer without installationIf i read that right, it packs all the files into a single executable. If that's it, then that means every update will download the all thing.
But maybe i'm not getting what MoleBox does
#18
02/28/2013 (5:37 pm)
@Luis - agree with you on point 2. I would probably struggle with point 1, as I have multiple server instances, that are stitched together to make a large world. Happy with the update first on client before playing. I've not really tested what the impact would be on updating a dedicated server in terms of artwork whilst a client is connected, so I'm not sure if you get the error that the clients artwork is out of date. So I'd probably need to send a message to all clients to log out and login again to get the update.
#19
Edit: I'd imagine that it is possible, as long as Molebox allows files to be written or modified from within the virtual directory structure, downloading a zip perhaps, unpackaging it and replacing or adding new files.
Ideally using a small client download, with the main map and downloading the rest of the game with ongoing updates would be ideal.
02/28/2013 (5:40 pm)
@Luis - Molebox packages everything up into a single exe (virtual directory structure), keeping your assets secure (based on an encryption level) - mainly to protect 3rd party assets from being used under licence. I'm not sure if you can package the patcher within this exe, so that it downloads from within itself. Yet to test this. Edit: I'd imagine that it is possible, as long as Molebox allows files to be written or modified from within the virtual directory structure, downloading a zip perhaps, unpackaging it and replacing or adding new files.
Ideally using a small client download, with the main map and downloading the rest of the game with ongoing updates would be ideal.
#20
Then the launcher would initiate the check and update process on run without the user have to press any button, keeping the play button disabled. When done updating (if any necessary) the play button would be enabled and the user could press that to play.
Always latest version installed
02/28/2013 (5:45 pm)
@Jules - why not prevent running the client if not from the launcher (like the launcher sends a code through command line to the game (secret code of course) - if the game doesn't get the code either runs the launcher and exits or gives a message saying you need to run the launcher.Then the launcher would initiate the check and update process on run without the user have to press any button, keeping the play button disabled. When done updating (if any necessary) the play button would be enabled and the user could press that to play.
Always latest version installed

Torque 3D Owner Tarly
Really looking forward to using it.
a few questions:
1) Cost ?
2) does it allow you to delete files in the project that are no longer needed on the client's client?
3) Length of support? I got a patcher but, it is no longer supported. :(
4) Your screenie shows that you port the patcher to a URL. Does it support non-standard ports? I am working on something that I use my home connection for my project at this time, So I have my web server on port 81 as my Inet provider blocks my port 80.
Thank you for the time to address these issues.
T.