Visual Studio 2005 -> 2008/10 Проблема обновления проекта установщика службы

Я обновил [MSV генератор проекта.vdproj, встроенный в VS2008] System.Configuration.Install.Installer с помощью ServiceProcessInstaller и ServiceInstaller с Visual Studio 2005 по 2008 год. Нет никаких следствий настройки для класса установщика (т. е. не пытаться запускать или останавливать службы или регистрировать дочерние элементы)

RemovePreviousVersions установлен в true и я меняю Version а также ProductCode, Это вызывает ошибку во время установки:

"ошибка 1001: указанная служба уже существует"

Поиск в Google дает вещи (но не на SO до сих пор):- Google для "Указанный сервис уже существует"
Самым полезным из тех, что я видел на сегодняшний день, является http://forums.msdn.microsoft.com/en-US/winformssetup/thread/b2d1bd22-8499-454e-9cec-1e42c03e2557/ однако это не отвечает основному вопросу:-

Учитывая, что пользователь может выбрать либо:
а) место установки это то же самое
или б) место установки отличается
Каковы минимальные изменения кода, которые разумно сделать, чтобы гарантировать, что старый сервис будет удален, а новый установлен? Или есть что-то кроме изменения кода, необходимого для решения этой проблемы в базовом сценарии обновления v1.0.1 до v1.0.2 той же службы с тем же именем (т. Е. Подписывание)

(AIUI строгое именование вступает в игру только в том случае, если в старом инсталляторе есть значительный шаг удаления, которого нет в новом.)

Я создал новый установщик в VS 2008, и он не лучше.

Пока мой обходной путь - прекратить обновление Version а также ProductCode, заставляя пользователя вручную удалять, когда ему говорят, что у него уже установлена ​​версия.

Дополнение благодаря исследованию Dirk Vollmar: хотя простейший взлом, который мог бы сработать, - это сказать "если шаг установки называется обновлением, сначала вызовите шаг удаления для службы", я хотел бы получить правильный, официально благословенный ответ! (например, как простой хак справляется, когда служба переименовывается во время обновления?)

2 ответа

Решение

Предоставляет ли ваша служба (настройка) настраиваемое действие для удаления службы?

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

Если ваша служба написана на.NET, вам может пригодиться эта статья: http://www.codeproject.com/KB/install/InstallService.aspx

Другие вопросы по тегам