Ren'Py includes an updater that can automatically download and install updates to a Ren'Py game hosted at a website. This can be useful in keeping a large game up to date.
The Ren'Py updater works by automatically performing the following steps:
The Ren'Py updater shows an updater screen during this process, prompting the user to proceed and allowing the user to cancel when appropriate.
The updater requires that you provide your own hosting. You should be able to download the update files by going to the appropriate URL directly, and your server must support HTTP range queries.
(This means paying for web hosting, as "sharing" sites tend not to support the required features.)
Updates are built automatically when distributions are built. To build an update, set build.include_update to True in options.rpy. This will unlock the "Build Updates" option in the "Build Distributions" section of the launcher. Check this option, and Ren'Py will create the update files.
The update files consist of:
You must upload all these files to a single directory on your web server.
To cause an update to occur, invoke either updater.update or the updater.Update action.
Update(*args, **kwargs) link
An action that calls
updater.update(). All arguments are
stored and passed to that function.
UpdateVersion(url, check_interval=21600, simulate=None, **kwargs) link
This function contacts the server at url, and determines if there is a newer version of software available at that url. If there is, this function returns the new version. Otherwise, it returns None.
Since contacting the server can take some time, this function launches a thread in the background, and immediately returns the version from the last time the server was contacted, or None if the server has never been contacted. The background thread will restart the current interaction once the server has been contacted, which will cause screens that call this function to update.
Each url will be contacted at most once per Ren'Py session, and not more than once every check_interval seconds. When the server is not contacted, cached data will be returned.
Additional keyword arguments (including simulate) are passed to the
update mechanism as if they were given to
Returns true if it's possible that an update can succeed. Returns false if updating is totally impossible. (For example, if the update directory was deleted.)
Note that this does not determine if an update is actually available.
To do that, use
Returns a list of installed DLC package names.
update(url, base=None, force=False, public_key=None, simulate=None, add=, restart=True) link
Updates this Ren'Py game to the latest version.
This is used to test update guis without actually performing an update. This can be:
To customize the look of the updater, you may override the
screen. The default screen is defined in common/00updater.rpy.