Проект установки надстроек Outlook 2003 с проблемой развертывания COM DLL - PullRequest
0 голосов
/ 07 апреля 2010

Я разработал надстройку для Outlook 2003, которая использует погашение com dll. Я создал проект установки Visual Studio 2008, добавил настраиваемое действие для запуска "caspol.exe -machine -addgroup 1 -strong -hex [ключ] -noname -noversion FullTrust -n \" Имя \ "-описание \" desc \ " и переместил ключи реестра в программном обеспечении в HKLM, как описано в http://msdn.microsoft.com/en-us/library/cc136646.aspx#AutoDeployVSTOse_InstallingtheAddinforAllUsers, чтобы обеспечить совместимость всех пользователей.

Я включил файл redemption.dll в программу установки с помощью vsdrfCOMSelfReg (vsdrfCOM выдал ошибку).

Моя проблема: при установке установки на тестовом компьютере под учетной записью администратора она работает нормально для всех пользователей, однако, когда мы используем развертывание программного обеспечения в масштабах компании, которое выполняется под системной учетной записью, установка выполняется, но надстройка не загружать Если я восстановлю установку с учетной записью администратора снова, он загружается просто отлично. Разве системная учетная запись не должна иметь необходимых разрешений для установки всех компонентов? Какие варианты у меня есть? Спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2010

После нескольких бесконечных ночей я наконец понял проблему. Это действительно все о Code Access Security и caspol.exe Некоторые советы по развертыванию надстроек Outlook 2003 (Outlook 2007 отличается). Прежде всего, на своем тестовом клиенте обязательно установите переменную среды Windows VSTO_LOGALERTS = 1, поскольку это запишет все ошибки надстройки в файл журнала, который находится в целевом каталоге установки. Также очень важно знать, что если ваша надстройка выдает исключение во время запуска, она будет отключена в реестре при следующем запуске Outlook (см. Здесь Что может заставить Outlook изменить LoadBehavior COM-надстройки до 2 - кроме необработанных исключений? ). Это может вызвать некоторую путаницу, когда вы об этом не знаете.

Теперь давайте перейдем к проблемам с касполом. Обязательно сначала подпишите свои сборки ключом строгого имени. Затем вы должны убедиться, что ваши сборки полностью доверяют клиенту. Для этого вы можете запустить caspol.exe со следующими настройками: "caspol.exe -machine -addgroup 1 -strong -hex [ключ] -noname -noversion FullTrust -n \" Имя \ "-описание \" desc \ " С этими аргументами вы дадите всем сборкам, подписанным ранее вашим ключом, полное доверие на машине. Это намного лучше, чем предоставление всего каталога FullTrust.

В производственной среде вам наверняка захочется создать настройку для вашей надстройки. Вы также можете создать пользовательское действие для вашего проекта установки, чтобы автоматически выполнять все операции с caspol. Вы можете использовать приведенный здесь пример кода "http://msdn.microsoft.com/en-us/library/cc136646.aspx#AutoDeployVSTOse_CreatingtheCASPolicy", но будьте внимательны: проверьте наличие аргумента -pp в аргументах caspol. Если приглашение на изменение политики включено, автоматическая установка завершится неудачно, так как для этого требуется взаимодействие с пользователем. установите для -pp значение off, выполните политику и снова включите ее. Остерегайтесь снова: пример кода не ожидает завершения процесса.

После того, как я все понял, развертывание надстройки стало простым даже для установки «всех пользователей». Надеюсь, это кому-нибудь поможет.

0 голосов
/ 07 апреля 2010

После запуска установки под системной учетной записью вы видите записи реестра Redemption в HKCR? Например. HKEY_CLASSES_ROOT \ Redemption.RDOSession?

...