Release
Today's release flow is fully manual. A couple of auto-update approaches are sketched below as a design-doc placeholder — none are implemented yet.
Current manual flow
1. Bump and commit
WmsSyncHub/Properties/AssemblyInfo.cs→ bumpAssemblyVersion+AssemblyFileVersion.WmsSyncHubApi/Properties/AssemblyInfo.cs→ same.- Update
CHANGELOG.mdin the main repo with what shipped. - Commit:
chore(release): v1.0.3.
2. Build
msbuild WmsSyncHub.sln /p:Configuration=Release /t:Rebuild
3. Package
- The plugin: pack the
.appper Outer Loop. - The API: zip up
WmsSyncHubApi\bin\Release\*plusappsettings.json(with customer credentials patched in, not dev).
4. Ship via AnyDesk
- Connect to the customer workstation via AnyDesk.
- Stop the running
WmsSyncHubApi.exe(Task Manager or Services). - Copy the new API zip, unzip over the existing folder (keep their
appsettings.json). - In AutoCount → Tools → Plug-in Manager → Uninstall old version
→ restart → Install plug-in new
.app→ restart again. - Start
WmsSyncHubApi.exe(it auto-runs migrations). - Open
FormWmsSync, verify the 5 tabs load and the API ping is green. - Smoke-test: sync one item, push one picking note, simulate a Shipped callback.
5. Commit the deployed version tag
Tag the commit v1.0.3 in git, push.
Future — auto-update (not implemented)
We have considered four approaches. None are implemented; this section is a design-doc stub so whoever picks up the work does not start from zero.
Option A — plugin-initiated
Plugin pings a central manifest on launch, compares versions, offers to download + install.
- Pro: zero infra, updates on every form open.
- Con: Plug-in Manager requires an AutoCount restart, which the plugin cannot force. User must cooperate.
Option B — service-polling
WmsSyncHubApi.exe polls a manifest, downloads, and swaps files on
next restart.
- Pro: background-silent.
- Con: Can only update the API half, not the plugin half. Plugin updates still need manual install.
Option C — scheduled task
A Windows Scheduled Task runs a small updater .exe nightly, which
pulls from a central URL and restarts both services.
- Pro: fully hands-off.
- Con: needs Windows admin rights on the customer box — which is exactly the thing we try to avoid during install.
Option D — manual ZIP + instructions
The status quo. A RELEASE.md + ZIP package, emailed to the customer.
- Pro: no infra at all.
- Con: brittle, error-prone, time-consuming.
Likely decision
Hybrid of B + D: API polls and self-updates silently; plugin stays manual-via-AnyDesk because AutoCount restarts are a human-involved step anyway.
Caution
:::caution Always migrate the API and the plugin together
Migrations.cs exists in both projects and must stay in sync. If you
ship a new API with M006 but the plugin is still at M005, the plugin
may read a column it does not know about — or worse, write a schema
shape the API assumes is already fixed. Bump both, ship both.
:::
:::caution Never ship dev credentials
The dev WMSSyncHubShadowMain\App.config is only for the inner loop.
Release packaging must strip it. Similarly appsettings.Development.json
must not ship. The canonical templates end in .example.
:::