Лучший способ установить службу .NET в MSI, чтобы ее можно было обновить?

У меня есть установка MSI, созданная с помощью InstallShield 2009, которая устанавливает службу .NET, устанавливая для параметра «Класс установщика .NET» значение «Да» для компонента, содержащего исполняемый файл службы. Эта базовая установка, которая содержит файлы, и exe-файл устанавливается нормально. Я создал небольшое обновление MSP, которое обновляет исполняемый файл службы в исходной установке. Когда я запускаю MSP в системе, содержащей базовую установку, я получаю сообщение об ошибке 1001, потому что она пытается переустановить службу во время установки MSP с небольшим обновлением.

Официальный ответ Flexera на эту проблему заключается в том, что если исполняемый файл .NET необходимо обновить, то следует установить для компонента «Класс установщика .NET» значение «Нет» и создать свои собственные настраиваемые действия. Flexera также признала, что они нигде не документируют, что если вы установите для «Класса установщика .NET» значение «Да», вы не сможете создавать обновления MSP для своей установки. Невозможно вернуться и изменить базовую установку, поскольку она была выпущена, и для нее необходимо создать обновление. Я самостоятельно придумал обходной путь, включив пользовательское действие в обновление MSP, которое удаляет службу во время установки MSP. Это устанавливает небольшое обновление MSP, но этот обходной путь не работает для удаления MSP из ARP.

Мне нужно знать лучший способ решить эту проблему в будущих установках. Как установить службу .NET таким образом, чтобы ее можно было легко обновить позже с помощью небольшого обновления MSP?


person Linda    schedule 15.09.2010    source источник


Ответы (2)


Службы должны быть установлены с помощью MSI; поскольку классы intaller ужасно хрупкие, но самописные пользовательские действия вряд ли будут намного лучше (просто их легче контролировать). Вы можете найти параметры службы в дополнительных настройках компонента.

person Michael Urman    schedule 16.09.2010
comment
Я думал, что эти опции («Управление службами NT» и «Установка служб NT») работают только для служб NT. Я успешно использовал эти параметры для установки служб NT в прошлом. Я пытаюсь установить службу .NET. Работают ли эти параметры для службы .NET? - person Linda; 16.09.2010
comment
Существуют службы .NET, для которых это не сработает (обычно, когда их класс установщика устанавливает несвязанные зависимости), но вне этого случая все должно работать нормально. Сообщение Фила Уилсона (№6 на второй странице community.flexerasoftware.com/showthread.php ?t=139667 ) подтверждает это. - person Michael Urman; 17.09.2010

Лучше всего использовать MS BITS (фоновая интеллектуальная служба передачи Microsoft), которая похожа на Центр обновления Windows.

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

Дополнительные сведения о BITS и их использовании в .NET

http://msdn.microsoft.com/en-us/library/aa362708(VS.85).aspx
http://msdn.microsoft.com/en-us/magazine/cc188766.aspx
http://www.codeproject.com/KB/IP/sharpBITS.aspx
person del.ave    schedule 15.09.2010