Как я устраняю “Указанный сервис, уже существует”, когда я устанавливаю новые версии своего программного обеспечения?

Вам нужно определить свою собственную функцию сравнения и использовать usort или uasort , если вы хотите поддерживать ассоциацию индексов.

17
задан pc1oad1etter 16 January 2009 в 19:10
поделиться

3 ответа

В дополнение к проверке версий файла отличаются, поскольку StingyJack упомянул, что у Вас есть другая проблема. Из документации VS (извините, не онлайн)

, Если Вы установили и установку и удаляете пользовательские действия в проекте установки приложения, и Вы включили свойство RemovePreviousVersions в Visual Studio 2005, предыдущая версия продукта удаляется во время обновления. Однако это поведение, измененное в Visual Studio 2008 следующим образом:

В Visual Studio 2005, пользовательские действия назвали следующим образом на обновлении от v1.0.0 до v1.0.1:

v1.0.0 Удаление пользовательского действия ()

v1.0.1 Установка пользовательского действия ()

В Visual Studio 2008, действие удаления не называют, следующим образом:

v1.0.1 Установка пользовательского действия ()

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

, Таким образом, Вы устанавливаете сервис с помощью пользовательского действия - но при обновлении части Удаления, не называется, как Вы ожидаете, и Вы пытаетесь Установить по существующей, рабочей версии.

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

Две опции:-

Добавляют код к Вашему пользовательскому действию Установки/Фиксации, чтобы Остановить сервис, ожидать установщика, чтобы заменить сервисные файлы и затем перезапустить сервис. См. ответ PonalSuper3 в этом потоке

Отложенный поведение VS2008 к тому, как это работало в VS2005 (старое пользовательское действие Удаления версий называют перед новой Установкой версии) при помощи Косатки для изменения InstallExecuteSequence. RemoveExistingProducts, чтобы сразу быть после.InstallInitialize - обычно Вы устанавливаете.RemoveExistingProducts на 1525, но проверяете Ваш отдельный MSI.

я добавил сценарий, чем можно добавить к процессу сборки для изменения InstallExecuteSequence

MSI
19
ответ дан 30 November 2019 в 12:14
поделиться

Удостоверьтесь, что версия блока сервиса и GUID (В AssemblyInfo.vb/cs) становится измененной при развертывании каждого нового пакета установщика. Если это обнаруживает ту же версию, затем обновляет сбой.

4
ответ дан 30 November 2019 в 12:14
поделиться

Поместите "Not (Installed OR PREVIOUSVERSIONSINSTALLED)" в свойство Custom Actions->Install Condition (УСТАНОВКА ИЛИ ПРЕВИОЗВЕРШЕНИЕ).

8
ответ дан 30 November 2019 в 12:14
поделиться
Другие вопросы по тегам:

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