Originated from UDN post:
https://udn.unrealengine.com/s/question/0D5QP000007QWuz0AG/additionalplugindirectories-outside-of-project-visual-studio-and-zenstore
QUOTE:
TLDR: Use of 'escape' paths in Uproject's AdditionalPluginDirectories seems to break Visual Studio launches, as well as Zenstore.
Much more detail:
We added a AdditionalPluginDirectories like the code chunk to our MyGame/MyGame.uproject. The important part to note is that it starts with "../" which 'escapes' the MyGame folder. And, we have a code plugin in that directory. This mostly works.
What works: Editor Builds, packaged builds (e..g from our farm)
What doesn't: Win64 builds launched from Visual Studio, Zenstore launches. These are detailed below
1) Win64 builds from Visual Studio fail to launch
Our engineers have a common habit of cooking locally, but not the full pak/stage step. For example, "RunUAT.bat BuildCookRun -project="MyGame/MyGame.uproject" -noP4 -nocompileeditor -utf8output -build -cook -SkipCookingEditorContent -stage -iterate
Then, we launch say Development|Win64 from Visual Studio with default debugging commands. This used to work.
That cook leaves a game\MyGame\Saved\StagedBuilds\Windows\RemappedPlugins folder with the .uplugin folder. If I launch from Development\Win64 from Visual Studio, it fails with a "LogPluginManager: Error: Unable to load plugin 'CompanySharedPlugin'. Aborting."
Debugging this, in FProjectDescriptor::Read(), in non-Editor builds, it adds this path: "C:/path/to/unreal/game/MyGame/Saved/Cooked/Windows/RemappedPlugins" . Problem is, that doesn't exist. The cook above created "Saved/StagedBuilds/Windows/RemappedPlugins" Thus, it fails.
That's with the stock empty (blank) commandline arguments from Visual Studio. It doesn't use that StagedBuilds*\RemappedPlugins folder. It looks like commandline PLUGIN= or setting %UE_ADDITIONAL_PLUGIN_PATHS%, it could succeed, but that requires every engineer to edit things locally.
2) Zenstore launches on platforms fail
This is even more tricky to debug. A zenstore cook of that platform left the artifacts in Saved\StagedBuilds\<Platform>\remappedplugins . Launching from my Platform, it "../../../mygame/../remappedplugins/" to the list of folders to look in.
In FStorageServerPlatformFile::DirectoryExists(), the call to MakeStorageServerPath() turns stock paths into items like "../../../engine/Plugins" -> "/
{engine}/Plugins" . That works well, but it might be a code change to find the RemappedPlugins folder.
Yes, I know Zenstore is still under development, but it's been a huge win for Platform iteration.
I've looked ahead to the 5.4 (live snapshot) in Perforce, and I don't see changes to PluginManager.cpp, ProjectDescriptor.cpp that look like it would fix it.
Thanks for your help.
"AdditionalPluginDirectories": [ "../CompanyShared/Plugins" ],
Here's a snippet of code to add to FProjectDescriptor::Read() that seems to at least fix the Development|Win64 launch. Zenstore for Platforms is likely to need more changes.
// If this is a packaged build and there are additional directories, they need to be remapped to the packaged location if (FPlatformProperties::RequiresCookedData() && AdditionalPluginDirectoriesValue->Num() > 0) { AdditionalPluginDirectories.Empty(); FString RemappedDir = FPaths::ProjectDir() / TEXT("../RemappedPlugins/"); if (FPaths::IsRelative(RemappedDir)) { RemappedDir = IFileManager::Get().ConvertToAbsolutePathForExternalAppForWrite(*RemappedDir); } AddPluginDirectory(RemappedDir); // BEGIN ADDED CODE // After cooking with RunUAT.bat BuildCookRun -project="MyGame/MyGame.uproject" -noP4 -nocompileeditor -utf8output -build -cook -SkipCookingEditorContent -stage -iterate -platform=Windows // and then launching from VisualStudio, by default, right now RemappedDir=="Saved/Cooked/Windows/RemappedPlugins", but the RunUAT left files in // "Saved/StagedBuilds/Windows/RemappedPlugins" . So, add a second search path transparently. #if !UE_BUILD_SHIPPING && !WITH_EDITOR static const FString COOKED_FOLDER = TEXT("/Cooked/"); static const FString STAGED_FOLDER = TEXT("/StagedBuilds/"); if (RemappedDir.Contains(COOKED_FOLDER)) { FString RemappedDir2 = RemappedDir.Replace(*COOKED_FOLDER, *STAGED_FOLDER); AddPluginDirectory(RemappedDir2); } #endif // END ADDED CODE }
i have this problem UE4CC-Windows-58DC12AF4B97F057BD108FBFF569B2E9_0000
I am not able to find world outliner how to enable it?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
Delay nodes occasionally don't fire the "Completed" output in a nativized build
Teleporter in the Creative Hub is Locked and cannot be accessed
What method is used to fill polygonal regions when drawing spline mesh at run time?
How to achieve HLSL Multiple Render Target in Material blueprints?
How does Character rotate in the current position in the blueprint?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-209807 in the post.
0 |
Component | UE - Foundation - Core |
---|---|
Target Fix | 5.6 |
Created | Mar 14, 2024 |
---|---|
Updated | Sep 18, 2024 |