Auto-Updates
Tex checks for new releases on startup and installs them on exit via a dedicated helper process. The update flow is driven by IAutoUpdateService, surfaced through UpdateCheckDialog, and applied by Tex.UpdateHelper.exe (self-contained console app).
Startup check
If Update.CheckOnStartup is true (default), the service polls the release feed shortly after MainWindow loads. The UpdateCheckDialog is only shown if an update is available — a silent "up to date" result is not surfaced unless the user triggered the check manually.
Dialog states
| State | Display |
|---|---|
| Checking | Spinner with "Checking for updates..." |
| Up to date | Green check, current version, Close button |
| Update available | Target version, release notes, Download / Later / Skip buttons |
Action buttons
| Button | Effect |
|---|---|
| Download | Downloads the installer payload now; install is deferred to next exit |
| Later | Dismisses the dialog; you will be prompted again on next startup |
| Skip | Marks this version skipped; you will not be prompted again until a newer version ships |
Silent install on exit
If Update.AutoInstallOnRestart is true (default), a downloaded update is applied by Tex.UpdateHelper.exe the next time the app exits. The helper:
- Waits for all
Tex.Wpf.exeprocesses to close. - Replaces the install directory with the downloaded payload.
- Relaunches
Tex.Wpf.exewith a post-update launch argument (see below).
Setting — Disable Update.AutoInstallOnRestart if you want manual control; the downloaded payload is preserved and you can install it later.
Post-update launch arguments
When Tex restarts after the helper finishes, one of these arguments is passed:
| Argument | Meaning |
|---|---|
--post-update | Install succeeded; show a confirmation notification |
--update-failed --error-code=N | Helper failed; show the error with the code |
--update-cancelled | User cancelled during install; no changes applied |
Manual check
Open Settings > License and Updates and click Check Now. This runs the same service call as the startup poll but always surfaces the result — including the "Up to date" state.
Tip — The startup check respects Update.CheckOnStartup; the manual button does not. Use Check Now if you have disabled startup checks on a metered connection.