mirror of
https://github.com/qmlnet/qmlnet.git
synced 2026-05-15 14:15:54 -06:00
[GH-ISSUE #87] Moving Qt binaries into external packages that can be dynamically downloaded? #56
Labels
No labels
bug
enhancement
help wanted
help wanted
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/qmlnet#56
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @pauldotknopf on GitHub (Dec 23, 2018).
Original GitHub issue: https://github.com/qmlnet/qmlnet/issues/87
Currently, we have these packages:
Qml.Net.WindowBinariesQml.Net.LinuxBinariesQml.Net.OSXBinariesEach of these packages contains the entire Qt/QML runtime, as well as a lib required by Qml.Net to interoperate (
libQmlNet.so). That means each build/release contains the entire Qt/QML runtime, even though the Qt version stays the same.I'm thinking of updating the above packages to only contain the
libQmlNet.soneeded for Qml.Net to work. The Qt/QML runtime will be dynamically downloaded and installed either at runtime, or during deployment. I will host the tarballs on GitHub. Each tarball will have a "version.txt" that will declare the Qt version. On startup of the app, if a Qt/QML runtime isn't detected, it will be downloaded.If you are deploying your app for production, chances are, you don't want users to dynamically download Qt/QML. Instead, you can download the archive yourself, and reference it via a
QMLNET_QML_RUNTIME_LOCATIONenvironment variable.@pauldotknopf commented on GitHub (Dec 23, 2018):
Another option is to create additional NuGet packages, splitting the Qt/QML runtime and Qml.Net.
The
*BinariesQmlpackages will rarely be updated.@devmil commented on GitHub (Dec 23, 2018):
Yes! I really like that idea.
I think the second approach fits better in dotnet publish scenarios because it works out of the box and integrates nicely in the underlying Nuget mechanism.
@pauldotknopf commented on GitHub (Dec 23, 2018):
My concerns with the NuGet package approach is:
libQmlNet.sofind it's runtime dependencies? Currently, since they are in the same package, the Qt dependencies are easily found viarpath. Otherwise, I'd have to search for the Qt libs first, and then updateLD_LIBRARY_PATHbeforePInvokeinglibQmlNet.so.libQmlNet.so, and just poke around. If they are in another package, I won't have that ability. I'd have to somehow perform aDllImport("QtCore.dll")and then determine the path at runtime (like we currently do withlibQmlNet.so.@pauldotknopf commented on GitHub (Apr 10, 2019):
I've created a repo that builds tar files for the Qt runtime for linux-64, win-64 and osx-64. Two tar balls are created for each, one for the runtime (no building/no header files) and another for dev (building).
https://github.com/qmlnet/qt-runtimes/releases/tag/releases
I'm thinking about adding another NuGet package that will help discovery/downloading/installing/configuring Qt runtimes. Something like
Qml.Net.RuntimeManager.The API would look something like this:
The
Qml.Net.Versions.RequiredRuntimeVersionwould be baked intoQml.Net.Implementors could add this line in their
Program.Main, or usedotnet qml installto install it locally for packaging/distributing.@pauldotknopf commented on GitHub (Apr 13, 2019):
Solves as of
0.8.0.@vadi2 commented on GitHub (Jun 4, 2019):
I'm looking at deploying a Qml.Net app - it looks like
QMLNET_QML_RUNTIME_LOCATIONnever made it in. What's the recommended way to deploy the binaries?