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.
HTTPS is not supported for patching.
(This means paying for web hosting, as "sharing" sites tend not to support the required features.)
If the patch parameter is set to False, or an https url is given, the updater will not attempt to patch the game. Instead, it will download the full archive, and unpack that update. While this is a larger download, it will work with many more web servers.
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.
updater.
Update
(*args, **kwargs) linkAn action that calls updater.update()
. All arguments are
stored and passed to that function.
updater.
UpdateVersion
(url, check_interval=21600, simulate=None, **kwargs) linkThis 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 updater.update()
.
updater.
can_update
(base=None) linkReturns 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 updater.UpdateVersion()
.
updater.
get_installed_packages
(base=None) linkReturns a list of installed DLC package names.
updater.
update
(url, base=None, force=False, public_key=None, simulate=None, add=[], restart=True, confirm=True, patch=True) linkUpdates 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 updater
screen. The default screen is defined in common/00updater.rpy.