internal void Initialize(Assembly startupAsm, string configDir, string addinsDir, string databaseDir)
{
lock (LocalLock) {
if (initialized)
return;
Initialize (this);
string asmFile = new Uri (startupAsm.CodeBase).LocalPath;
startupDirectory = System.IO.Path.GetDirectoryName (asmFile);
string customDir = Environment.GetEnvironmentVariable ("MONO_ADDINS_REGISTRY");
if (customDir != null && customDir.Length > 0)
configDir = customDir;
if (string.IsNullOrEmpty (configDir))
registry = AddinRegistry.GetGlobalRegistry (this, startupDirectory);
else
registry = new AddinRegistry (this, configDir, startupDirectory, addinsDir, databaseDir);
if (registry.CreateHostAddinsFile (asmFile) || registry.UnknownDomain)
registry.Update (new ConsoleProgressStatus (false));
initialized = true;
ActivateRoots ();
OnAssemblyLoaded (null, null);
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler (OnAssemblyLoaded);
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;
}
}