Skip to content

Cross-platform Stride.Launcher#3027

Open
Kryptos-FR wants to merge 23 commits intomasterfrom
feature/launcher-avalonia-cherrypick
Open

Cross-platform Stride.Launcher#3027
Kryptos-FR wants to merge 23 commits intomasterfrom
feature/launcher-avalonia-cherrypick

Conversation

@Kryptos-FR
Copy link
Copy Markdown
Member

@Kryptos-FR Kryptos-FR commented Dec 30, 2025

PR Details

New Launcher using Avalonia instead of WPF. Still needs some love.

Related Issue

#1503

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • My change requires a change to the documentation.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have built and run the editor to try this change out.

@Kryptos-FR Kryptos-FR added the area-Launcher Stride Launcher label Dec 30, 2025
@Kryptos-FR Kryptos-FR force-pushed the feature/launcher-avalonia-cherrypick branch 3 times, most recently from 7b72320 to 03f94a4 Compare December 30, 2025 18:49
/// Returns path of Launcher (we can't use Assembly.GetEntryAssembly().Location in .NET Core, especially with self-publish).
/// </summary>
/// <returns></returns>
internal static string? GetExecutablePath() => Environment.ProcessPath;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: Could this property not be used directly?

Copy link
Copy Markdown
Member Author

@Kryptos-FR Kryptos-FR Jan 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I just replaced code from the previous implementation to make it cross-platform without changing the overall structure. We could inline it manually.

On the other hand, the method name is a bit more explicit. It's likely inlined anyway by the compiler, so it's just a matter of preference.

}

// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: This method seems to be unused. It would be great to integrate with RunNewApp somehow

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's used by the Avalonia plugin. It's needed for the designer.

@Kryptos-FR Kryptos-FR force-pushed the feature/launcher-avalonia-cherrypick branch from 03f94a4 to e96d938 Compare January 7, 2026 20:45
@Kryptos-FR
Copy link
Copy Markdown
Member Author

Kryptos-FR commented Jan 8, 2026

@Jklawreszuk I have merged back master to this PR's branch.

It's mostly working but it would be nice to also support (un-)installing the Stride packages on Linux even if we can't fully use it there yet.

Did you want to contribute to it? The branch is on this repo, so feel free to push commits if you want.

@Jklawreszuk
Copy link
Copy Markdown
Collaborator

Jklawreszuk commented Jan 13, 2026

I am sorry, but it took some time to review all the files.Overall, it looks great! A quite accurate implementation of the original Launcher. However, I have a few comments:

  • The ‘See release notes’ feature does not work - also an empty button is displayed. A hint that might be helpful - MarkdownScrollViewer.Markdown property is always null.
  • It would be nice to implement a custom title bar like in the original, but this can be done in a separate PR.

Other than that I didnt notice nothing unusual 😅

@Jklawreszuk
Copy link
Copy Markdown
Collaborator

@Kryptos-FR Once the changes have been merged, I will try to adapt Launcher to Linux if necessary. But I think that installing/uninstalling packages works correctly, no?

@Kryptos-FR
Copy link
Copy Markdown
Member Author

I don't remember if it does work. I assume since it's restoring packages it should.

I guess we'll know soon.

@Kryptos-FR Kryptos-FR force-pushed the feature/launcher-avalonia-cherrypick branch from e96d938 to e161999 Compare April 7, 2026 20:55
@xen2 xen2 force-pushed the master branch 2 times, most recently from ab329f3 to 482bd28 Compare April 16, 2026 07:56
@Kryptos-FR Kryptos-FR force-pushed the feature/launcher-avalonia-cherrypick branch from e161999 to 4950387 Compare April 21, 2026 15:19
@Kryptos-FR Kryptos-FR marked this pull request as ready for review April 21, 2026 15:20
@Jklawreszuk
Copy link
Copy Markdown
Collaborator

@Kryptos-FR Have you tested it on Windows? It seems to work fine on Linux. They only issue I see is the empty button in the release notes page
image

Kryptos-FR and others added 6 commits April 25, 2026 07:31
Complete the launcher README with build, versioning and layout notes, and
add a hub-and-spoke documentation set under docs/launcher/ covering
architecture, view models, views, version management, self-update,
settings, localization, packaging, lifecycle and cross-platform notes.
Captures the full delta between the current Avalonia branch and the WPF
launcher on master — including silent regressions that are not marked
with TODO/FIXME — and a phased roadmap to close the gap for
cross-platform parity. Notes Stride.Metrics and PrivacyPolicyHelper as
deliberate, permanent removals.
…ncher port roadmap

Adds a test-infrastructure phase covering bootstrap of Stride.Launcher.Tests,
view-model and Avalonia-headless integration tests, and CI wiring for both
Windows and Linux.
@Kryptos-FR Kryptos-FR force-pushed the feature/launcher-avalonia-cherrypick branch from 309b8af to 73d9945 Compare April 25, 2026 05:38
@Kryptos-FR
Copy link
Copy Markdown
Member Author

@Jklawreszuk I have also tested on Linux. I fixed a few minors issues, though the phantom button remains. There are now a few docmentation files about the launcher. If you can review them, that would be nice. One of the document is a tracker for this current porting effort and will be removed once all tasks are completed.

- name: Build
run: |
dotnet build build\Stride.Launcher.sln `
-m:1 -nr:false `
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: remove this since default in now parallel builds on master (#3133).

…wn ViewModelBase

Copies the ViewModelBase implementation from Stride.Core.Presentation (minus
IDestroyable/IViewModelServiceProvider) so the runner has no external MVVM
dependency. Renames SetProperty → SetValue to match Stride's API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-Launcher Stride Launcher

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants