![]() |
v2.44
|
|
The requirements to start using the API are as follows:
This page describes the design of Renga's plugin system and contains the instructions to help you author Renga plugins. Please see the sample plugin implementations in [RengaCOMSDK dir]/Samples.
A basic Renga plugin consists of:
.rndesc extension, which contains plugin description and loading instructions.Each description file should be placed into its own subdirectory in the Plugins subdirectory of Renga's installation folder. Names of the description file should match the plugin's folder name. For example, for a plugin located in [RengaInstallation]/Plugins/Sample folder, the description file should be [RengaInstallation]/Plugins/Sample/Sample.rndesc.
All plugins are loaded into the Renga process on application start and are unloaded on exit.
Typical folder structure:
Example Sample.rndesc file:
To create your own plugin in C#, create a new class library project in Microsoft Visual Studio.
To use the Renga system API, you must add a reference to the Renga COM component. You can do this in two ways:
.csproj file (used in Samples): Attention: The reference to the Renga type library must have the "Embed interop types" property set to False. This is necessary for the interop assembly to be generated when building the plugin. The reason is that the Renga .Net SDK libraries also depends on this assembly.
Renga.NET.PluginUtility.dll.Renga.NET8.PluginUtility.dll.Both DLLs are located in the [RengaCOMSDK dir]/Net folder.
In the library, add a class that implements the Renga.IPlugin interface (both explicit and implicit implementations are supported).
The interface has two methods:
bool Renga.IPlugin.Initialize(string pluginFolder), which is called on plugin initialization;void Renga.IPlugin.Stop(), which is called when the plugin is being unloaded.To create your own plugin in Visual C++, create a new dynamic-link library (DLL) project in Microsoft Visual Studio.
Add a new source file main.cpp to define DllMain.
Example of main.cpp:
Add a new source or header files to define your Plugin.
To generate API types from the Renga Type Library, you must both point the compiler to the TLB folder and import the TLB in code.
[RengaCOMSDK dir]\tlb (i.e., the directory that contains RengaCOMAPI.tlb)Then import the type library in code, placing the import before any Renga C++ SDK headers (or any headers that use Renga API types):
Alternatively, you can import by absolute path without changing include directories:
In the library, add a class implementing Renga::IPlugin. It has two methods to implement in the plugin:
bool Renga::IPlugin::initialize(const wchar_t* pluginPath), which is called on plugin initialization;void Renga::IPlugin::stop(), which is called when the plugin is being unloaded.Then place the EXPORT_PLUGIN(YourPluginClassName); macro after the plugin class declaration.
You need to place the plugin's description file into the corresponding directory of Renga's installation (see the Plugin system overview section above). Any other files, including the plugin binary itself, may be placed arbitrarily. Renga locates the binary file depending on the path stated in the PluginFilename tag of the description file.
Remember to deploy the Renga.NET.PluginUtility.dll assembly (for .NET Framework plugins) or Renga.NET8.PluginUtility.dll assembly (for .NET 8 plugins) and any other resources your plugin might depend on.
You may also want to create your own installer for the plugin. In this case, you should determine the location of the Renga installation.
You can determine it using the InstallLocation attribute in the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{5129DC7E-FC1E-45DD-B9C9-82940798C85E} for Renga StandardHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{AD5DA106-F1CF-453A-9E44-510164E2F932} for Renga ProfessionalIf some errors prevent the plugin from loading successfully, you can check the application log for details. The log is stored in localappdata%\Renga Software\Renga\AecApp.log.