Program updates
A running v4 system can keep its programs current. PBDispatch checks a web folder for newer ProBoard programs and plug-ins, tells you what it found, and, only when you say so, downloads, verifies and installs them with a backup you can roll back.
Updates are off until you create a settings file, and nothing is ever installed without your say-so unless you schedule it yourself.
How it keeps you safe
- Signed releases. Every release is signed by the publisher. PBDispatch refuses anything whose signature does not match the public key in your settings, and every file must match the size and SHA-256 checksum in the signed list. A hacked web server or a damaged download cannot install anything.
- Programs only. Only
.exe,.dlland.p3xfiles with plain names can be written. Updates never touch your data, configuration, menus or screens. - Only what you already have. An update replaces programs you already run. It adds new ones only if you set
installnew yes. - Your own builds are protected. List a program you built yourself as a
pinand no release will replace it. - Backup and roll back. Replaced files are copied to
Update\Backup(a folder next toPBDispatch.exe) first (the newest five backups are kept), and Tools > ProBoard Updates > Roll Back puts the newest one back.
Turn updates on
- Copy the sample file
PBUPDATE.CFG.SAMPLEthat comes with ProBoard toConfigs\PBUPDATE.CFG. - Edit it. Set
urlto the publisher's web folder, which must start withhttps:, and paste the publisher'spublickeyline. - Restart PBDispatch. Its log shows “Program updates enabled”. If you deletePBUPDATE.CFG, updates are off again. Here is a sample file with the usual settings: <code> url https://www.proboardbbs.com/PBupdate/ publickey PASTE-THE-BASE64-TEXT-HERE channel stable checkhours 24 autostage no installnew no idleonly yes </code> ^ Setting ^ Meaning ^ |url| Required. The publisher's folder;httpsonly. PBDispatch addsx64/orWin32/itself. | |publickey| The publisher's public key. Updates are refused unless the signature verifies with it. You can give more than one line. | |channel|stablefor normal releases. A publisher may offer others, such asbeta. | |checkhours| How often PBDispatch looks, in hours.0means only when you ask. A check only tells you. | |autostage|yesdownloads and verifies after a check finds an update, so installing is instant. It still installs nothing. | |installnew|yesalso adds programs from the release that you do not have yet. | |idleonly|yesrefuses to install whileProBoard.exeis running, that is, while callers are online. Recommended. | |reportname| An optional name for your board in the publisher's web log. Leave it out to stay anonymous. | |pin| A program never to replace. One line each, for examplepin ProBoard.exeorpin PEX/MyPlugin.p3x. | |pexdir| Where plug-ins live, if not thePEXfolder next toPBDispatch.exe. | |maxfilemb| Refuse any single download bigger than this many megabytes. | |enabled|noswitches updates off without deleting the file. | ===== Check for and install an update ===== In PBDispatch, choose Tools > ProBoard Updates > Check for Updates / Install. It shows what would change and offers to install it, or only to download it. - The first time, if every file on your PC already matches the published release, PBDispatch just records that you are on that release. - Later releases are offered when their number is higher than the one you have. - A program you changed yourself within the same release is not offered. An install does this: - Downloads only the changed files intoUpdate\Stagedand checks them. - Stops ifProBoard.exeis running, unless you choose to force it. Windows lets you replace a running program, but the running copy keeps using the old code until it restarts. - Copies the files it will replace intoUpdate\Backup. - Renames each old program to.oldand moves the new one into place. If anything fails it puts the old ones back. - For a release that changes data file formats, asks you to confirm that you have run Upgrade Data first. See Upgrading from 16-bit ProBoard. Restart ProBoard and PBDispatch afterwards. A release replaces all its programs in one step, so do not install while callers are online unless you are sure. ===== Updating on a schedule ===== PBDispatch can run an update with no window, which suits a nightly job: <code> PBDispatch.exe /update check PBDispatch.exe /update download /spread 60 PBDispatch.exe /update install PBDispatch.exe /update rollback PBDispatch.exe /update status </code> *checkonly looks, and exits with code 10 if an update is available. *downloaddownloads and verifies without installing. *installbacks up and installs. Add/forceto install while callers are online, or/pbupgradedto confirm you have run Upgrade Data. * Always add/spread <minutes>(0 to 180) to scheduled jobs. It waits a random time first, so that hundreds of boards do not all ask the publisher's server in the same minute. Everything is logged inLOGS\UPDATE.LOG. The exit codes are 0 (done, or nothing to do), 1 (error), 2 (blocked becauseProBoard.exeis running), 3 (the release needs Upgrade Data first) and 10 (a check found an update). For example, a nightly download fromPBEVENTS.CFG: <code> event NightlyUpdateCheck at 04:30 action run “C:\ProBoard\PBDispatch.exe /update download /spread 60” endevent </code> ===== Privacy: what the publisher can see ===== Each check asks the publisher's web server for one file. The server's log therefore shows your IP address, the time, the release you have installed, whether you run x64 or Win32, the channel, the client namePBDispatch-Updateand which program files you downloaded. If you setreportname, it also shows that name. Nothing else about your PC, your board, your users or your files is sent. ===== What updates do not replace ===== * The installer (PBInstall.exe'') and the sample plug-ins are not part of an update. * Menus, screens, documents and the SDK files are not updated, and PBInstall does not overwrite your copies of them either. If you want a newer version of one, copy it from a new package yourself.