Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411512 Posts in 69376 Topics- by 58430 Members - Latest Member: Jesse Webb

April 26, 2024, 08:20:51 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Project: free autoupdater/launcher for games
Pages: 1 ... 4 5 [6] 7 8
Print
Author Topic: Project: free autoupdater/launcher for games  (Read 27097 times)
PleasingFungus
Level 7
**



View Profile WWW
« Reply #100 on: April 26, 2011, 06:26:48 PM »

I'd like to put in my own vote on the "uninstall/config/etc" options issue. As a potential user, the autoupdater/launcher would be most useful to me if it was pretty much completely invisible to the user. They click the launcher, thinking that it's the game exe; the launcher chugs away, updates if it sees one, and then launches the game proper. No dialogs, no uninstaller, no game config stuff, just as lightweight a tool as possible.

This is what you were talking about in the first post, I think, but the project's gotten slightly sidetracked in the more recent pages. So I wanted to put in a vote for simplicity.

(I'd offer to help code it, but the only platform I currently have accessible is Windows, and that version sounds pretty much done. I'd be more than willing to help test, though.)

@bluescrn: my impression is that this won't be an auto-updater in the sense that it's running in the background - it'll only run when you start the game that it's a launcher for - and I'm somewhat unclear on your security concerns. Make sure that whatever site you're hosting it on doesn't turn into a virus zombie...?
Logged

Finished games: Manufactoria! International King of Wine!
And others on my site.
Paul Jeffries
Level 3
***



View Profile WWW
« Reply #101 on: April 27, 2011, 12:36:36 AM »

This is excellent!  I've had a hankering for one of these since I saw the one built-in to minecraft but didn't really know where to begin writing one.  Will definitely be keeping an eye on this.
Logged

www.vitruality.com | SPARTAN - Small Pixel Art Animator and procedural tile generator
technogothica
Level 1
*



View Profile WWW
« Reply #102 on: April 27, 2011, 08:11:40 PM »

Launcher/Updater 1.0 (beta) for Microsoft Windows (Win32) is now available. Test the crap out of it guys Smiley

http://technogothica.com/launcher

Please excuse the mess, the web site is still under construction. The docs were kind of rushed, and I'm a little too close to it to be objective, so let me know if there are any holes or confusion.

You're welcome to create an account on the wiki if you want to edit the docs, but if in doubt use the discussion page.

BTW, any more thoughts on a name?
Logged

Christian Knudsen
Level 10
*****



View Profile WWW
« Reply #103 on: April 28, 2011, 12:05:37 AM »

Wow. That's awesome work! You've even made it easy to compile for those of us that have no experience with C++ compiling. I have to test this the moment I get the chance!

As to a name, how about simply OpenLauncher?
Logged

Laserbrain Studios
Currently working on Hidden Asset (TIGSource DevLog)
Klaim
Level 10
*****



View Profile WWW
« Reply #104 on: April 28, 2011, 02:19:28 AM »

Excellent work, bravo Smiley

I was asking myself about the minecraft-like model, that is to have the whole application in application data roaming directory, is it suited for all type of games?

What about this (classic) case:

 - The game installer is downloaded and executed, the game install in "program files" etc..
 - Then the launcher is executed to update the game.

So, currently the launcher will just get the files and put them in the "application roaming" folder. That's nice if the whole application is there (like Minecraft) but in the previous case there should be a way to ask for administrator rights and just update the game?
Or maybe there is another simpler way? Maybe that's not a problem? I'm not sure...

Quote
Important: Use \\ rather than / as the directory separator character.

That, I guess, will be a problem later. You couldn't use something like boost::filesystem that allow you to use / for any OS?


Also, I've not read everything in details so maybe I misssed that part, but what about the server-side?

Last question : no workspace? github/bitbucket/googlecode/whatever? That would help for collaborative work...

Anyway excellent work, I'm amazed :D
Logged

Christian Knudsen
Level 10
*****



View Profile WWW
« Reply #105 on: April 28, 2011, 05:12:54 AM »

I figured the files are only temporarily downloaded to the "application roaming" folder, but then copied to the supplied game directory after all the files have been successfully downloaded? Otherwise you risk a corrupt update if the process is canceled halfway through.

(Or maybe I'm misunderstanding everything?)
Logged

Laserbrain Studios
Currently working on Hidden Asset (TIGSource DevLog)
Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #106 on: April 28, 2011, 01:06:09 PM »

I think the md5 vetting takes care of that problem, actually.  But that's a question for techno.

Excellent, excellent work, techogothica.  I can tell you put some serious thought into this.  I'm occupied until the weekend, but after that I'll be giving this new toy some serious sit-down time.  :D


Regarding the name, I still like Launchy, but OpenLauncher sums it up pretty well.  (It's an untaken name to boot!)  Additional random ideas: "Subtlepatch" and "Pilfer".
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
technogothica
Level 1
*



View Profile WWW
« Reply #107 on: April 28, 2011, 03:27:42 PM »

@Klaim

Quote
I was asking myself about the minecraft-like model, that is to have the whole application in application data roaming directory, is it suited for all type of games?

Potentially, provided your game is designed around that model. Actually, since working on this project I've been studying how other applications use this directory, and it's pretty much used like how Linux apps store their data in /home/username/.application_name (Firefox on Linux is a good example).

This model also avoids using the registry to find where files have been installed, though allowing the user to choose where to install files is arguably a better model (it's the model advocated by Microsoft).

Quote
What about this (classic) case:
 - The game installer is downloaded and executed, the game install in "program files" etc..
 - Then the launcher is executed to update the game.

In this case we avoid the Program Files folder altogether by downloading all files to Application Data and running it from there. This avoids the need for privilege elevation. The Launcher/Updater itself could be installed in Program Files though, since it does not self-update.

Quote
Important: Use \\ rather than / as the directory separator character.

My bad Wink The reason for that nonsense is that those strings go directly to the Windows Shell API functions, which are pedantic about using \ as the directory separator (the \\ is just an escaped \). I can easily fix it so you can use / by adding an extra step that flips all / to \. There's no need to involve the boost library or any others.

On a related note, I've just noticed the source code package contains an extra file that isn't used: "resource.h". I changed resource.h to resources.h and forgot to delete the old one. I'll be removing it in the next release.

Quote
Also, I've not read everything in details so maybe I misssed that part, but what about the server-side?

Server side at this point consists of just an XML file. Just use umgen to generate the XML file, and upload all files (using FTP) to a public HTTP server. Make sure all files are accessible (LAMP: files chmod 644 and directories chmod 755).

All lean-and-mean bare bones stuff. If you wanted, we could put together a more advanced "publishing" tool to automate the back-end process even further, but for now simplicity and minimalism are the primary objectives.

Quote
Last question : no workspace? github/bitbucket/googlecode/whatever? That would help for collaborative work...

No problem - I'm just hosting it on my site for the moment while we work out the details. I think our first priority is to give this thing a proper name. I've not done the online collaborative thing before, so I'll let you guys figure that one out.

@Christian Knudsen

Quote
I figured the files are only temporarily downloaded to the "application roaming" folder, but then copied to the supplied game directory after all the files have been successfully downloaded?

No, they are downloaded to Application Data folder and run from there. Writing to the Program Files folder on Vista and higher requires administrator privileges. This approach avoids that problem. For Linux users, think of it as analogous to writing to /home/username/.application_name. I'm not sure what the Mac analog is...

Quote
Otherwise you risk a corrupt update if the process is canceled halfway through.

All files are checked using MD5 hashes. If any file fails this test, the application does not run. The launcher just terminates with an error message.

@Cellulose

Quote
Regarding the name, I still like Launchy, but OpenLauncher sums it up pretty well.  (It's an untaken name to boot!) 

Additional random ideas: "Subtlepatch" and "Pilfer".

I'm a big fan of "OpenLauncher" too.

He he, "Pilfer" might be misconstrued  Wink

Logged

Triplefox
Level 9
****



View Profile WWW
« Reply #108 on: April 28, 2011, 11:06:51 PM »

RocketLauncher
Logged

technogothica
Level 1
*



View Profile WWW
« Reply #109 on: April 28, 2011, 11:13:30 PM »

RocketLauncher

Ha ha! That's awesome Cheesy
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #110 on: April 28, 2011, 11:58:15 PM »

One more vote for RocketLauncher!
Logged
DementedChicken
Level 0
***



View Profile
« Reply #111 on: April 29, 2011, 12:06:57 AM »

I can't help now (still too early in development), but I will be needing something like this soon-ish.

I'll help out then!!
Logged

Christian Knudsen
Level 10
*****



View Profile WWW
« Reply #112 on: April 29, 2011, 12:57:09 AM »

One more vote for RocketLauncher!

And another!
Logged

Laserbrain Studios
Currently working on Hidden Asset (TIGSource DevLog)
Klaim
Level 10
*****



View Profile WWW
« Reply #113 on: April 29, 2011, 01:58:35 AM »

RocketLauncher is tasty Smiley

@technogothica

Quote
Potentially, provided your game is designed around that model. Actually, since working on this project I've been studying how other applications use this directory, and it's pretty much used like how Linux apps store their data in /home/username/.application_name (Firefox on Linux is a good example).

This model also avoids using the registry to find where files have been installed, though allowing the user to choose where to install files is arguably a better model (it's the model advocated by Microsoft).


Doesn't it force every user to get a different install of the same application? Or you share it if you put it in the common app thing?

Quote
In this case we avoid the Program Files folder altogether by downloading all files to Application Data and running it from there. This avoids the need for privilege elevation. The Launcher/Updater itself could be installed in Program Files though, since it does not self-update.

I understand that but that suppose that the "installer" have to have access to the net. You can't just put the installer on an usb key and give it to a friend and let him install it on an unconnected laptop in a train for example.
Isn't there a way to support upgrading the Program Files install directory? Like, downloading to application data like now then providing a special command that will try (with administrator rights) to replace the program files folder, and still run with application data if it failed?
If it's possible, it would obviously wouldn't be imlpemented immediately, no problem, just asking.


Quote
Server side at this point consists of just an XML file. Just use umgen to generate the XML file, and upload all files (using FTP) to a public HTTP server. Make sure all files are accessible (LAMP: files chmod 644 and directories chmod 755).

All lean-and-mean bare bones stuff. If you wanted, we could put together a more advanced "publishing" tool to automate the back-end process even further, but for now simplicity and minimalism are the primary objectives.

That's good, no problem, it just wasn't obvious in the wiki. Maybe a (short) section explaining how to prepare the server side would be necessary. Anyway ok so just have an ftp.

I don't know a lot about security so I don't know what it means but I guess that if there is only read access on the files for any ftp user there is no way for someone to come hack your ftp account?


I can't wait for after-ludumdare to try this :D
Logged

technogothica
Level 1
*



View Profile WWW
« Reply #114 on: April 29, 2011, 05:18:52 AM »

Quote
Doesn't it force every user to get a different install of the same application? Or you share it if you put it in the common app thing?

Yes, you're right on both counts. That's the trade off when using the application data directory.

Quote
I understand that but that suppose that the "installer" have to have access to the net. You can't just put the installer on an usb key and give it to a friend and let him install it on an unconnected laptop in a train for example.

I'm not sure that I understand what you mean, but once the program is successfully installed, you don't need an internet connection to run it next time. Its the same principle as Steam - if there is an internet connection, and there are updates to download, it will download them. If there is no internet connection, and all the local files are OK, the game will just run as normal using the existing files.

Quote
Isn't there a way to support upgrading the Program Files install directory? Like, downloading to application data like now then providing a special command that will try (with administrator rights) to replace the program files folder, and still run with application data if it failed?
If it's possible, it would obviously wouldn't be imlpemented immediately, no problem, just asking.

Its possible, and I've been thinking about that in the background. Privilege elevation is not a big deal - Windows just pops up the UAC box whenever the program tries to do something restricted. The challenge is the name of the sub-directory under Program Files. A well behaved installer should provide the user with an opportunity to choose the install location, and that means the install path needs to be recorded in the registry. It also means the launcher needs to behave more like a proper installer. Then of course that imposes additional requirements on the game itself, and so on and so forth...

I'm sure an elegant solution will present itself sooner or later.

Quote
That's good, no problem, it just wasn't obvious in the wiki. Maybe a (short) section explaining how to prepare the server side would be necessary. Anyway ok so just have an ftp.

Yeah, the docs seriously need a good simple, straight forward tutorial. If you guys could document your experiences playing around with this, and perhaps come up with a tutorial yourselves that would be excellent. As I said, I'm a little too close to it to be objective.

Quote
I don't know a lot about security so I don't know what it means but I guess that if there is only read access on the files for any ftp user there is no way for someone to come hack your ftp account?

Security will depend on your web site setup. It would be good to add a discussion about those issues to the docs, though web development is not our primary focus. Unfortunately computer security education is woefully inadequate, even at University level.

Bonus chatter: Who got stung by the PSN breach?
Logged

Klaim
Level 10
*****



View Profile WWW
« Reply #115 on: April 29, 2011, 05:55:48 AM »

Quote
I'm not sure that I understand what you mean, but once the program is successfully installed, you don't need an internet connection to run it next time. Its the same principle as Steam - if there is an internet connection, and there are updates to download, it will download them. If there is no internet connection, and all the local files are OK, the game will just run as normal using the existing files.

You understood correctly but I was mixing two cases :

 1. like minecraft, you only provide an exe that is the updater. The game is always setup by the updater.
 2. you provide an installer. The installer contain the updater, so whatever happen you still have a full version of the game in the installer.

So, whatever, the launcher is useful in both cases, very good, excellent.  Gentleman

Quote
Its possible, and I've been thinking about that in the background. Privilege elevation is not a big deal - Windows just pops up the UAC box whenever the program tries to do something restricted. The challenge is the name of the sub-directory under Program Files. A well behaved installer should provide the user with an opportunity to choose the install location, and that means the install path needs to be recorded in the registry. It also means the launcher needs to behave more like a proper installer. Then of course that imposes additional requirements on the game itself, and so on and so forth...

I'm sure an elegant solution will present itself sooner or later.

Ok, maybe just asking for a registry key when this "option" would be activated would force the user to make sure it installs the registry key somewhere with his installer or something like that. Anyway it need thoughts.

By the way, I don't know a lot about when you install this type of executable on linux : should the updater be removed? Or is it legitimate to keep it and make it update the game? I mean, does it have to work the same way? (never played a native game on linux that would self update).



Quote
Bonus chatter: Who got stung by the PSN breach?

I did XD

Can't see any phantoms anymore while playing Demon's Soul...


Logged

technogothica
Level 1
*



View Profile WWW
« Reply #116 on: April 29, 2011, 06:24:34 AM »

Quote
By the way, I don't know a lot about when you install this type of executable on linux : should the updater be removed? Or is it legitimate to keep it and make it update the game? I mean, does it have to work the same way? (never played a native game on linux that would self update).

I'm no expert on Linux either Undecided

The analog of the My Documents folder on Linux is the /home/username directory. Most Linux applications store their per-user preferences in a hidden directory in that directory. For example, Firefox stores the user's browser settings in /home/username/.Firefox (or something like that - my Linux box is turned off at the moment).

So on Windows you have:

C:\Users\John Smith\AppData\Roaming\Super Mario Bros\

And the equivalent on Linux would be:

/home/johnsmith/.Super Mario Bros/

I'm not yet savvy on the Program Files equivalent for Linux, but this article seems to explain it pretty well:

http://pingus.seul.org/~grumbel/tutorials/game_install/install_dirs-2.html
Logged

Klaim
Level 10
*****



View Profile WWW
« Reply #117 on: April 29, 2011, 06:45:44 AM »

Wow looks like it's far less convenient on linux... The launcher would have to update each separate folder...or have one folder as you suggested with the whole app.

Anyway at least it seems to be "standardized", but maybe the folders names change a bit depending on the distribution?
Logged

technogothica
Level 1
*



View Profile WWW
« Reply #118 on: April 29, 2011, 07:06:36 AM »

Quote
Wow looks like it's far less convenient on linux... The launcher would have to update each separate folder...or have one folder as you suggested with the whole app.

Not to mention the fact that some of those directories require root access to modify.

It's a battle between "good citizen" and "it just works".
Logged

Klaim
Level 10
*****



View Profile WWW
« Reply #119 on: April 29, 2011, 08:07:34 AM »

How does MineCraft works in that case? Put everything in ~/.MineCraft ?
Logged

Pages: 1 ... 4 5 [6] 7 8
Print
Jump to:  

Theme orange-lt created by panic