private void CreateOfficeKeys(Type addin, IEnumerable <object> addinClassAttributes, bool useSystemKey) { if (Settings.AddinRegMode == SingletonSettings.AddinRegMode.On) { AddinRegAnalyzer reg = new AddinRegAnalyzer(); reg.CreateKey(addin, addinClassAttributes, useSystemKey); } }
private void DeleteOfficeKeys(Type addin, IEnumerable <object> addinClassAttributes, AddinRegAnalyzer.KeyTarget keyTarget) { if (Settings.AddinRegMode == SingletonSettings.AddinRegMode.On) { AddinRegAnalyzer reg = new AddinRegAnalyzer(); reg.DeleteKey(addin, addinClassAttributes, keyTarget); } }
private string CreateRegistryFileContent(Assembly addinAssembly, IEnumerable <object> assemblyAttributes, SingletonSettings.RegisterMode mode, Type addinClassType, IEnumerable <object> addinClassAttributes) { AddinClassInformation addinClass = AddinClassInformation.Create( addinAssembly, assemblyAttributes, mode, addinClassType, addinClassAttributes); StringBuilder content = new StringBuilder(); content.AppendLine(String.Format("[{0}\\{1}]", addinClass.ClassesRoot, addinClass.ProgId)); content.AppendLine(String.Format("@=\"{0}\"", addinClass.FullClassName)); content.AppendLine(String.Empty); content.AppendLine(String.Format("[{0}\\{1}\\CLSID]", addinClass.ClassesRoot, addinClass.ProgId)); content.AppendLine("@=\"{" + addinClass.Id.ToString() + "}\""); content.AppendLine(String.Empty); content.AppendLine("[" + addinClass.ClassesRoot + "\\CLSID\\{" + addinClass.Id + "}]"); content.AppendLine(String.Format("@=\"{0}\"", addinClass.FullClassName)); content.AppendLine(String.Empty); content.AppendLine("[" + addinClass.ClassesRoot + "\\CLSID\\{" + addinClass.Id + "}\\InprocServer32]"); content.AppendLine("@=\"mscoree.dll\""); content.AppendLine("\"ThreadingModel\"=\"Both\""); content.AppendLine(String.Format("\"Class\"=\"{0}\"", addinClass.FullClassName)); content.AppendLine(String.Format("\"Assembly\"=\"{0}, Version={1}, Culture={2}, PublicKeyToken={3}\"", addinClass.AssemblyName, addinClass.AssemblyVersion, addinClass.AssemblyCulture, addinClass.AssemblyToken)); content.AppendLine(String.Format("\"RuntimeVersion\"=\"{0}\"", addinClass.RuntimeVersion)); if (Settings.Codebase) { content.AppendLine(String.Format("\"Codebase\"=\"{0}\"", addinClass.Codebase)); } content.AppendLine(String.Empty); content.AppendLine("[" + addinClass.ClassesRoot + "\\CLSID\\{" + addinClass.Id + "}\\InprocServer32\\" + addinClass.AssemblyVersion + "]"); content.AppendLine(String.Format("\"Class\"=\"{0}\"", addinClass.FullClassName)); content.AppendLine(String.Format("\"Assembly\"=\"{0}, Version={1}, Culture={2}, PublicKeyToken={3}\"", addinClass.AssemblyName, addinClass.AssemblyVersion, addinClass.AssemblyCulture, addinClass.AssemblyToken)); content.AppendLine(String.Format("\"RuntimeVersion\"=\"{0}\"", addinClass.RuntimeVersion)); if (Settings.Codebase) { content.AppendLine(String.Format("\"Codebase\"=\"{0}\"", addinAssembly.CodeBase)); } content.AppendLine(String.Empty); content.AppendLine("[" + addinClass.ClassesRoot + "\\CLSID\\{" + addinClass.Id + "}\\ProgId]"); content.AppendLine(String.Format("@=\"{0}\"", addinClass.ProgId)); content.AppendLine(String.Empty); content.AppendLine("[" + addinClass.ClassesRoot + "\\CLSID\\{" + addinClass.Id + "}\\Implemented Categories\\{" + addinClass.ComponentCategoryId.ToString() + "}]"); if (Settings.AddinRegMode == SingletonSettings.AddinRegMode.On) { Dictionary <object, Type> attributeTypes = GetAttributeTypes(addinClassType.GetCustomAttributes(true)); bool isMultiAddin = AddinRegAnalyzer.IsMultiAddin(addinClassType); KeyValuePair <object, Type> multi = AddinRegAnalyzer.GetMultiRegisterAttribute(attributeTypes); KeyValuePair <object, Type> comAddin = AddinRegAnalyzer.GetComAddinAttribute(attributeTypes); if (null != comAddin.Key) { string name = (string)comAddin.Value.InvokeMember("Name", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetField, null, comAddin.Key, new object[0]); string description = (string)comAddin.Value.InvokeMember("Description", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetField, null, comAddin.Key, new object[0]); int loadBehavior = (int)comAddin.Value.InvokeMember("LoadBehavior", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetField, null, comAddin.Key, new object[0]); int commandLineSafe = (int)comAddin.Value.InvokeMember("CommandLineSafe", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetField, null, comAddin.Key, new object[0]); if (true == isMultiAddin && multi.Key != null) { IEnumerable products = multi.Value.InvokeMember("Products", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetField, null, multi.Key, new string[0]) as IEnumerable; if (null != products) { foreach (object item in products) { int productIndex = Convert.ToInt32(item); CreateOfficeRegistryKey(content, _multiRegisterIn[productIndex], addinClass.ProgId, name, description, loadBehavior, commandLineSafe, Settings.Mode == SingletonSettings.RegisterMode.System); } } } else if (false == isMultiAddin) { string key = GetKeyName(addinClassType); CreateOfficeRegistryKey(content, key, addinClass.ProgId, name, description, loadBehavior, commandLineSafe, Settings.Mode == SingletonSettings.RegisterMode.System); } } } return(content.ToString()); }
private void CreateOfficeKeys(Type addin, IEnumerable<object> addinClassAttributes, bool useSystemKey) { if (Settings.AddinRegMode == SingletonSettings.AddinRegMode.On) { AddinRegAnalyzer reg = new AddinRegAnalyzer(); reg.CreateKey(addin, addinClassAttributes, useSystemKey); } }
private void DeleteOfficeKeys(Type addin, IEnumerable<object> addinClassAttributes, AddinRegAnalyzer.KeyTarget keyTarget) { if (Settings.AddinRegMode == SingletonSettings.AddinRegMode.On) { AddinRegAnalyzer reg = new AddinRegAnalyzer(); reg.DeleteKey(addin, addinClassAttributes, keyTarget); } }