Установка подключаемого модуля Word 2003 на Server 2003

Мне передали чью-то груду вещей. Среди этих элементов - надстройка Word 2003 (VSTO 2005 SE, .NET 2.0), которая, как сообщается, работала нормально в 2007 году, но наша среда развертывания требует 2003 года. Она, по-видимому, отлично устанавливается для Office 2003 - ошибок нет, отображается в добавлении / удалении - но панель инструментов в самом Word недоступна.

Предположительно, это отлично работает в чьей-то тестовой среде, но я никогда не видел, чтобы это работало в нашей общей среде разработки. У нас есть проект установки / развертывания как с MSI, так и с setup.exe. (Я пробовал упаковывать вещи в CAB на всякий случай, я пробовал с независимыми установленными prereqs, без видимой разницы.)

MSI, setup.exe, щелкните правой кнопкой мыши при установке проекта установки / развертывания в Visual Studio, ни один из этих методов не сообщает об ошибке, но ни один из этих методов также не позволяет отобразить панель инструментов в Word 2003 на Server 2003. Однако, если я указываю Visual Studio на winword.exe для отладки и запускаю проект, появляется кнопка надстройки. Он продолжает появляться в более поздних независимых клиентских стартапах. Он остается доступным как панель инструментов до тех пор, пока я не удалю его явно с помощью добавления / удаления или щелчка правой кнопкой мыши для удаления или запуска MSI и удаления.

Итак, теперь я в недоумении - что происходит при запуске отладки, чего не происходит во время типичной установки / развертывания?

РЕДАКТИРОВАТЬ: хорошо, обновления. Создал чистую надстройку VSTO 2005 для Word 2003, новое имя надстройки, чистый лист. Такое же поведение наблюдается с «голым» проектом, чистым реестром как на Server 2003, так и на XP Pro. Я локальный администратор на XP, я администратор домена на коробке 2003.


person andrewbadera    schedule 20.01.2009    source источник
comment
Этот сайт предназначен ТОЛЬКО для вопросов по программированию. Прочтите FAQ.   -  person Serafina Brocious    schedule 20.01.2009
comment
Разработка надстроек очень хорошо связана с программированием.   -  person Dirk Vollmar    schedule 20.01.2009
comment
Вы совершенно правы - я совершенно неправильно понял. Мои извинения.   -  person Serafina Brocious    schedule 20.01.2009


Ответы (2)


Вот несколько вопросов по устранению неполадок:

  • Какие надстройки вы разрабатываете? Общая надстройка или VSTO? Если ВСТО, то какая версия?
  • Какую ОС вы используете? Vista может быть непростой задачей ...
  • Проверьте LoadBehavior своей надстройки в реестре. Вы найдете значение либо в

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\<add-in class name>\
    

    or

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Word\Addins\<add-in classname>\
    

Если значение LoadBehavior равно 2, надстройка была отключена во время запуска. Это происходит, когда Word не может создать экземпляр надстройки, обычно из-за того, что надстройка выдает необработанное исключение или - гораздо чаще - из-за неправильной регистрации надстройки.

Вы проверили, правильно ли установлена ​​среда выполнения VSTO в целевой системе?

Однако даже если вы используете VSTO, надстройка для Word по-прежнему выглядит как классическая надстройка COM, которая расширяет классический интерфейс IDTExtensibility2. Такие надстройки необходимо зарегистрировать следующим образом:

  • Один из двух разделов реестра выше, чтобы сообщить Word имя класса надстройки, а также дополнительную информацию, такую ​​как поведение загрузки и описание.
  • Имя класса надстройки должно быть зарегистрировано в

    HKEY_CLASSES_ROOT\<add-in classname>\CSLID
    
  • Правильная версия COM-компонента должна быть зарегистрирована в (где {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} - это guid компонента, как указано в HKEY_CLASSES_ROOT \\ CSLID):

    HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    

Следующие две ссылки также могут помочь вам еще больше сузить проблему:

HOWTO: устранение неполадок надстроек Visual Studio и Office

Устранение неполадок надстроек Outlook COM - Использование ProcMon

person Dirk Vollmar    schedule 20.01.2009
comment
Как уже отмечалось, VSTO (я думаю - по какой-то причине у этого парня также было предварительное требование для исправления KB совместно используемой надстройки) и Server 2003. К сожалению, LoadBehavior ничем не отличается между тем, когда он работает, и когда он не работает. (Спасибо, что указали на локального пользователя, мне было интересно, почему! На локальной машине.) - person andrewbadera; 20.01.2009
comment
Извините, на самом деле поведение загрузки может варьироваться от 2 до 3, но любое значение не приводит к разнице. - person andrewbadera; 20.01.2009
comment
Хорошо, поэтому оно начинается с 3, затем после того, как Word запускает надстройку, значение становится 2. Есть ли где-нибудь журнал, который я могу изучить? - person andrewbadera; 20.01.2009
comment
Спасибо за всю отличную информацию, все еще копаю ... Среда выполнения VSTO в порядке, переустановите на всякий случай. Я просто не понимаю, почему он отлично работает при отладке Visual Studio, а после отладки он работает нормально автономно, но не запускается автономно после начальной установки. - person andrewbadera; 20.01.2009
comment
Вы пытались удалить (переименовать) все соответствующие разделы реестра для установки надстройки, а затем повторно установить надстройку? Возможно, ваш отладчик добавил другую версию под ключ CLSID, что сбивает Word с толку. - person Dirk Vollmar; 21.01.2009
comment
Не могли бы вы положить сюда дамп соответствующих ключей реестра? - person Dirk Vollmar; 21.01.2009
comment
Просто зашел в офис сегодня утром, попробую его убрать. Дело в том, что причина, по которой это было свалито на меня, заключалась в том, что у кого-то также были проблемы в своей собственной среде разработки / тестирования, и он не мог их решить, поэтому это было передано мне. - person andrewbadera; 21.01.2009
comment
Они сообщают, что они заставили его работать на «barebone-версии» Server 2003, к сожалению, это не роскошь, которую я могу себе позволить. Получу дамп после чистки и переустановлю, еще раз спасибо. - person andrewbadera; 21.01.2009
comment
Но в любом случае эти проблемы возникли в другой среде без подключения отладчика Visual Studio. - person andrewbadera; 21.01.2009
comment
Спасибо за топ на ProcMon - БОЛЬШАЯ утилита. К сожалению, кроме успешных операций это не говорит ни о чем. Он ДЕЙСТВИТЕЛЬНО показывает мне, где для LoadBehavior установлено значение 2, но нет никаких указаний на то, почему. Построчное сравнение еще не проводилось; прямо сейчас пробую VPC вне этой среды. - person andrewbadera; 21.01.2009

РЕДАКТИРОВАТЬ: полное доверие к сборке надстройки стало исправлением. Кажется, не работает ни с чем, кроме полного доверия.

//

Закончил открытие заявки в Microsoft, и они рассказали мне о VSTO_SUPPRESSDISPLAYALERTS:

http://msdn.microsoft.com/en-us/library/ms269003(VS.80).aspx

По умолчанию это значение равно 1; установка его в 0 предоставляет всплывающее диалоговое окно, за исключением того, что в противном случае скрывается.

Детали все еще прорабатываются, и я продолжу обновлять эту ветку, но теперь у нас наконец есть основа для продвижения вперед:

Could not load file or assembly 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)


************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)
File name: 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.Security.Policy.PolicyException: Execution permission cannot be acquired.
   at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission)
   at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.HandleOnlineOffline(Exception e, String basePath, String filePath)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadStartupAssembly(EntryPoint entryPoint, Dependency dependency, Dictionary`2 assembliesHash)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ConfigureAppDomain()
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadAssembliesAndConfigureAppDomain(IHostServiceProvider serviceProvider)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadEntryPointsHelper(IHostServiceProvider serviceProvider)
person andrewbadera    schedule 22.01.2009