private static Assembly InstallDll(string dllFileName)
        {
            DirectoryInfo directoryInfo;
            string        str      = dllFileName;
            FileInfo      fileInfo = new FileInfo(dllFileName);

            directoryInfo = (string.IsNullOrWhiteSpace(AppDomain.CurrentDomain.DynamicDirectory) ? new DirectoryInfo(IOHelper.GetMapPath("")) : new DirectoryInfo(AppDomain.CurrentDomain.DynamicDirectory));
            str           = string.Concat(directoryInfo.FullName, "\\", fileInfo.Name);
            Assembly   assembly   = null;
            PluginInfo pluginInfo = null;

            try
            {
                try
                {
                    File.Copy(dllFileName, str, true);
                }
                catch
                {
                    Guid guid = Guid.NewGuid();
                    File.Move(str, string.Concat(str, guid.ToString("N"), ".locked"));
                    File.Copy(dllFileName, str, true);
                }
                assembly = Assembly.Load(AssemblyName.GetAssemblyName(str));
                if (assembly.FullName.StartsWith("Himall.Plugin"))
                {
                    pluginInfo = PluginsManagement.AddPluginInfo(fileInfo);
                    IPlugin fullName = Instance.Get <IPlugin>(pluginInfo.ClassFullName);
                    fullName.WorkDirectory = fileInfo.Directory.FullName;
                }
            }
            catch (IOException oException)
            {
                Log.Error(string.Concat("插件复制失败(", dllFileName, ")!"), oException);
                if (pluginInfo != null)
                {
                    PluginsManagement.RemovePlugin(pluginInfo);
                }
            }
            catch (Exception exception)
            {
                Log.Error(string.Concat("插件加载失败(", dllFileName, ")!"), exception);
                if (pluginInfo != null)
                {
                    PluginsManagement.RemovePlugin(pluginInfo);
                }
            }
            return(assembly);
        }