Cross-platform Stride.Launcher - #3027
Conversation
7b72320 to
03f94a4
Compare
| /// 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; |
There was a problem hiding this comment.
nitpick: Could this property not be used directly?
There was a problem hiding this comment.
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() |
There was a problem hiding this comment.
nitpick: This method seems to be unused. It would be great to integrate with RunNewApp somehow
There was a problem hiding this comment.
It's used by the Avalonia plugin. It's needed for the designer.
03f94a4 to
e96d938
Compare
|
@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. |
|
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:
Other than that I didnt notice nothing unusual 😅 |
|
@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? |
|
I don't remember if it does work. I assume since it's restoring packages it should. I guess we'll know soon. |
e96d938 to
e161999
Compare
ab329f3 to
482bd28
Compare
e161999 to
4950387
Compare
|
@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 |
309b8af to
73d9945
Compare
|
@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. |
f5ba39f to
9f482bb
Compare
|
Looking at PR desc:
I wasn't sure, Is it ready for review or still WIP? |
|
I would say, it is ready for review and testing on both Windows and Linux. I think I have one or two small fixes to push that I did on another branch. |
Jklawreszuk
left a comment
There was a problem hiding this comment.
I would say that LGTM! It's great that you added the documentation - it'll be useful to anyone who wants to revisit the code. As for the Launcher, I haven't noticed any significant visual glitches or anything like that.
What I tested on Linux:
- Installing/Uninstalling multiple instances of GameStudio - works as intended
- Including installing xenko versions - works ? (However, xenko is located in .../stride/sources/launcher/Stride.Launcher/bin/Debug/xenko/version/xenko.version.nupkg)
- Clicking in all the urls, release notes - works
|
I'll admit I didn't try to install any Xenko versions. I'll look at it. |
|
The right question should actually be: do we still want to include any older Xenko versions in the launcher? It's not open-source and very obsolete. cc @xen2 |
|
I would say, not necessary anymore. |
|
@xen2 I removed references to Xenko and updated the related documentation (under docs/launcher). |
…n the test thread instead of inside the global log handler
…project/config sync)
…env workaround, deploy via solution config, remove no-op EmbeddedResource Update)
…en in Game Studio)
Regenerates shader C# (.sdsl keys / .sdfx effects) for pre-4.4 projects by restoring the version-matched Stride.VisualStudio.Commands and calling it over ServiceWire, the way the old VS Custom Tool did. 4.4+ generates it at build. - New client-side ABI assembly Stride.VisualStudio.Commands.Interfaces so ServiceWire's assembly-qualified type keys match the released server. - 4.0/4.1 spoke ServiceWire 5.3.4 (BinaryFormatter, no compression); read that handshake payload with System.Formats.Nrbf since BinaryFormatter is gone. - Hidden command, listed under 'legacy'; RevealHiddenHelpAction restores --help.
Right-click a solution, project, or .sdsl/.sdfx file in Solution Explorer to regenerate the shader C# for Stride 4.0-4.3 projects, delegating to the bundled stride CLI (generate-legacy-shader-code). 4.4+ generates it at build. Output streams live into a dialog while the CLI runs. Placed on the per-node "…EXPLORE" context-menu groups (solution/project/item).
…e net8 out-of-process one Remove the old net472 VSPackage implementation (StridePackage, StrideCommandsProxy, NShader language service, classifiers, code generators, .vsct/.vsixmanifest) and its obsolete integration tests, and promote the net8 VisualStudio.Extensibility extension (built in parallel as Package.New) into its place as Stride.VisualStudio.Package. Delivery is unchanged: PackageInstall still installs the vsix, and the nuspec/VSIXPlugin still pack it as tools\Stride.vsix. The nuspec now sources the SDK-built vsix via a $VsixPath$ token that VSIXPlugin fills from the project's $(OutputPath), so it tracks $(Configuration)/$(TargetFramework) instead of hardcoding the bin subfolder.
Version the VS package and its delivery nuspec independently of the engine (VersionPrefix 4.4.0, hand-bumped), with an optional prerelease VersionSuffix wired through release-vspackage.yml and the nuget pack step; the .vsix manifest version follows AssemblyVersion (numeric only, suffix stripped). Fix PackageInstall to uninstall the current extension id (was the stale Stride.VisualStudio.Package.2022), plus the legacy id for clean upgrades.
…sed) Generate sdsl.tmLanguage.json from Stride's shader vocabulary (Reserved.cs) via a .NET 10 file-based generator, so the coloring never drifts from the language. Not wired into anything yet: the out-of-process extension can't register a TextMate grammar (needs a classic pkgdef asset). Kept for a future VS Code extension / LSP baseline; see syntaxes/README.md.
…fx highlighting The out-of-process extension can't register a TextMate grammar (its generated manifest can't carry the classic VsPackage/MefComponent assets VS needs). So a small classic (net472) content-only companion VSIX does just that: it ships the generated grammar + a companion .tmTheme + a language-configuration, registered via a pkgdef, giving instant .sdsl/.sdfx coloring in VS. The grammar and its generator move here from Stride.VisualStudio.Package/syntaxes. Delivery packs both vsixes into the one NuGet package; PackageInstall installs both in a single call and uninstalls both.
Modernize the Visual Studio extension (out-of-process) + SDSL syntax highlighting
|
@xen2 merged master and fixed the conflicts. I wondering if the Launcher should also be optionally installed through the Stride CLI ( |
I was also hesitating about that. I think first we want to decide how we distribute the launcher in the future:
|
|
Imo the Stride CLI is reasonable as a .NET tool, as it is going to be used by programmers used to work with the console. However, the launcher is more oriented towards the general public, and requiring someone that only wants to try Stride to go to the console to write commands is a barrier many people won't pass through. Another issue some people have (although it is minor imho) is that Stride is not "installed" in the usual sense, but downloaded and referenced from the NuGet cache. I've talked with several people that have used other engines and find this highly confusing (specially if they are not very versed in NuGet). |
|
👋 About this PR. It was closed along with a batch of others during a If the change is still relevant, the way forward is to rebase onto the latest |

PR Details
New Launcher using Avalonia instead of WPF. Still needs some love.
Related Issue
#1503
Types of changes
Checklist