Add framework-dependent build support without .NET runtime

Co-authored-by: VictoriousRaptor <10308169+VictoriousRaptor@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-01-27 07:33:06 +00:00
parent 557f11b22b
commit e993bba7ca
4 changed files with 68 additions and 15 deletions

View file

@ -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:

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
<PublishDir>..\Output\Release-FD\</PublishDir>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun>False</PublishReadyToRun>
<PublishTrimmed>False</PublishTrimmed>
</PropertyGroup>
</Project>

View file

@ -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"
}
}

View file

@ -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: