Установка подключаемого модуля Word 2003 на Server 2003 - PullRequest
1 голос
/ 20 января 2009

Мне передали чужую кучу вещей. Среди этих элементов есть надстройка для 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.

Ответы [ 2 ]

2 голосов
/ 20 января 2009

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

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

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

    или

    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} - это идентификатор компонента, указанный в HKEY_CLASSES_ROOT \\ CSLID):

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

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

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

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

1 голос
/ 22 января 2009

EDIT: полное доверие для сборки надстройки оказалось исправлением. Кажется, не работает ни в чем, кроме Full Trust.

//

Закончилось открытие заявки в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...