In Regards to Updating Plugins-File Deletes itself

Hello,

I’m not sure if this is a bug or user error.

I got a question about community plugins. I would like to know what is the appropriate way to update plugins across UE4 versions. I tried updating the VictoryPlugin but came across an error when packaging, I believe it had to do with the static lib 32 file.

I attempted to update the plugin for the UE4 4.4 version here A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums and got an error when trying to package the updated plugin version.

So, I rolled back to the 4.3 plugin version I had working in UE4.3, added it to UE4.4 and now it builds fine.

==============================Here is the print out of it working

“MainFrameActions: Packaging (Windows (32-bit)): UnrealBuildTool: [18/20] lib.exe VictoryBPLibrary-Win32-Shipping-Static.lib
MainFrameActions: Packaging (Windows (32-bit)): UnrealBuildTool: [20/20] link.exe DroneZeroGravity-Win32-Shipping.exe
MainFrameActions: Packaging (Windows (32-bit)): UnrealBuildTool: Creating library E:\Documents\Unreal Projects\DroneZeroGravity\Binaries\Win32\DroneZeroGravity-Win32-Shipping.lib and object E:\Documents\Unreal Projects\DroneZeroGravity\Binaries\Win32\DroneZeroGravity-Win32-Shipping.exp

========================"And here it is not working with the updated plugin"

[2014.08.15-08.22.22:735][834]MainFrameActions: Packaging (Windows (32-bit)): UnrealBuildTool: -------- End Detailed Actions Stats -----------------------------------------------------------

[2014.08.15-08.22.22:735][834]MainFrameActions: Packaging (Windows (32-bit)): UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: E:\Documents\Unreal Projects\DroneZeroGravity\Plugins\VictoryPlugin\Binaries\Win32\VictoryBPLibrary-Win32-Shipping-Static.lib

The most interesting part is, since I knew the static.lib file was there I actually watched it in the folder as I packaged the game for shipping and the file deleted itself during the process. Is this suppose to happen? I’m not sure if I am doing something wrong.

I wonder if that is why so many people where having trouble packaging the plugin before. Maybe some files where getting deleted while building? I guess we have to be very careful when updating our plugin files.

Again everything is working in 4.4 with packaging and shipping using the 4.3 plugin version, just not sure how to update the plugins for future updates without .lib files deleting on their own.

Thanks

Hi Isaac,

Unfortunately Epic provides only minimal support for plugins that are created by members of the community. In the case of upgrading a plugin to work with a new version of the Engine, that is something you would need to work through yourself (if the source code for the plugin is made available), or wait for the creator of the plugin to update it for the new Engine version. There is no “silver bullet” that will work for all plugins and all Engine versions.

With regards to the missing .lib file, I will do some testing in that area and see what I can find.

Hi ,

Thank you for responding. No worries, I understand Epic can only provide so much support for community plugins. I just thought it was odd when packaging the .lib file was deleting itself from the folder during the packaging process.

Hopefully this sheds some light to other users that may be having this issue.

If you find anything else out after testing let me know. That way I can mark this thread as answered.

Thank you for your help ,

Would you be able to tell me exactly which versions of the Victory plugin you were using when you were attempting to package your project in 4.4? I was able to use the version from July 28th in a project created in 4.3.1 and packaged without any problems. I upgraded that project to 4.4 and completely replaced the plugin with the current version (August 15) and tried packaging. That was unsuccessful, but I received a different error than the one you provided. I then replaced the current version of the plugin with the one from July 28th again, and that packaged fine.

" I upgraded that project to 4.4 and completely replaced the plugin with the current version (August 15) and tried packaging. That was unsuccessful, but I received a different error than the one you provided. I then replaced the current version of the plugin with the one from July 28th again, and that packaged fine."

The only difference in the plugin code between the August 15th and the July 28th version is that I was forced to add the Interface file or my plugins wont compile in 4.4

So I am currently being prevented from compiling new plugin binaries unless I include this new file, a limitation I only have experienced in 4.4, which prompted me to write this thread about it:

I get a precompiled header error when I try to compile the plugin binary without including the interface file (shown below)

#Summary

  1. people can’t package game using my latest plugin version which has the interface file
  2. As of 4.4 , I can’t compile new binaries without the interface file, a limitation introduced in 4.4

#Code

This is the interface file I was forced to add, a limitation I’ve never had until 4.4, and previous versions of my plugin that work in packaged games did not have this interface file as I did not have to include it:

/*

	By 

*/
#pragma once

#include "ModuleManager.h"


/**
 * The public interface to this module.  In most cases, this interface is only public to sibling modules 
 * within this plugin.
 */
class IVictoryBPLibrary : public IModuleInterface
{

public:

	/**
	 * Singleton-like access to this module's interface.  This is just for convenience!
	 * Beware of calling this during the shutdown phase, though.  Your module might have been unloaded already.
	 *
	 * @return Returns singleton instance, loading the module on demand if needed
	 */
	static inline IVictoryBPLibrary& Get()
	{
		return FModuleManager::LoadModuleChecked< IVictoryBPLibrary >( "VictoryBPLibrary" );
	}

	/**
	 * Checks to see if this module is loaded and ready.  It is only valid to call Get() if IsAvailable() returns true.
	 *
	 * @return True if the module is loaded and ready to use
	 */
	static inline bool IsAvailable()
	{
		return FModuleManager::Get().IsModuleLoaded( "VictoryBPLibrary" );
	}
};

#I take It Back

Actually, I just removed those interface files and now I am no longer getting that compile error, I have no idea why I was getting it earlier.

I will send Isaac and the Community a new version and see if the issue persists now that I’ve removed the above mentioned interface files

#Download

Here is the new version I just finished uploading!

If and/or Isaac could try using this build and give feedback that would help me know what to do in the future to maximize compatibility!

I include all the source code in the download for anyone who wants to see the method I am using

#Working

I have verified that this latest version of my plugin works in a packaged game, and the Get Screen Resolutions node works as well!

I just wanted to confirm that everything appears to be working fine with the Victory Plugin on 4.4. I included the latest version of the plugin (August 17th) and packaged a 4.4 project and the package process completed successfully.

Yes thanks, everything is ok on my end. I thought I would just share my experience in case anyone else was having the same issue.