Commit 4de7b50
Phase 3: release.yml ships Setup.exe + Velopack auto-update channel
The release workflow now builds both the existing single-file Portable lane AND a Velopack-friendly Setup lane, runs vpk pack to produce DiffViewer-Setup.exe + per-release nupkg packages, and uploads every artifact to the GitHub release in one softprops call. Existing DiffViewer.exe users see one new asset on the release page (Setup.exe) and unchanged behavior for the portable download (renamed to DiffViewer-portable.exe for clarity).
Workflow pipeline (after tag push):
1. dotnet publish in Portable mode -> 150 MB single-file DiffViewer-portable.exe
2. dotnet tool restore (brings in pinned vpk 1.1.1 from .config/dotnet-tools.json)
3. vpk download github -> pulls prior release nupkgs into releases-dir/ for delta computation. Tolerates 'nothing to download' (first release with Velopack has no prior package)
4. dotnet publish in Setup mode -> non-single-file folder layout in publish-setup/
5. vpk pack --shortcuts StartMenuRoot -> produces full + (optionally) delta nupkgs + DiffViewer-win-Setup.exe + RELEASES into releases-dir/. The --shortcuts StartMenuRoot flag avoids the Phase 1 spike finding that Velopack 1.1.1's uninstaller does not clean up the Desktop shortcut
6. Copy / rename artifacts into artifacts/ and upload via softprops/action-gh-release
Per-release assets a user sees on GitHub after this change:
- DiffViewer-portable.exe (single-file, manual updates -- existing behavior, just renamed)
- DiffViewer-Setup.exe (Velopack installer, subscribes to in-app auto-updates)
- DiffViewer-X.Y.Z-full.nupkg (Velopack consumes -- users don't download directly)
- DiffViewer-X.Y.Z-delta.nupkg (Velopack consumes, second release onward)
- RELEASES + releases.win.json + assets.win.json (Velopack metadata)
Why softprops instead of vpk upload github: we need to upload DiffViewer-portable.exe alongside the Velopack artifacts, so a single softprops upload is simpler than two separate upload steps. The in-app updater reads release assets via the GitHub REST API and is agnostic to which CI tool attached them.
README install section now recommends Setup.exe as primary download with the portable option as the no-install alternative. SmartScreen note still applies to both -- code signing comes with Phase 4 once SignPath approves the OSS application submitted in Phase 0.
Tests: 1403 passing, unchanged (this PR doesn't touch production code). dotnet build -c Release succeeds with 0 warnings, 0 errors.
AI-Local-Session: 4519f6b6-393a-4476-8efa-410e5396c3a9
AI-Cloud-Session: 72f9e474-60ab-42c2-b2a0-28fee827cbbb
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent f0a1c3e commit 4de7b50
3 files changed
Lines changed: 131 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
36 | 41 | | |
37 | 42 | | |
| 43 | + | |
38 | 44 | | |
39 | 45 | | |
40 | | - | |
| 46 | + | |
41 | 47 | | |
42 | 48 | | |
43 | | - | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
44 | 70 | | |
45 | 71 | | |
46 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
47 | 142 | | |
48 | 143 | | |
49 | 144 | | |
| |||
83 | 178 | | |
84 | 179 | | |
85 | 180 | | |
86 | | - | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
87 | 185 | | |
88 | 186 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
17 | 27 | | |
18 | 28 | | |
19 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
203 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
204 | 218 | | |
205 | 219 | | |
206 | 220 | | |
| |||
0 commit comments