Этот подход изначально ошибочен.
Существует множество возможностей обновить что-либо, если доступна новая версия.
- Проверьте их на установке (некоторый инсталлятор имеет Autodownloader функции) - частичное решение, нет возможности автоматического обновления
- служба должна открыть для себя новые версии (фоновый поток) - необходимо некоторое развитие [MSI автоматической установки в фоновом режиме ] < - предпочтительнее
- Централизованное развертывание - есть решения для централизованной установки, даже MS, IBM и т. Д. Имеет инструменты для этого. Поэтому, если новое решение будет готово, независимо от того, что вы можете развернуть в своем домене. < - не очень экономически выгодно, используется tippicaly крупными компаниями
+1 Также есть некоторые способы, которыми вы можете это сделать, не останавливая обслуживание. В C# вы можете загружать и выгружать версии, собранные в версиях, на лету, но делает жизнь вашего разработчика реальной.
Если вы выбрали вариант 2.nd, вы можете запустить «процесс asyncronly» из кода, чтобы программа установки запускалась с параметрами по умолчанию (поиск без установки), хотя вы можете определить пользовательские настройки «my.msi -s config .файл". Установщик должен быть подготовлен для проверки и остановки самого сервиса, если он уже существует.
Это сложная история, поиск некоторых ключевых слов, о которых я упомянул.
Есть, вероятно, лучшие и более ортодоксальные способы, чем тот, который вы предлагаете. См. Http://stackoverflow.com/questions/246886/process-for-updating-a-windows-service-automated-or-is-it-manual, http://stackoverflow.com/questions/106765/i-want -my-c-sharp-windows-service-to-automatic-update-yourself # 106799 и http://stackoverflow.com/questions/691663/auto-update-library-for-net –
@RobertHarvey, у меня есть прочитайте эти сообщения раньше, и они предлагают использовать отдельный процесс для остановки и перезапуска службы. Также они рекомендуют использовать установщик. Вот как я пытаюсь реализовать процедуру обновления. Не могли бы вы дать больше разъяснений относительно того, как мое решение может быть улучшено? Благодарю. – HamChunck
Здесь есть хороший пример: http://stackoverflow.com/a/328211 –