Packaging script
scripts/package-studio.ps1 (from the repository root) performs the full build:
- Builds and tests the firmware (
scripts/run-all.ps1 -TestsOnly). - Builds the customer installer with electron-builder. The output goes to
dist/by default, or to a local temp folder if the project is inside OneDrive (to avoid sync locks). - Runs the desktop smoke test against the packaged
EVCore Studio.exe, which checks that it offers no simulation. - Produces
dist/EVCore-Studio-<version>-win-x64.zip.
AZURE_SIGNING_ENDPOINTAZURE_SIGNING_ACCOUNTAZURE_SIGNING_PROFILEAZURE_PUBLISHER_NAME
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET
What the build produces
The installer is portable: unzip and run. Uninstalling keeps the shop’s records and backups in
%APPDATA%\EVCore Studio.
Customer builds vs internal testing
Every GitHub release is a customer release. Customer builds exclude the in-app demo and the firmware simulator (extraMetadata: evcoreBuild: customer in electron-builder.yml). Internal testing, with the demo and the firmware simulator, runs from the source code (npm start in software/evcore-studio, or npm run package:win for a local unpacked build). Nothing internal is ever published to the releases repository.
CI artifacts
Every push to GitHub produces the same zip as a CI artifact via therelease-studio workflow. Pushing a tag studio-vX.Y.Z runs the full build in CI, signed when configured, and keeps the installer as a workflow artifact. The workflow never publishes automatically.
Publishing a release
After local build and test:- Bump
versioninsoftware/evcore-studio/package.json. - Add a
## X.Y.Zsection at the top ofCHANGELOG.mdwith the release notes users will see. - Build and test locally with
scripts/package-studio.ps1. - Install that installer on a test computer and check it, including updating from the previous version with records in place.
- Publish with
scripts/publish-studio.ps1 -Version X.Y.Z.
- Publishes the tested installer in
dist/asvX.Y.Z. - Refuses a build that carries the simulator.
- Refuses an unsigned installer unless
-AllowUnsignedis given.
Release hosting
Installers and update manifests live in the public repositorycsharness/evcore-studio-releases (releases only, never source code). The website download link points to:
software/evcore-studio/desktop/update-config.json. The updater checks the feed 30 seconds after start and every 6 hours, downloads new versions in the background, and installs only when the user chooses Restart and update or quits Studio. The page refuses to restart while a test is running.
license-config.json requirement
A release build needs the account server settings indesktop/license-config.json. Until they are filled in, the packaged app opens on a “cannot sign in” screen. npm start has licensing off.
To point Studio at the project: