Подтвердить что ты не робот

Visual Studio 2005 → 2008/10 Проблема обновления Project Installer

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

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

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

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

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

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

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

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

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

4b9b3361

Ответ 2

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

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

Если ваша служба написана в .NET, вы можете найти эту статью полезной: http://www.codeproject.com/KB/install/InstallService.aspx