From e993bba7ca0b9c6872615db9e5a0a6e5b4016518 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 07:33:06 +0000 Subject: [PATCH] Add framework-dependent build support without .NET runtime Co-authored-by: VictoriousRaptor <10308169+VictoriousRaptor@users.noreply.github.com> --- .github/workflows/dotnet.yml | 16 +++++++- .../Net9.0-FrameworkDependent.pubxml | 18 +++++++++ Scripts/post_build.ps1 | 39 +++++++++++++------ appveyor.yml | 10 +++-- 4 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 Flow.Launcher/Properties/PublishProfiles/Net9.0-FrameworkDependent.pubxml diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 0659ae645..c05cec035 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -65,7 +65,14 @@ jobs: with: name: Flow Installer path: | - Output\Packages\Flow-Launcher-*.exe + Output\Packages\Flow-Launcher-Setup.exe + compression-level: 0 + - name: Upload Framework-Dependent Setup + uses: actions/upload-artifact@v6 + with: + name: Flow Installer Framework-Dependent + path: | + Output\Packages\Flow-Launcher-Setup-FD.exe compression-level: 0 - name: Upload Portable Version uses: actions/upload-artifact@v6 @@ -74,6 +81,13 @@ jobs: path: | Output\Packages\Flow-Launcher-Portable.zip compression-level: 0 + - name: Upload Framework-Dependent Portable Version + uses: actions/upload-artifact@v6 + with: + name: Portable Version Framework-Dependent + path: | + Output\Packages\Flow-Launcher-Portable-FD.zip + compression-level: 0 - name: Upload Full Nupkg uses: actions/upload-artifact@v6 with: diff --git a/Flow.Launcher/Properties/PublishProfiles/Net9.0-FrameworkDependent.pubxml b/Flow.Launcher/Properties/PublishProfiles/Net9.0-FrameworkDependent.pubxml new file mode 100644 index 000000000..1d640ea15 --- /dev/null +++ b/Flow.Launcher/Properties/PublishProfiles/Net9.0-FrameworkDependent.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + Release + Any CPU + net9.0-windows10.0.19041.0 + ..\Output\Release-FD\ + win-x64 + false + False + False + False + + diff --git a/Scripts/post_build.ps1 b/Scripts/post_build.ps1 index dc7c39407..e0d4c531a 100644 --- a/Scripts/post_build.ps1 +++ b/Scripts/post_build.ps1 @@ -61,18 +61,17 @@ function Validate-Directory ($output) { } -function Pack-Squirrel-Installer ($path, $version, $output) { +function Pack-Squirrel-Installer ($path, $version, $output, $inputPath = "$path\Output\Release", $suffix = "") { # msbuild based installer generation is not working in appveyor, not sure why Write-Host "Begin pack squirrel installer" $spec = "$path\Scripts\flowlauncher.nuspec" - $input = "$path\Output\Release" Write-Host "Packing: $spec" - Write-Host "Input path: $input" + Write-Host "Input path: $inputPath" # dotnet pack is not used because ran into issues, need to test installation and starting up if to use it. - nuget pack $spec -Version $version -BasePath $input -OutputDirectory $output -Properties Configuration=Release + nuget pack $spec -Version $version -BasePath $inputPath -OutputDirectory $output -Properties Configuration=Release $nupkg = "$output\FlowLauncher.$version.nupkg" Write-Host "nupkg path: $nupkg" @@ -82,13 +81,13 @@ function Pack-Squirrel-Installer ($path, $version, $output) { New-Alias Squirrel $env:USERPROFILE\.nuget\packages\squirrel.windows\1.9.0\tools\Squirrel.exe -Force # why we need Write-Output: https://github.com/Squirrel/Squirrel.Windows/issues/489#issuecomment-156039327 # directory of releaseDir in squirrel can't be same as directory ($nupkg) in releasify - $temp = "$output\Temp" + $temp = "$output\Temp$suffix" Squirrel --releasify $nupkg --releaseDir $temp --setupIcon $icon --no-msi | Write-Output Move-Item $temp\* $output -Force Remove-Item $temp - $file = "$output\Flow-Launcher-Setup.exe" + $file = "$output\Flow-Launcher-Setup$suffix.exe" Write-Host "Filename: $file" Move-Item "$output\Setup.exe" $file -Force @@ -106,11 +105,22 @@ function Publish-Self-Contained ($p) { dotnet publish -c Release $csproj /p:PublishProfile=$profile } -function Publish-Portable ($outputLocation, $version) { +function Publish-Framework-Dependent ($p) { - & $outputLocation\Flow-Launcher-Setup.exe --silent | Out-Null + $csproj = Join-Path "$p" "Flow.Launcher/Flow.Launcher.csproj" -Resolve + $profile = Join-Path "$p" "Flow.Launcher/Properties/PublishProfiles/Net9.0-FrameworkDependent.pubxml" -Resolve + + # we call dotnet publish on the main project. + # The other projects should have been built in Release at this point. + dotnet publish -c Release $csproj /p:PublishProfile=$profile +} + +function Publish-Portable ($outputLocation, $version, $suffix = "") { + + & "$outputLocation\Flow-Launcher-Setup$suffix.exe" --silent | Out-Null mkdir "$env:LocalAppData\FlowLauncher\app-$version\UserData" - Compress-Archive -Path $env:LocalAppData\FlowLauncher -DestinationPath $outputLocation\Flow-Launcher-Portable.zip + Compress-Archive -Path $env:LocalAppData\FlowLauncher -DestinationPath "$outputLocation\Flow-Launcher-Portable$suffix.zip" -Force + Remove-Item "$env:LocalAppData\FlowLauncher" -Recurse -Force } function Main { @@ -122,15 +132,22 @@ function Main { Delete-Unused $p $config + # Build self-contained version (includes .NET runtime) + Write-Host "Building self-contained version..." Publish-Self-Contained $p - Remove-CreateDumpExe $p $config $o = "$p\Output\Packages" Validate-Directory $o Pack-Squirrel-Installer $p $v $o - Publish-Portable $o $v + + # Build framework-dependent version (requires .NET runtime to be installed) + Write-Host "Building framework-dependent version..." + Publish-Framework-Dependent $p + Remove-CreateDumpExe $p "Release-FD" + Pack-Squirrel-Installer $p $v $o "$p\Output\Release-FD" "-FD" + Publish-Portable $o $v "-FD" } } diff --git a/appveyor.yml b/appveyor.yml index 03542e8d2..98d6f56ef 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -49,10 +49,14 @@ after_test: artifacts: - path: 'Output\Release\Flow.Launcher.Plugin.*.nupkg' name: Plugin nupkg -- path: 'Output\Packages\Flow-Launcher-*.exe' +- path: 'Output\Packages\Flow-Launcher-Setup.exe' name: Squirrel Installer +- path: 'Output\Packages\Flow-Launcher-Setup-FD.exe' + name: Squirrel Installer Framework-Dependent - path: Output\Packages\Flow-Launcher-Portable.zip name: Portable Version +- path: Output\Packages\Flow-Launcher-Portable-FD.zip + name: Portable Version Framework-Dependent - path: 'Output\Packages\FlowLauncher-*-full.nupkg' name: Squirrel nupkg - path: 'Output\Packages\RELEASES' @@ -82,7 +86,7 @@ deploy: Please report any bugs or issues over at the [main repository](https://github.com/Flow-Launcher/Flow.Launcher/issues)' auth_token: secure: ij4UeXUYQBDJxn2YRAAhUOjklOGVKDB87Hn5J8tKIzj13yatoI7sLM666QDQFEgv - artifact: Squirrel Installer, Portable Version, Squirrel nupkg, Squirrel RELEASES + artifact: Squirrel Installer, Squirrel Installer Framework-Dependent, Portable Version, Portable Version Framework-Dependent, Squirrel nupkg, Squirrel RELEASES force_update: true on: branch: dev @@ -91,7 +95,7 @@ deploy: release: v$(flowVersion) auth_token: secure: ij4UeXUYQBDJxn2YRAAhUOjklOGVKDB87Hn5J8tKIzj13yatoI7sLM666QDQFEgv - artifact: Squirrel Installer, Portable Version, Squirrel nupkg, Squirrel RELEASES + artifact: Squirrel Installer, Squirrel Installer Framework-Dependent, Portable Version, Portable Version Framework-Dependent, Squirrel nupkg, Squirrel RELEASES draft: true force_update: true on: