Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Program Announcements / [LOCKED] XUpdate - effortless version control for your distributed software!

Author
Message
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 5th Feb 2006 18:36 Edited at: 8th Feb 2006 03:38
XUpdate is a generic command-line-driven file system update tool, which allows app and game developers to maintain version control over their distributed software, without the need for a remote database, and without the need for end-user interaction. By connecting via standard HTTP to the developer’s web space, XUpdate can determine if the software being run is out of date and it can download all of the new files, even the executable that made the call to XUpdate! You simply distribute XUpdate with your application or game software, and have it perform the check for a new a software version from anywhere within your code. No tcp ports or firewall hassles, XUpdate uses standard http for its transport mechanism.

Download the application and documentation:
http://www.mod2software.com/misc/dbp/xupdate.zip
(*Consider this version a working beta - new version being developed)

All comments and suggestions welcome, improvements and additions are planned.

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
Mattman
21
Years of Service
User Offline
Joined: 5th Jun 2003
Location: East Lansing
Posted: 5th Feb 2006 19:04
CR pulls it out again, after hiding in a hole for months! Great job man! Come visit me in IRC.

Why make sense when you could make brownies?
Chris Franklin
18
Years of Service
User Offline
Joined: 2nd Aug 2005
Location: UK
Posted: 5th Feb 2006 22:05
WOW!!!!!!!!

Cool this is superb downloading now

Fps world of mayhem 10%

CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 5th Feb 2006 22:34 Edited at: 7th Feb 2006 01:16
thanks, let me know how it goes, I havent tried with DBP since I dont have it installed. Works fine from other coding languages tho.

feel free to spread the word on it

Quote: "CR pulls it out again, after hiding in a hole for months! Great job man!"

Lol, actually I thought of this yesterday (spawned by something related to version control that I did for a distributed app for work) so I decided to write it up yesterday and today and distro it. Not much code really. Hopefully someone finds this app useful

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
Oddmind
19
Years of Service
User Offline
Joined: 20th Jun 2004
Location: Atlanta, Georgia
Posted: 6th Feb 2006 04:42
I will!

formerly KrazyJimmy
Chris Franklin
18
Years of Service
User Offline
Joined: 2nd Aug 2005
Location: UK
Posted: 6th Feb 2006 11:56
Quote: "Works fine from other coding languages tho.
"

It'll work with c++ ?

Fps world of mayhem 10%

CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 6th Feb 2006 14:14 Edited at: 7th Feb 2006 01:12
it'll work from any language that can call an external exe and pass it command line parameters, so yes c++/vb/vb.net/c#/dbp/delphi etc

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 6th Feb 2006 15:12 Edited at: 7th Feb 2006 01:12
If anyone wants to test XUpdate, without needing an app as caller etc, you can do the following:

After dl'ing and unzipping XUpdate to a folder...

-create a shortcut to XUpdate.exe
-add the command line args to the exe call in the shortcut like: C:...XUpdate.exe -. -http://www.YourWeb.com/yourfiles/ - -1.0.0.0
-create an xml file named xupdate_task.xml and add the following:


-save this xml file and create a txt file named test.txt
-push both of these files up to your web location specified in the command line argument (these location must match or xupdate wont find the files)
-now your web location should have test.txt and the xupdate_task.xml file (xupdate_task.xml is always required to be with the files you intend to download)
-launch xupdate.exe from the SHORTCUT

If everything was set up properly you will see a small window that shows XUpdate's progress, and you will see the xml file appear in the same dir you are working in, then your test.txt file should appear as it is downloaded. If something isnt set right either in the command line, or in the task xml, XUpdate will notify you of the error.

key things to remember:
-the version value being passed in from the command line, and the version value in the xml file must differ for the downloads to be attempted. (When I say xml version value, I mean the value in the <task version=... />, NOT the version value in the first line of the xml, that is the XML version and is not what we mean to change )
-If the values are the same xupdate will say that the version is up to date and that there is nothing to do, then it will exit.
-The final downloaded file is placed in the location that is the concatenation of the command line's First argument (root_dir) and each file's PATH= property. In our example above your test.txt file appears in the directory you are working out of because we specified -. in the cmd line arg and path="" in the xml. The resultant path ends ip being . + "", or just . Single dot equates to "here in this working directory". Had you specified path="test" for example, your final location for the file would have been ".test" This would require you had a folder called "test" in your current directory. destinations must exist prior to the downloads or it will fail. But this is no problem since I assume developers know ahead of time their program's tree structure prior to release, and regardless of where the end user has installed the app.

hopefully someone can give this a go
thanks

Upcoming additions:
-The ability to restart an app, which works in conjunction to the stopped app arg. I will make it so you can pass in the full path to the APP_TO_STOP arg, I will retrieve the full path and exe name internally, use the exe name to stop the app, and the full path to restart it after updating. Again, your app can discover its entire path and pass it into the cmd line, so this isnt an issue.
-I will build a separate utility that lets you graphically arrange files in a tree, upload them to your web server, and build the xml file from a gui, and upload that as well. One stop shopping

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
MrTus
18
Years of Service
User Offline
Joined: 7th Aug 2005
Location: Inside of a TCP/IP Protocal
Posted: 6th Feb 2006 19:15
I love it xD I was able to incorperate it into a IRC script, which will mean a new possibilty considering scripting a updater from scratch in mirc6 is... very much frustrating and time consuming. XUpdate does the job for me, and helps get rid of the headach, and also allows me to hand out my scripts without having to fear for having versions out of wack.

Thanks CR xD

A+ And i-NET+ Certified.
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 6th Feb 2006 19:17 Edited at: 7th Feb 2006 01:16
no problem, enjoy .

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
Chris Franklin
18
Years of Service
User Offline
Joined: 2nd Aug 2005
Location: UK
Posted: 6th Feb 2006 23:32
just ran a test run of it on my dbp game

Worked really well

Fps world of mayhem 10%

CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 6th Feb 2006 23:39 Edited at: 7th Feb 2006 01:17
awesome. could you post some dbp code in this thread in case others want to see how you used it? I would have done so myself but I dont have DBP installed at the moment

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
APEXnow
Retired Moderator
21
Years of Service
User Offline
Joined: 15th Apr 2003
Location: On a park bench
Posted: 7th Feb 2006 01:20
Top stuff, plenty of m00tage!!

Pex.


Home of the Cartography Shop - DarkBASIC Professional map importer
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 7th Feb 2006 01:22
BANNED!

oh...
Thanks mate

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 7th Feb 2006 02:31
I will be making an improvement where the xml will contain the structure of a web folder tree, so you are not forced to upload to one single folder, you can maintain a tree that matches the tree for download and xupdate will discover the structure, and replicate it on the client side

(suggested by apex)

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
Xenocythe
19
Years of Service
User Offline
Joined: 26th May 2005
Location: You Essay.
Posted: 7th Feb 2006 15:17
Well, looks good, but how does it work? Like... what about for an online game? Do I keep and exe of this and also give this with the client? How do I make it update the files? Do the files have to be hosted on a website? Or do I just open it up, choose the new files, and then when the client opens it up, the new files will come to him too?

"Forgiveness is a good thing"
"Forgiveness is between them, and God. I set up the meeting"
-Man on Fire
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 7th Feb 2006 23:48
Your files need to be hosted on a server somewhere, accessible via normal http. Your game/app type doesn't really matter. If your game is an online game, or some multiplayer game (I'm assuming in the form of some local exe with local supporting files) you can have the game (client) check for updates from code, via whatever trigger you determine. Yes XUpdate.exe is distributed with your client/game/app exe. You must remember that if you want to update you actual exe it cant be running while the new exe is being copied down over it. Your exe can launch this updater, then the updater can stop your game -or- you could launch the updater and stop your own exe yourself. The first way lets XUpdate determine if there is an update first before stopping the exe. Also you can update supporting files only without stopping your exe. There's many possibilities and combinations etc but here's a scenario that I imagine:


-You make a game
-When the game starts, before going into FSE mode (if used) you call XUpdate
-you pass in the args for ROOT_DIR, FILES_ADDR, APP_TO_STOP, CUR_VERSION
cur_version could be a preset variable in code like:
sVersion as String = "1.0"

now regardless of anything else, if the file xupdate_task.xml resides at the address specified, and the version value passed in is not equal to the one in the file on the web, then updating will be attempted. (Assume 1.0 was passed in and 1.1 is on the server)

so lets say you passed in -mygame.exe as the stop app, and one of the files on the server (among others) is the new version of mygame.exe. You have placed all of the files, and have adjusted the script so xupdate knows where to copy, and most importantly have adjusted the sVersion variable in the new exe to be 1.1 What happens now is XUpdate will stop process on your exe (cleanly), copy all of the files listed in the xml script to each location they specify, and when finished it will exit. Now your game files are up to date with what is on the server.

The next time mygame.exe is run it has the new embedded value of 1.1. If you dont change anything on the server, XUpdate will check the new 1.1 versus the xml which still has 1.1 also, nothing will be downloaded or updated at this point.

Hope that helps

I am working on improving some aspects of this to make it unneccessary for people to write any xml whatsoever, and have the xml describe a directory tree. This way you could in a single step upload your file structure, as well as the automatically built xupdate_task.xml (assuming the tree structure is the same for the developer and for the end user). XUpdate would discover the tree structure on its own, and copy everything where it needs to go without you having to write specific paths for every file, and not having to upload all the files to one folder, which is counter-intuitive since a game might be laid out using subfolders for various aspects.

XUpdate_Admin is in the works...

XUpdate - Effortless Automatic file updating for your distributed Games and Apps
The admiral
21
Years of Service
User Offline
Joined: 29th Aug 2002
Location:
Posted: 8th Feb 2006 01:06
Do you have to always copy all the files over or can it check whether the person has each of the files from previous upgrades etc.For examele if there is a 1.1 a 1.2 and a 1.3 upgrade would the player jump from 1 to 1.3 or would it go through the stages to get to 1.3??

The admiral
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 8th Feb 2006 02:10 Edited at: 8th Feb 2006 02:13
Yeah I see what you mean. Over time it could get out of hand couldn't it. Maybe we need the concept of update packages separated by folders, or instead of one task in the xml, the xml could contain all of the update instructions for all of your versions as they build up over time. XUpdate could grab what it needs based on which version the app is, and which version it needs to get to....interesting.

For now its a good working model. I will make it better

many possibilities
thanks for that insight

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 8th Feb 2006 03:37 Edited at: 8th Feb 2006 03:41
Consider the current version a working beta.

Taking into account things I had already wanted to add, things other people have suggested, and things mentioned here by you guys, I have completely redesigned this thing to be way more powerful, yet still hands free, and wont require you write 1 character of xml manually...

thanks! New version of XUpdate is under way... <--code-face

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
MrTus
18
Years of Service
User Offline
Joined: 7th Aug 2005
Location: Inside of a TCP/IP Protocal
Posted: 8th Feb 2006 18:04
Awesome CR This sounds like it'll pwn more then what's already here for us xD.

I do have a question though,

Is there a way you can let the user choose to update or not? As in when XUpdate checks for the updates, have it tell the user that there are updates availible and ask to update or not.

Also, If it could grab a text file detailing what the update consists of before accepting it, showing the user in the "update avail wnat to update?" box.

If this hasn't already been suggested

A+ And i-NET+ Certified.
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 8th Feb 2006 18:49
yes that easily could be done but I think this is meant to be fro the point of view of the developer, not the end user. Like if a developer releases a new version its usually for a reason. I dont think the developer wants the end user bypassing his updates. Its more of a tool for developers who distribute their software to maintain some form of control over it in the wild. Then again, I may be over-thinking it a little. I guess if people start using this and begin to ask for the ability you mentioned I could add it as an option.

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
Chris Franklin
18
Years of Service
User Offline
Joined: 2nd Aug 2005
Location: UK
Posted: 8th Feb 2006 19:52
Hi

I'll post the code as soon as i can as i was on hospital all yesterday and the start of today

Fps world of mayhem 10%

CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 8th Feb 2006 21:34

ok cool. hope you're feeling better.


Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 10th Feb 2006 18:33
the new version is done, just fixing the documentation. Should have something posted today - I may lock this thread and start a new one for the new version.

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum
Peter H
20
Years of Service
User Offline
Joined: 20th Feb 2004
Location: Witness Protection Program
Posted: 10th Feb 2006 18:59
Once this is 1.0 and beyond i'm sure it'll be really usefull

Quote: "I may lock this thread and start a new one for the new version."

the privileges of modity...

"We make the worst games in the universe..."
CattleRustler
Retired Moderator
20
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 10th Feb 2006 20:52
Thanks.

here comes some modity...

Automatic file Downloads/Updates for your distributed Games and Apps - see Program Announcements Forum

Login to post a reply

Server time is: 2024-06-17 07:39:46
Your offset time is: 2024-06-17 07:39:46