Download the new installer from Releases and run it. That's it. Your config, endpoints, secrets, and logs are preserved.
The Inno Setup installer detects an existing install and runs through these steps automatically:
net stop WebhookServer— synchronously stops the running service so its binaries are unlocked. Blocks until the SCM reports the service is actually stopped.taskkill /f /im WebhookServer.Gui.exe— closes the GUI if you left it running. Same for any orphanWebhookServer.Service.exefrom adeploy.ps1dev install.- Copies the new binaries into
C:\Program Files\WebhookServer\. Files markedignoreversionso newer files always overwrite older ones, even if version metadata happens to match. - Re-registers the service via
install-service.ps1, which detects the existingWebhookServerservice viaGet-Serviceand takes the update branch (changes the binary path) rather than re-creating it. Your service account choice is preserved. - Starts the service. The GUI launches if you left the post-install checkbox ticked.
Total downtime for the service: 2–10 seconds depending on disk speed and how long the service takes to flush its log buffer.
C:\ProgramData\WebhookServer\config.json— the installer never touches this directory- All endpoints, secrets, callback URLs, allowlists
- Bind addresses, display host, HTTPS binding settings
- Auto-snapshots in
C:\ProgramData\WebhookServer\backups\ - Log files in
C:\ProgramData\WebhookServer\logs\ - The Windows Service identity (LocalSystem, gMSA, domain user — whatever you configured)
- Everything in
C:\Program Files\WebhookServer\— the .exe files, .dll files, the icon,install-service.ps1,uninstall-service.ps1, the bundledREADME.md, thedocs/folder
Same as the silent install:
WebhookServer-Setup-X.Y.Z.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTARTThe pre-install net stop step still fires; downtime is unchanged.
The installer doesn't support side-by-side versions or downgrade detection. To roll back:
- Uninstall the current version (Settings → Apps, or
Start Menu → Webhook Server → Uninstall). This stops + removes the service. Your config inC:\ProgramData\WebhookServer\is preserved. - Run the older installer.
If a config field changed semantics between versions and you ran on the new version first, the Config Checkpoints menu (File → Config Checkpoints) lists snapshots taken before each save. The auto-snapshot from immediately before the upgrade is the closest you'll have to your pre-upgrade config.
The taskkill step normally handles this, but if you're running an unusually slow process or if the GUI was elevated by a different user, you may see this. Close the GUI manually and click Retry.
net stop waits up to 30 seconds for the service to stop. If a hook script hung (e.g. interactive prompt) and the service can't kill it cleanly, the SCM gives up and the install continues, but the service may end up in a bad state. Recovery:
# from elevated PowerShell
Stop-Service WebhookServer -Force
# if that fails:
Get-WmiObject Win32_Service -Filter "Name='WebhookServer'" | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }…then re-run the installer.
The first time you run the installer on a machine that previously used deploy.ps1, the installer thinks it's doing a fresh install (no Programs and Features registry entry). It still detects the existing service and updates it cleanly, so the only visible difference is that a Programs and Features entry now exists for "Webhook Server" with Justin Paul as publisher. Future upgrades take the proper upgrade path.
deploy.ps1 is the dev workflow. It publishes from source and copies binaries to the same install location. Running it on top of an installer-managed install will overwrite the binaries but won't deregister the installer. If you then uninstall via Programs and Features, the uninstaller may leave files behind that deploy.ps1 introduced. Pick one workflow and stick with it.