Ошибка установщика Windows при удалении службы (не удалось открыть ключ НЕИЗВЕСТНО) - PullRequest
1 голос
/ 25 марта 2011

При удалении разрабатываемого проекта установки VS2010, который устанавливает службу, я получаю следующую ошибку (взято из подробного журнала MSI):

MSI (c) (60:90) [13:37:59:038]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

Error 1402. Could not open key: UNKNOWN\Components\216B73E88467B322BBFF14C949E03D05\F1DB4DDE64042404E8863AB2CA9520DF. System error 5.
Verify that you have sufficient access to that key, or contact your support personnel.
MSI (s) (84:A4) [13:38:01:678]: User policy value 'DisableRollback' is 0
MSI (s) (84:A4) [13:38:01:678]: Machine policy value 'DisableRollback' is 0
Action ended 13:38:01: InstallExecute. Return value 3.

Обратите внимание, что эта служба устанавливается с использованием учетной записи локального компьютера или учетной записи пользователя домена. Он НЕ использует встроенную учетную запись, такую ​​как сетевая служба, локальная система или локальная служба.

Используя Windows Verbose Log Analyzer (wilogutl), он сообщает мне, что этот раздел кода является первой ошибкой в ​​журнале программы установки. Кроме того, он говорит мне возможные решения:

Стандартное действие или настраиваемое действие вызвал сбой.

Installer Version: 5.0.7601
Client Side Privilege Details: None
Server Side Privilege Details: 

MSI (84: A4) [13: 37: 55: 306]: Товар {EDD4BD1F-4046-4042-8E68-A32BAC5902FD} управляется MSI (84) A4 [13: 37: 55: 306]: запущенный продукт '{EDD4BD1F-4046-4042-8E68-A32BAC5902FD}' с повышенными привилегиями: продукт назначен.

Я пытался запустить ProcMon, чтобы попытаться диагностировать проблему, но безуспешно. Установщик запускается без проблем. Установщик использует настраиваемое действие (C # InstallerClass) для установки службы. Однако система не может удалить службу на моем компьютере.

Обновление 1: Вот читабельная ошибка из журналов:

(SERVER)     MSI (s) (84:A4) [13:38:02:186]: Product: MyService -- Removal failed. 
(UNKNOWN)      
(SERVER)     MSI (s) (84:A4) [13:38:02:186]: Windows Installer removed the product. Product Name: MyService. Product Version: 1.0.0. Product Language: 1033. Manufacturer: ManufacturerName. Removal success or error status: 1603. 
(UNKNOWN)      
(SERVER)     MSI (s) (84:A4) [13:38:02:187]: Deferring clean up of packages/files, if any exist 
(SERVER)     MSI (s) (84:A4) [13:38:02:187]: MainEngineThread is returning 1603 

И ошибку 1603 можно интерпретировать следующим образом (хотя это не показано в журнале):

Файл [2] [3] удерживается в использовании с помощью следующего процесса: Имя: [4], Id: [5], заголовок окна: '[6]'

1 Ответ

1 голос
/ 28 марта 2011

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

Этот процесс оставил в реестре много ключей, которые вызывают проблемы при удалении / переустановке.

Решением было добавить себя в качестве локальной учетной записи пользователя в разделе «Управление компьютером». Затем я должен был назначить этого пользователя в группу «Пользователи и администраторы» (просто для примера). Наконец, мне пришлось зайти в реестр и найти все остатки ключей реестра программного обеспечения и принудительно удалить их.

Это было нелегким делом, потому что процесс удаления ключа включал около шести шагов, когда вы щелкали правой кнопкой мыши и выбирали Разрешения для значения ключа:

  • Предоставление полного доступа к учетной записи администратора
  • Предоставление полного доступа к учетной записи пользователя
  • Нажмите «Дополнительно» и добавьте мою учетную запись пользователя домена
  • Переход к владельцу и «попытка» добавить администратора в качестве владельца (с применением рекурсивных дочерних элементов)
  • Вернуться на вкладку пользователей, предоставить полный контроль моей учетной записи пользователя домена
  • Нажмите OK и OK, а затем я могу удалить ключ
...