Почему мой сервис не удален на удалении? (WIX)

Я думаю, что это - самый простой путь, где Вам только нужны две проверки:

string file = @"C:\tmp";
if (System.IO.Directory.Exists(file))
{
    // do stuff when file is an existing directory
}
else if (System.IO.File.Exists(file))
{
    // do stuff when file is an existing file
}
21
задан Rupert Morrish 15 September 2009 в 22:02
поделиться

2 ответа

У меня почти идентичный установщик, который отлично работает. Единственное отличие состоит в том, что мой элемент ServiceControl имеет другой идентификатор элемента ServiceInstall, а также свойство 'Start = "install"'.

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

Попробуйте следующее:

  • Измените идентификатор ServiceControl на «IdiomServer_ServiceControl»
  • Измените имя в обоих элементах службы на «Foobar» и проверьте, установлена ​​ли и удалена ли служба Foobar. Если это сработает, вам может потребоваться вручную удалить случайную запись IdiomServer с помощью команды «sc».
14
ответ дан 29 November 2019 в 21:21
поделиться

Если изменение идентификатора компонента сработало, я бы подозревал, что проблема может быть связана с ошибочным счетчиком ссылок SharedDLL в реестре по адресу: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ SharedDlls

Это счетчики ссылок в устаревшем стиле, которые MSI может увеличивать (по запросу) - и они переопределяют собственный счетчик ссылок MSI. По какой-то глупой причине Installshield увеличивает счетчик устаревших ссылок для всех файлов (независимо от того, имеют ли они версии или нет), и это часто приводит к загадочным «случайным файлам при удалении», возникающим на компьютерах разработки. То же самое может произойти в Wix, если вы включите общий счетчик ссылок dll, и в редких случаях счетчик ссылок может быть поврежден во время крупных обновлений.

1
ответ дан 29 November 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: