Я знаю, что это старый вопрос, но я считаю, что эта информация очень важна для всех, кто борется с этой проблемой:
Проблема связана с изменением установщика, включенного в Visual Studio. Я думаю, что изменение произошло между VS2005 и VS2008. Независимо от того, чтобы после изменения, чтобы установщик обновлений работал должным образом, не удаляя предыдущий продукт, было рекомендовано, чтобы Службы были установлены с помощью Настраиваемых действий на этапе установки, фиксации и отката, но не на этапе удаления. Я полагаю, что это связано с тем, что изменение вызвало действие удаления после установки новой версии, удаление службы после обновления. Условие "Not PREVIOUSVERSIONSINSTALLED" помещено в 3 пользовательских действия, и проверка предыдущих версий должна быть ИСТИНА. Это приводит, по сути, к тому же результату, что и копирование файлов поверх старых (но также сохраняет любые другие действия по установке, такие как регистрация объектов и т. Д.)
Это все прекрасно работает для обновлений; новая версия будет установлена поверх существующей, сервис остается зарегистрированным, все в порядке. Однако, если вы удалите, ваш сервис останется зарегистрированным, и новая установка попытается зарегистрировать его снова, что приведет к ошибке 1001. Я использую SC.EXE для удаления службы вручную при удалении, чтобы избежать этого. У вас может быть чистая деинсталляция, но она прервет установку обновлений, ваш выбор.