Страница: 1 |
Страница: 1 |
Вопрос: Автоматический апгрейд ваших программ
Добавлено: 25.05.04 21:40
Автор вопроса: VM
Кто как решает эту задачу? Какие есть накатанные пути и решения? Под автоматическим апгрейдом я имею в виду извещение пользователя о том, что появилась новая версия, деинсталляция старой версии и инсталляция новой (по запросу). Слишком много завязано, легко сбиться с правильного пути. Сначала надо где-то получить версию установленного продукта. Я видел Version в свойствах проекта Setup но пока не понял как её можно использовать. Потом надо удалить старую версию. Тоже неясно пока как это сделать автоматически. Т.е. ту же самую деинсталляцию, что делается через Add/Remove Programs, но прямо из кода. Потом надо загрузить новую версию из сети (фтп? прямо направить http запрос на Setup.exe?) и выполнить новую установку. Интересно было бы почитать ваши мысли по этому поводу. Если где-то есть статья про такое, то тоже было бы любопытно почитать. Пока я ничего не нашёл. Спасибо.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 25.05.04 22:27
Статья есть вряд ли, но написать - маза
Обновление примерно так: на какой-то странице в Инете выкладывается номер последней версии, программа проверяет и сравнивает со своим, если там больше, скачивает с известного адреса (обычно по HTTP) файл(ы). Можно сделать проверку не версии продукта, а отдельных его файлов и скачивать их отдельно. Удаление старой версии можно осуществить через все, что угодно, через inf, cmd, bat, vbs etc
Номер ответа: 2
Автор ответа:
VM
Вопросов: 9
Ответов: 19
Профиль | | #2
Добавлено: 25.05.04 23:08
ОК, с технологической точки зрения тут вряд ли возможны варианты. Но вот как это реализовать практически? Например, как получить версию установленного продукта используя номер версии из Setup Project, а не устанавливая его вручную в виде какого-нибудь ключа реестра? Получить номер новой версии, сравнить со старой и оповестить пользователя выглядит как раз самой простой задачей. Потом, что значит "скачивает"? Какой программой? ftp.exe? И как осуществляется автоматическая деинсталляция через inf? Через какой inf? Где его взять? Пока я вижу только возможность деинсталляции посредством MsiExec и кода продукта. Который, кстати, тоже пока неясно как вытащить из реестра тот, что нужно. Можно немного детальнее, Sharp?
Номер ответа: 3
Автор ответа:
VM
Вопросов: 9
Ответов: 19
Профиль | | #3
Добавлено: 26.05.04 18:30
Куда ж ты пропал, Sharp? Мне очень интересно что можно написать в .bat файле, какие вызовы каких именно программ, чтобы автоматически, программно, без вмешательства пользователя, произвести деинсталляцию своей программы.
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 26.05.04 23:14
> Например, как получить версию установленного продукта используя номер версии из Setup Project, а не устанавливая его вручную в виде какого-нибудь ключа реестра?
App.MajorVersion & App.MinorVersion & App.Build
> Потом, что значит "скачивает"? Какой программой? ftp.exe?
Свою программу распространяют через FTP только в очень редких случаях. Но в любом случае следует самому посылать запросы, получать файл и сохранять его.
> И как осуществляется автоматическая деинсталляция через inf? Через какой inf? Где его взять?
Найди в Инете статью по файлам .inf - прочитай описание и увидишь, что почти любые действия - командные строки, запуски программ, операции с файлами, с реестром, все можно делать через файлы .inf
Для деинсталляции программы следует удалить все ее файлы, унрегистрировать все компоненты и удалить все записи из реестра и, например, файлов конфигурации. Почти все это можно сделать из командной строки. Последовательность нужных команд записать в .bat-файл и запустить его.
Номер ответа: 5
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #5
Добавлено: 26.05.04 23:23
Т.к. я не являюсь профессиональным программистом, то конечно я всё делaл не правильно
Но как вариант.
Для .NET
Так как основной идеей распространения(redistribution) .NET продуктов
является <b>xcopy redistribution</b> (see MSDN)
То логика работы такая
1. Давим на кнопку апдейт
2. Прога через FTP закачивает файл с версиями библиотек. И сравнивает с собственным файлом версий, в случае несовпадения каких либо модулей закачиваем их через тот же ФТП
3. Запускаем прогу которая удаляет старые модули записывает на их место новые и обновляет файл версий. That's all
PS Либо (вариант SHARP'a) пишем батник типа
cd c:\ourprog
del old_dlls.dll
del old_exe.exe
copy c:\upd\new_dll.dll c:\ourprog\dll.dll
etc
Контролы для работы с FTP ищи на
www.windowsforms.net
www.programmersheaven.com
Номер ответа: 6
Автор ответа:
VM
Вопросов: 9
Ответов: 19
Профиль | | #6
Добавлено: 27.05.04 22:25
Спасибо. Вы меня натолкнули на несколько идей, которые я постараюсь реализовать.
P.S. Не корысти ради... В классе Application в версии 1.1 свойства MajorVersion, MinorVersion, Build отсутствуют. Зато присутствует свойство ProductVersion, которое я упустил.