Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.10.10;
Скачать: [xml.tar.bz2];

Вниз

про автоматические обновления.   Найти похожие ветки 

 
12 ©   (2010-07-09 08:40) [0]

Как Вы реализовываете? Именно сами.

с просторов тырьнета честно украдено 2 идеи
1.
0. пусть будет Program.exe, который себя удаляет
1. берем новый файл с именем Program.new
2. запускаем bat-файл (upd.bat)
3. выходим из программы

а батник должен быть примерно таким (за точность не ручаюсь, главное принцип!):
-------------------
:begin
del /y Program.exe
if errorlevel <> 0 goto begin
copy Program.new Program.exe
del /y Program.new
del /y upd.bat
Program.exe
------------------
т.е. батник крутится по циклу, пока Program.exe не закроется (т.е. его можно удалить без ошибки),
а потом обновляет Program.exe и удаляет обновление и самого себя


2.
про обновлялки
гениальное решение - себя нельзя удалить, но можно переименовать! тока что проверил
новую версию назвать как себя и предложить юзеру перезапуститься, как надумает


вариант "есть компанент специальный" не интересует :)


 
Sergey Masloff   (2010-07-09 08:54) [1]

Зачем такие ужимки? Пользователь запускает маленькую программу - лоадер (для него это и есть приложение). Лоадер проверяет есть для "основной" программы версия свежее. Если нет скачивает ее и запускает если нет то просто запускает.


 
Anatoly Podgoretsky ©   (2010-07-09 10:37) [2]

В обеих случаях обновлялку придется запускать от имени администратора.


 
И. Павел ©   (2010-07-09 10:43) [3]

Я такую использую: http://paste.org.ru/?szj2nw


 
sniknik ©   (2010-07-09 10:55) [4]

вообще не парюсь... не даю конечно ссылку на сетап (фоном, можно игнорировать) и все "автоматизирование", но запуск его только вручную, т.к. должны знать что делают. + замена просто экзешника это не нормальная установка, + сервис так просто не заменить, + программа трехзвенная клиенты могут быть раскиданы по сети, и доступа к инету и них часто не бывает, а замена только одной часть чревата глюками...


 
12 ©   (2010-07-09 11:01) [5]

да, наверное придется через лоадер, что б во все программы не вносить механизм обновления, а использовать один раз написанный
и с правами тоже что-то делать


 
Дмитрий С ©   (2010-07-09 11:18) [6]

А лоадер как обновлять?

Я делал так:
1. программа скачивает обновление, кладет в папку под именем program_new.exe и сообщает пользователю, что для обновления требуется перезапуск.
2. При сл. запуске до появления окон проверяет наличие program_new.exe, если есть запускает его с ключем "обновление" и завершает свою работу.
3. program_new.exe в свою очередь копирует себя в папку с программой, заменяя ее, копирует остальные файлы, если надо и запускает программу с ключем "удалить загруженные обновления".
4. запущенная уже обновленная программа удаляет обновления и продолжает работу.

Было бы круто, конечно, обновлять не завершая работы приложения.


 
Anatoly Podgoretsky ©   (2010-07-09 12:09) [7]

> 12  (09.07.2010 11:01:05)  [5]

Ну если запускать руками, то какие проблемы с правами, пусть администратор
запускает. Иначе служба.


 
Empleado ©   (2010-07-09 12:24) [8]

На сервере ведется учет версий.
Программа-загрузчик сначала получает номер активных программ/модулей, запрашиваемых пользователем;
затем проверяет есть ли запрашиваемые пользователем программы в наличии и, если надо, то загружает новую версию, затем запускает.
Модуль проверки активных версий также встроен во все программы, т.е. если запустить отдельностоящий .exe, то он не даст пользователю возможность работать, если его версия не соответствует активной в данный момент.
+ что-то типа Дмитрий С ©   (09.07.10 11:18) [6]

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


 
b z   (2010-07-09 12:52) [9]

Может ClickOnce подойдет?


 
12 ©   (2010-07-09 16:41) [10]

> На сервере ведется учет версий.

вот это грамотно


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

еще грамотнее

иногда надо просто запретить работать старым программам.

Updater думаю, полюбому придется делать. Табличку какую-нить, версия с которой еще можно работать, версия актаульная, тут же можно в блобе и exe хранить..


 
Eraser ©   (2010-07-09 23:49) [11]

я бы делал так - батник или любой другой скрипт-файл вида
@MsiExec /x {61FFA475-24D5-44FB-A51F-39B699E3D82C} /qn REBOOT=ReallySuppress
@MsiExec /I "mysoft.msi" /qn

+ удаление батником самого себя.
остальная работа должна быть прописана в MSI пакетах.


 
Демо ©   (2010-07-10 14:08) [12]

Чтобы не изобретать вариантов с самообновлением возможен такой путь:

1. На сервере хранится файл, содержащий код последней версии и ссылку на архив, содержащий как исполняемый файл, который будет обновлять программу клиента, так и данные для обновления.
2. Клиент скачивает этот файл, и если его версия устарела, скачивает по ссылке архив, распаковывает во временный каталог и запускает распакованный исполняемый файл (Updater) для обновления, а сам завершается.
3. После обновления Updater вновь запускает Клиента, который успешно удаляет все временные файлы.

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


 
Демо ©   (2010-07-10 14:09) [13]

А для скачивания данных я бы рекомендовал использовать BITS (Background Intelligent Transfer Service), которым пользуется и Microsoft.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
11-1224541718
Harlong
2008-10-21 02:28
2010.10.10
Размер KOLTabControl в WinCE


6-1226928849
com
2008-11-17 16:34
2010.10.10
узнать, есть ли открытые смб-ресурсы на конкретном ип


2-1278936046
Xmen
2010-07-12 16:00
2010.10.10
Как можно присоединить пару документов Word.


15-1278925541
belartvlad29
2010-07-12 13:05
2010.10.10
Как запустить Delphi2010-программу(exe-шник) на другом компьютере


2-1278787052
Nikfel
2010-07-10 22:37
2010.10.10
Как из RichEdit получить и засунуть текст в формате RTF?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский