Outlook 2002 C # COM сборка надстройки с VS2008 не запускается - PullRequest
0 голосов
/ 03 октября 2010

Я столкнулся с любопытной проблемой: Я пытаюсь создать надстройку для Outlook 2002 с помощью Visual Studio 2008, используя общий шаблон надстройки. Я хочу простой привет мир в методе OnStartUpComplete. Это прекрасно работает на моей машине для разработки, но совсем не на чистой машине с outlook 2002. Я использовал сгенерированный проект установки для установки надстройки. Поведение загрузки изменилось с 3 на 2 после запуска outlook, но не возникает ни исключение, ни какая-либо другая ошибка Что мне нужно сделать, чтобы надстройка работала не на компьютере разработчика?

Большое спасибо,

Michael

1 Ответ

0 голосов
/ 31 мая 2011

Я считаю, что вы жертва политики блокировки.добавить обходной ключ в реестр, тогда он работает.современные офисные версии или vsto создает ключ при установке.Эффект таков: установите также современный офис, и надстройка теперь также загружается в старом офисе.пожалуйста, посмотрите

фрагмент кода, взятый из NetOffice http://netoffice.codeplex.com

public static void RegisterFunction(Type type)
{
            try
            {
                // add codebase value
                Assembly thisAssembly = Assembly.GetAssembly(typeof(ExampleClassicAddin));
                RegistryKey key = Registry.ClassesRoot.CreateSubKey("CLSID\\{" + type.GUID.ToString().ToUpper() + "}\\InprocServer32\\1.0.0.0");
                key.SetValue("CodeBase", thisAssembly.CodeBase);
                key.Close();

                key = Registry.ClassesRoot.CreateSubKey("CLSID\\{" + type.GUID.ToString().ToUpper() + "}\\InprocServer32");
                key.SetValue("CodeBase", thisAssembly.CodeBase);
                key.Close();

                // add bypass key
                // http://support.microsoft.com/kb/948461
                key = Registry.ClassesRoot.CreateSubKey("Interface\\{000C0601-0000-0000-C000-000000000046}");
                string defaultValue = key.GetValue("") as string;
                if (null == defaultValue)
                    key.SetValue("", "Office .NET Framework Lockback Bypass Key");
                key.Close();

                // add addin key
                Registry.ClassesRoot.CreateSubKey(@"CLSID\{" + type.GUID.ToString().ToUpper() + @"}\Programmable");
                Registry.CurrentUser.CreateSubKey(_addinRegistryKey + _prodId);
                RegistryKey rk = Registry.CurrentUser.OpenSubKey(_addinRegistryKey + _prodId, true);
                rk.SetValue("LoadBehavior", Convert.ToInt32(3));
                rk.SetValue("FriendlyName", _addinName);
                rk.SetValue("Description", "NetOffice COMAddinExample with classic UI");
                rk.Close();
            }
            catch (Exception ex)
            {
                string details = string.Format("{1}{1}Details:{1}{1}{0}", ex.Message, Environment.NewLine);
                MessageBox.Show("An error occured." + details, "Register " + _addinName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...