Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
 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);
     }
 }