How can I share my UE application (not a game)

Hi,

I’d like to continue the topic that was started here: Is there a plan to release the Slate UI for other non-UE4 applications? - UI - Epic Developer Community Forums since bumping it didnt work and I really would like to know the answer to a question:

How can I take SlateViewer.exe (or any other application based on Slate) out of the engine and share it as single or multiple files so it’s a standalone program?

As someone posted earlier:

You will have to include the DLLs for
any modules that you’re using, i.e.
YourApp-Core.dll, YourApp-Slate.dll
etc

Ok, but how? how can I generate or find them? When I build SlateViewer using Development Win64 configuration none of these aren’t generated.

What exactly do I need to do to make my application 'standalone?

Any tips really appreciated,

Thanks.

Ah sorry fo misunderstanding your quastion. So you have problem fiding Core and other modules? Can’t you find them in binaries?

I’m not trying to learn how to create a program using UE. I already know that.

I know how to create standalone application using UE source code.

I know Slate. I know C++.

What I do NOT know is a way to actually DEPLOY standalone application and this is why I posted this question.

Anyone

You dont see Core and Slate bineries in binery directory?

Someone mentioned that if I compile SlateViewer program and I want to take it out from Binaries folder and make it work I’ll have to get SlateViewer-Core.dll, SlateViewer-Slate.dll etc… so I need all modules that I’m depending on in my program but they are not generated, I dont know where to find them.

To understand the problem you can just build SlateViewer from source code, go to Engine/Binaries/Win64, grab SlateViewer.exe and copy it to any other directory (or desktop). When you try to run it nothing will happen.

I guess thats because SlateViewer-Core.dll and other are nowhere to be found in the new location.

When you compile your tool does you see modules compileing?

yes I do…

Do you see linker creating dlls?

I see engine creating it’s dll’s when I rebuild the project but I dont see SlateViewer-Core.dll being created

But then you build your tool. Hmm i got some crazy idea, maybe size of engine makes you lose sight over build process, try moving your tool to game project. Game Project envriament is exact the same engine and plugin envriament, so if you place code there it will compile it toghether with game project. Diffrence is compied code from game project will land in game project directories, including bineries allowing you to do things in clean way.

If it does not help i recomandyou to check buildscripts configurations of engine applications. Maybe we not noticeing something

Also did you made target script for your application? without it i kind of susspect it will be natural that UBT will link resulting exe to main engine dlls, insted of compiling them sepretly for this app

Also did you made target script for
your application? without it i kind of
susspect it will be natural that UBT
will link resulting exe to main engine
dlls, insted of compiling them
sepretly for this app

Yup, that was it. I just had ShouldCompileMonolithic method to return true all the time in Target.cs file. Now all dll’s are generated as expected but this does not solve the problem. When I copy SlateViewer.exe to another directory (with all .dlls) it still doesnt work. Whats interesting, ShaderCompileWorker works just fine after moving it to other directory.

SlateViewer.exe runs OK while in Engine/Binaries/Win64 directory but does not run at all when taken siomwhere else.

bumping again

so maybe lets ask for it differently… Does anyone knows how to deploy standalone program created in UE?

Sorry for laaaaate reponce (or rether forgot about you :p). The issue is definily linking to engine, so i compired SlateViewer and ShaderCompileWorker target confioguration and there 2 interesting vables in SetupGlobalEnvironment which both are false in shader worker

UEBuildConfiguration.bCompileAgainstEngine = false;
UEBuildConfiguration.bCompileAgainstCoreUObject = false; //this is true in SlateViewer 

So think i setting those 2 to false will seperate you executable from engine, thats only diffrence i see between the 2.

bCompileAgainstCoreUObject must be true for application that uses Slate since FCoreStyle uses FLegacySlateFontInfoCache during initialization which extends FGCObject. If there is no CoreUObject in the project, you’ll get assertion failed.

As far as I know they are using Slate to create Launcher so I’d like to know how to setup my project the same way…