VSTO: установка надстройки для Outlook Office 2003

Я разместил здесь статью (Как установить разрешения для моей надстройки VSTO outlook?), и я смог создать свой установщик. Я думал, что как только установщик построится, все будет работать нормально.

Я ошибался. Он работает примерно на половине компьютеров, на которых я запускал программу установки. Моя проблема в том, что другая половина не работает. Я пытаюсь установить надстройку для Outlook Office 2003.

Я даже зашел так далеко, что создал шаги вручную с помощью командного файла. Похоже, что на этих компьютерах ничего не работает, и я не могу найти общий знаменатель, который я мог бы исключить или который заставит работать надстройку VSTO.

Вот командный файл, который я использую. Что я делаю / не делаю с этим неправильно?

Мне действительно пригодилась бы помощь эксперта по VSTO. Спасибо!!!!

ИЗМЕНИТЬ. Я изменил параметры командного файла и реестра, чтобы отразить их недавние обновления. Я также приложил текст ошибки, поступающей от компьютеров, которые не работают.

@echo off

echo Installing Visual Studio for Office Runtime (SE 2005)...
..\VSTO\vstor.exe

echo Creating Directories...
mkdir "c:\program files\Project Archiver"

echo Installying Add-In... 
echo Copying files...
xcopy /Y *.dll "c:\program files\Project Archiver"
xcopy /Y *.manifest "c:\program files\Project Archiver"

echo Setting Security...
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -polchgprompt off
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -u -ag All_Code -url "c:\program files\Project Archiver\ProjectArchiver.dll" FullTrust -n "Project Archiver" -d "Outlook plugin for archiving"
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -u -ag All_Code -url "c:\program files\Project Archiver\Microsoft.Office.Interop.SmartTags.dll" FullTrust -n "Project Archiver" -d "Outlook plugin for archiving"
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -polchgprompt on

echo Loading Registry Values...
"c:\program files\Project Archiver\VSTO_settings.reg"

echo "That should do it."
pause

Я взял настройки реестра (упомянутые в пакетном файле выше) прямо с компьютера, на котором работало это приложение. Я использую следующие настройки реестра VSTO:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ProjectArchiver\CLSID]
@="{27830B8D-F7A1-4945-AC4A-47661B9ED36D}"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}]
@="ProjectArchiver -- an addin created with VSTO technology"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\InprocServer32]
@=hex(2):25,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,50,00,72,00,6f,00,67,00,72,\
  00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,4d,00,69,00,63,00,\
  72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,\
  00,5c,00,56,00,53,00,54,00,4f,00,5c,00,38,00,2e,00,30,00,5c,00,41,00,64,00,\
  64,00,69,00,6e,00,4c,00,6f,00,61,00,64,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,00,00
"ManifestName"="ProjectArchiver.dll.manifest"
"ThreadingModel"="Both"
"ManifestLocation"="C:\\Program Files\\Project Archiver\\"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\ProgID]
@="ProjectArchiver"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\Programmable]

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\VersionIndependentProgID]
@="ProjectArchiver"

[HKEY_CLASSES_ROOT\ProjectArchiver]
@=""





[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}]
@="ProjectArchiver -- an addin created with VSTO technology"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\InprocServer32]
@=hex(2):25,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,50,00,72,00,6f,00,67,00,72,\
  00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,4d,00,69,00,63,00,\
  72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,\
  00,5c,00,56,00,53,00,54,00,4f,00,5c,00,38,00,2e,00,30,00,5c,00,41,00,64,00,\
  64,00,69,00,6e,00,4c,00,6f,00,61,00,64,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,00,00
"ManifestName"="ProjectArchiver.dll.manifest"
"ThreadingModel"="Both"
"ManifestLocation"="C:\\Program Files\\Project Archiver\\"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\ProgID]
@="ProjectArchiver"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\Programmable]

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\VersionIndependentProgID]
@="ProjectArchiver"

[HKEY_LOCAL_MACHINE\Software\Classes\ProjectArchiver]
@=""

[HKEY_LOCAL_MACHINE\Software\Classes\ProjectArchiver\CLSID]
@="{27830B8D-F7A1-4945-AC4A-47661B9ED36D}"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Outlook\Addins\ProjectArchiver]
"Manifest"="C:\\Program Files\\Project Archiver\\ProjectArchiver.dll.manifest"
"LoadBehavior"=dword:00000003
"FriendlyName"="ProjectArchiver"
"Description"="ProjectArchiver -- an addin created with VSTO technology"
"CommandLineSafe"=dword:00000001

Я получаю следующую ошибку:

Не удалось загрузить файл или сборку Microsoft.Office.Interop.Outlook, Version = 11.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c или одну из его зависимостей. Система не может найти указанный файл.

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   at ProjectArchiver.ThisAddIn.Initialize()
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.CreateStartupObject(EntryPoint entryPoint, Dependency dependency, Assembly objectAssembly)
   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)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].



************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Microsoft.VisualStudio.Tools.Applications.Runtime
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.816
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualStudio.Tools.Applications.Runtime/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.Tools.Applications.Runtime.dll
----------------------------------------
Microsoft.Office.Tools.Common
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.816
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.Office.Tools.Common/8.0.0.0__b03f5f7f11d50a3a/Microsoft.Office.Tools.Common.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
ProjectArchiver
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/Callidus/Project%20Archiver/ProjectArchiver.DLL
----------------------------------------

person Jerry    schedule 17.07.2009    source источник
comment
Для тех, кто заинтересован, я отметил ВСЕ шаги, которые мне пришлось предпринять, чтобы это заработало: jerryandcheryl.net/jspot/2009/07/vsto-with-outlook-2003.html   -  person Jerry    schedule 22.07.2009
comment
Ссылка Джерри была перемещена на jspot.jerryhanel.com/2009 / 21.07 / vsto-with-outlook-2003   -  person Keith    schedule 30.04.2012


Ответы (2)


Итак, очевидно, что Outlook автоматически отключает надстройку. Еще один ответ с несколько другим мнением:

Перейдите в Пуск -> Панель управления -> Система -> Дополнительно -> Переменные среды -> Системные переменные и добавьте VSTO_SUPPRESSDISPLAYALERTS со значением 0. Это отобразит на экране сообщения об ошибках, а не отключит VSTO в автоматическом режиме. Если вы предпочитаете хранить журнал на диске, добавьте VSTO_LOGALERTS и установите для него значение 1.

Надеюсь, это предоставит вам дополнительную информацию, которая поможет нам решить вашу проблему!

person Paul-Jan    schedule 21.07.2009
comment
Увидев эту ошибку, я кое-что обнаружил ... Хотя ИТ-специалисты клялись, что PIA была автоматически установлена ​​на всех компьютерах ... это не так. Я поместил установщик PIA как часть моего сценария установки, и (хотя теперь есть больше кнопок, которые можно нажимать), он работает 100% времени. БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ !! (ps для тех, кто ищет, вы можете найти установщик PIA для 2003 по адресу microsoft.com/downloads/) - person Jerry; 21.07.2009
comment
Да, извините за то, что вам пришлось пройти этапы один за другим, вместо того, чтобы иметь готовый ответ, но я рад, что вы все продумали ... молодцы! - person Paul-Jan; 21.07.2009

Начнем с чего-то тривиального: на компьютере, где что-то не работает, вы проверяли реестр, чтобы убедиться, что все записи были правильно добавлены? Например, запускался ли файл .bat под учетной записью, которой действительно разрешена запись в HKEY_CLASSES_ROOT?

На каком-нибудь из этих компьютеров установлена ​​Vista? Может быть, они запускают пакет Office без UAC или с полной учетной записью администратора? В этом случае записи должны быть добавлены в HKEY_LOCAL_MACHINE.

Изменить

Хорошо, если вы уверены, что что-то добавлено в реестр правильно, следующим шагом будет RegMon (или procmon, если хотите). Запустите regmon, запустите хост-приложение офиса и посмотрите, где оно находится, а где не ищет надстройку VSTO. Начните с фильтра на основе имени надстройки, затем расширяйте или сужайте в зависимости от объема данных.

person Paul-Jan    schedule 17.07.2009
comment
Спасибо за ссылку. Я скручивал себя в узлы, чтобы добиться этого. Чтобы ответить на ваши вопросы: 1) Пользователи являются администраторами своих ящиков. 2) Я перенес вещи в HKLM из HKCU. 3) Так как админы смогли писать в HKCR. Я проверил эти записи на нескольких компьютерах. Тем не менее ... не повезло. Я схожу с ума. - person Jerry; 21.07.2009
comment
Просто проверил номер версии ОС на всех рассматриваемых ПК (если это поможет): Операционная система: XP Professional (5.1, сборка 2600) Пакет обновления 2. Версия Office: Office Professional 2003 (Outlook 2003, версия 11.8206.8221 SP3) - person Jerry; 21.07.2009
comment
Я использовал RegMon, чтобы увидеть, что происходит на ПК, которые работают, и на ПК, которые не работают. Оба они имеют доступ к одному и тому же набору записей реестра. Оба добиваются УСПЕХА на одних и тех же линиях. Единственная разница в том, что ПК, которые не работают, сразу устанавливают LoadBehavior от 3 до 2. (отключено). Правильно ли я установил разрешения в строке CASPOL ?? Я предполагаю, что сделал на основе форумов Microsoft. - person Jerry; 21.07.2009