Skip to content

Commit f8860d6

Browse files
committed
Enhance installer URL handling in publish workflow to support multiple formats and improve output for release notes
1 parent 4320be3 commit f8860d6

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

.github/workflows/publish-winget.yml

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,36 @@ jobs:
5656
$release = Invoke-RestMethod -Headers $headers -Uri "${{ github.event.release.url }}"
5757
}
5858
59-
# Find MSI installer URL
60-
$installerUrl = $release.assets |
61-
Where-Object { $_.name -like "*windows_amd64.msi" } |
62-
Select-Object -ExpandProperty browser_download_url -First 1
59+
$urls = @(
60+
($assets | Where-Object { $_.name -like "*windows_amd64.msi" } | Select-Object -ExpandProperty browser_download_url -First 1),
61+
($assets | Where-Object { $_.name -like "*windows_amd64.exe" } | Select-Object -ExpandProperty browser_download_url -First 1),
62+
($assets | Where-Object { $_.name -like "*windows_arm64.msi" } | Select-Object -ExpandProperty browser_download_url -First 1),
63+
($assets | Where-Object { $_.name -like "*windows_arm64.exe" } | Select-Object -ExpandProperty browser_download_url -First 1)
64+
) | Where-Object { $_ }
6365
64-
if (-not $installerUrl) {
65-
Write-Error "No MSI installer found for version ${{ env.VERSION }}"
66-
exit 1
66+
if (-not $urls -or $urls.Count -eq 0) {
67+
throw "No Windows installers found in v${{ env.VERSION }}."
6768
}
6869
69-
# Write single-line output safely
70-
"installer_url=$installerUrl" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
70+
# Pick a primary (x64 MSI) for consumers that expect a single URL
71+
$primary = $urls | Where-Object { $_ -like "*.msi" -and $_ -match "amd64" } | Select-Object -First 1
72+
if (-not $primary) { $primary = $urls[0] }
73+
74+
# Output: single-line
75+
"installer_url=$primary" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
76+
77+
# Output: multiline list of all installer URLs
78+
$delimUrls = "EOF_$([Guid]::NewGuid().ToString('N'))"
79+
Add-Content $env:GITHUB_OUTPUT "installer_urls<<$delimUrls"
80+
$urls | ForEach-Object { Add-Content $env:GITHUB_OUTPUT $_ }
81+
Add-Content $env:GITHUB_OUTPUT $delimUrls
7182
72-
# Write multiline release notes using a unique delimiter
73-
$delim = "EOF_$([Guid]::NewGuid().ToString('N'))"
74-
Add-Content -Path $env:GITHUB_OUTPUT -Value "release_notes<<$delim"
75-
Add-Content -Path $env:GITHUB_OUTPUT -Value ($release.body -replace "`r","")
76-
Add-Content -Path $env:GITHUB_OUTPUT -Value $delim
83+
# Output: release notes (multiline; normalize to LF)
84+
$notes = ($release.body ?? "") -replace "`r",""
85+
$delimNotes = "EOF_$([Guid]::NewGuid().ToString('N'))"
86+
Add-Content $env:GITHUB_OUTPUT "release_notes<<$delimNotes"
87+
Add-Content $env:GITHUB_OUTPUT $notes
88+
Add-Content $env:GITHUB_OUTPUT $delimNotes
7789
7890
- name: Update Winget Manifest
7991
run: |

0 commit comments

Comments
 (0)