How to set up automatic game updates
A patch for a popular game is out — updating it manually on each of the club's twenty PCs takes a long time, and meanwhile guests cannot join servers with the old version. Gizmo lets you update the game once and roll the update out to client PCs automatically.
This is done with deployment profiles. You update the game in a folder on the server, and Gizmo compares it with the folder on the client PC by itself and copies only the changed files, and if needed deletes files on the client that are no longer in the source. Deployment runs before the launch of the game whose executable the profile is attached to.
Step 1. Prepare the current version of the game on the server
Keep the current version of the game in a separate folder on the PC with Gizmo Server — this is the folder Gizmo will use as the source for client PCs. When an update comes out, update the game in this folder.
How to organize the source folder and update the game in it:
This section is under development.
Step 2. Limit disk usage on client PCs
So that an update does not fill up the client PC's disk, set a minimum amount of free space to keep:
Open Settings → Client → File System, Deployment block.
Set the Always leave % of free disk space when using deployment profiles parameter.
If less free space than this value would remain after deployment, the operation is aborted. More in File System.
Step 3. Create a deployment profile
Open Hosts → Apps, then the game's card and its executable.
Go to the Deployments tab and click + Create New Deployment — the deployment card opens. If a suitable profile already exists, attach it in the Select Deployment field.
Fill in the card:
Name — the name of the deployment profile;
Source — the folder with the current version of the game on the PC with Gizmo Server (step 1);
Destination — the game folder on the client PC that the source is compared with and where differing files are copied.
Select the Comparison Mode. The more thorough the comparison, the lower the chance of an error, but the slower the update:
Fast — compares files and folders only by length and attributes;
Standard — by last modification time, length and attributes;
Standard without attributes — by modification time and length;
Thorough — the slowest and most reliable: it also calculates and compares the file hashes.
If needed, limit what is deployed with the Include Files, Include Directories, Exclude Files and Exclude Directories fields — wildcards are supported, and items are separated with ";". In the Registry field, you can specify a registry script that runs during deployment.
Save the deployment card and the executable.
All fields are described in Deployment card.
If a script needs to run before deployment, assign it to the Pre-Deployment Tasks event on the Tasks tab of the same executable. More in Executable card.
Step 4. Turn on launching the game right after the update
On the executable's Main tab, in the Launch Options Organization block, turn on Auto Launch. Then the game launches right after deployment. If this option is off, the guest has to click twice: the first time to run the deployment, the second time to confirm the launch.
Result
When a guest launches the game, Gizmo first compares the game folder on the PC with the folder on the server and copies only the changed files.
You need to update the game only once — in the source folder on the server; client PCs get the update the next time the game is launched.
If the client PC's disk does not have enough space, taking the configured reserve into account, the deployment is aborted.
How to add a game and create an executable is explained in How to add a game to the client shell. How to keep guests' progress between sessions is explained in How to keep guests' game progress between sessions.
Why a game is copied in full, is deployed after every restart or asks for an update is explained in Deployment -- how it works and FAQ. An example setup for a game that stores its update status outside its own folder: How to set up deployment of Epic Games Launcher and Fortnite.