Удаление надстройки MS Office уровня приложения MS Office - PullRequest
2 голосов
/ 05 мая 2011

Я работаю над развертыванием моей первой надстройки Visual Studio Tools for Office (VSTO) с использованием VSTO 4.

Существует несколько различных вариантов установки записей реестра надстроек.Это может быть для пользователя в разделе HKEY_CURRENT_USER или для компьютера HKEY_LOCAL_MACHINE.Ряд моих пользователей работают под управлением Citrix или Terminal Services.Я нахожусь в ситуации, когда администратор будет запускать мою установку на сервере, поскольку пользователи не имеют правильных прав.Кроме того, мои пользователи составляют лишь небольшой процент пользователей на этих серверах.

По этим причинам я планировал создать небольшую утилиту, которая будет поставляться с надстройкой.Утилита создаст правильные разделы реестра для каждого пользователя, чтобы включить надстройку.Администратор установит надстройку dll и мою утилиту в c: \ program files *.Затем пользователям, которым на самом деле нужна была надстройка, будет предложено запустить утилиту один раз и нажать кнопку «Включить».

Проблема, с которой я сейчас застрял, заключается в том, как удалить надстройку.Мой деинсталлятор (снова запускаемый администратором) может работать со всем, что он создал, но не может удалить ключи реестра для каждого пользователя.

Я надеялся, что это будет проблемой, и Word будетпросто игнорируйте отсутствующую надстройку при следующем запуске.

Это не работает - Word сообщает об ошибке, пытаясь «установить» настройку при следующем запуске.

«Установка настроек Office» Во время установки произошла ошибка.Загрузка файла file: //xxx/xxx.vsto не удалась.

Я включаю «| vstolocal» в конце записи реестра для записей реестра для добавления уровня приложения- В статье MSDN .

Есть ли способ остановить Word от попытки загрузки надстройки, если файл не существует?
или
Существует ли способ удаления программой удаления записей реестра для каждого пользователя при удалении для пользователя, отличного от пользователя, выполняющего удаление?

Я выполняю тестирование на компьютере под управлением Windows 7 с Office 2007. Я использую VSTO 4 для .Net 4 Framework.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

о ваших двух вопросах

Есть ли способ остановить Word от пытается загрузить надстройку, если файл не существует?

Не то чтобы я об этом знал, но я только что попытался убрать библиотеку DLL, на которую указывают мои записи reg для одного из моих надстроек, и я не получил сообщения (если я войду в область параметров COM COMDDins параметров Word, я могу видеть аддин не загружен, что было бы правильно).

Есть ли способ для деинсталлятора очистить записи реестра пользователей удалить для пользователя, кроме кто запускает деинсталляцию?

Нет, я практически уверен, что нет способа сделать это. Для этого потребуются права на КАЖДЫЙ пользовательский каталог.

ОДНАКО, вы можете создать эти странные ключи в дереве регистрации Office, которые по сути служат «командами» для офисных приложений, выполняемых при загрузке.

Таким образом, при удалении вы записали бы дополнительные ключи в ключ реестра Office, который по сути говорит: «Удалите эти ключи из текущего куста HKCU, когда загружается офисное приложение».

Вот пример сценария Reg, который я обнаружил и который показывает странные ключи, но я не могу сразу найти ссылки, которые точно подтверждают, какие они есть:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates]
"Count"=dword:00000001
"Order"=dword:00000008

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates\Create\Software\Microsoft\Office\12.0\Common\General]
"SharedTemplates"=hex(2):-fill in your own Binary Value-

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar]
"Count"=dword:00000001
"Order"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar\Create\Software\Microsoft\Office\12.0\Outlook\Search]
"DisableDownloadSearchPrompt"=dword:00000001

<<<<< CreateFile >>>>>>>
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1]
"Count"=dword:00000001
"Order"=dword:00000008

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1\CreateFile\FileCopy1.potx]
"TargetFile"="[AppDataFolder]\\Microsoft\\Templates\\FileCopy1.potx"
"SourceFile"="C:\\Documents and Settings\\All Users\\Templates\\FileCopy1.potx"

Если вы присмотритесь, вы увидите под ключом \ Office \ ключ "user settings {name} \ Create \", а затем путь к остальному ключу копирует путь от Software \ on вниз под HKCU.

Вы можете использовать ключевые слова CREATE или DELETE (чтобы удалить ключ).

Обратите внимание на значения COUNT и ORDER. Это важно и должно быть правильно.

Но, опять же, я не могу найти ссылки со стороны, которые документируют это.

0 голосов
/ 05 сентября 2013

Вы можете использовать Active Setup для удаления надстройки VSTO для каждого пользователя.

Если вы не знакомы с Active Setup, эта функция сравнивает подразделы HKLM Installed Components с HKCUПодключи Установленные компоненты и, если подключ отсутствует (или, если он найден и значение Версия подключа больше), выполняется значение StubPath, а подраздел Установленные компоненты HKLM копируется в Установленные компоненты HKCU.

Отказ от ответственности: Active Setup - недокументированная, но часто используемая функция Windows.Используйте на свой риск.Не насмехайтесь над Active Setup.

...