Я подумывал о сворачивании своего собственного кода, позволяющего моему приложению Delphi обновляться без проблем, поскольку я буду продолжать «выпуск часто, выпускать ранний» менталитет. Существуют различные решения Delphi (как бесплатные, так и платные), и я хотел бы спросить, используете ли вы какой-либо из них или просто продолжаете использовать свои собственные решения в этой области. Любые комментарии к теме автоматического обновления приветствуются.
utku_karatas 10 нояб. 2008, в 09:49
Поделиться
Поделиться:
auto-update
10 ответов
Лучший ответ
Несколько лет назад я написал простой инструмент, который запускается вместо реальной программы, проверяет наличие обновлений, загружает и устанавливает их (если таковые имеются) и, наконец, запускает реальное приложение. Однако существуют проблемы с этим подходом, если ваша программа работает в правильно администрируемой среде, где пользователи обычно не имеют права на запись в каталоги программ.
Вы больше не можете просто обновлять свою собственную программу в таких средах. Поэтому многие программы в наши дни поставляются с собственным средством обновления, которое может быть установлено для работы с повышенными разрешениями, так что обновления программ могут применяться, даже если только стандартные пользователи когда-либо заходили в систему. Вы должны решить, можно ли предполагать, что ваша целевая аудитория будет работать от учетных записей с полномочиями пользователя или администратора, или вам придется иметь дело с вышеупомянутыми проблемами. С Vista все стало намного сложнее. Со всеми этими проблемами (нетто-доступ к прокси-серверам, отсутствие разрешений на запись для каталогов установки, необходимость обновления файлов, которые использует сам обновитель), я бы не стал повторять это самостоятельно, Гораздо лучше проверить, не имеет ли какое-либо из доступных решений все, что вам нужно.
обновление прошивки delphi
mghie 10 нояб. 2008, в 14:15
Поделиться
Какую схему вы используете, может быть полезно знать, что вы действительно можете переименовать исполняемый файл .exe. Поэтому переименуйте файл, копия в новом файле работает хорошо. И в следующий раз, когда кто-то запустит программу, они запустит новую версию. Это, конечно же, очень удобно в среде, где многие пользователи запускают один и тот же файл .exe, например, в случаях сбоев citrix/terminal server/network.
Tom 10 нояб. 2008, в 15:04
Поделиться
Это все еще верно для Win7 и Win10? : D
Edwin Yip 22 март 2019, в 16:37
Я использую Synapse подпрограммы GetHTTP для возврата определенного ресурса, а если он найден, то проверьте локальную систему, чтобы узнать, обновлено ли обновление необходимо. Если это так, то ресурс сообщает мне, какую страницу нужно запускать, и я бросаю URL-адрес в оболочку, чтобы пользователи отображается предпочтительный браузер.
В большинстве случаев загрузка — это программа установки, созданная InnoSetup, которая обновляет систему пользователей и базу данных до последней версии. Когда требуется новое «платное» обновление, я затем отправлю пользователя в форму «покупки обновления». Мои веб-ресурсы — это страницы ASP, поэтому я могу перенаправить на другой ресурс на основе номера версии для клиентов.
Обновление прошивки тестера Delphi D-150 Китай для программы Автоком (Autocom)
Для основного приложения (наше приложение имеет часть сервера и часть клиента) у меня есть загрузчик, который проверяет сервер, чтобы проверить, отличается ли версия клиентского файла на сервере версией на клиенте. если так, он запрашивает пользователя, хочет ли пользователь обновить/вернуть. Мы выбрали запрос пользователю, поскольку иногда случайная ошибка может попасть в систему, и пользователь должен отказаться или обновить только определенные машины, чтобы помочь устранить неполадки. Я поддерживаю запись базы данных с минимальной требуемой версией, которая обновляется через патч базы данных, поэтому, если версия должна быть удалена, запись соответственно обновляется.
Источник: overcoder.net
Как обновить программу делфи
Все работает до места скачивания обновленной проги, вылазит что не может изменить директорию, вроде все сделал правильно. Что делать??
Форумчанин
Регистрация: 02.11.2011
Сообщений: 105
(application.ExeName)+’project.exe’
не слишком страшный путь выходит?
Пользователь
Регистрация: 16.01.2011
Сообщений: 65
не слишком страшный путь выходит? |
А как надо. я ж дуб дубом в этом. помоги.
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,752
Программа сама себя не даст заменить когда она запущена. Лучше в программе своей скачать файл, а потом уже закрыть свою программу, заменить ЕХЕ-шник и запустить программу снова. А вот тут то уже самое интересное, либо ВАТ-ником делать замену ехе, либо например из DLL, которая вызывается стандартным виндовым загрузчиком RUNDLL32.exe
Форумчанин
Регистрация: 17.03.2009
Сообщений: 979
можно ещё перед закрытием программы которую обновляем запустить скаченный экзешник . а из него уже сделать обновление нужных компонентов и основной программы, затем его закрыть и запустить основную программу. (в основной проге можно сделать проверку и удалять автоапдатер если это конечно необходимо.) есть пример, правда код писал как придётся хватая готовые куски программ с инета.
Вложения
1.rar (6.4 Кб, 173 просмотров) |
Интуитивно понятный интерфейс — это такой интерфейс, для работы с которым нужна недюжинная интуиция.
Веб-дизайнер
Форумчанин
Регистрация: 11.08.2011
Сообщений: 305
Создайте отдельное приложение отвечающее за обновление. Вызвать его из главной программы — не проблема, обновить открытый EXE — не проблема (закрываете процесс, скачиваете и открываете снова). На мой взгляд самый простой способ.
Регистрация: 13.08.2009
Сообщений: 2,581
Нет времени копать кучу литературы. как сделать обновление и что для это нужно.
Нужно 50 евро.
http://www.tmssoftware.com/site/wupdate.asp
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Регистрация: 03.09.2012
Сообщений: 7
Автоматическое обновление можно реализовать следующим образом 1.Запускается exe который проверяет версию программы
2. Верия новая есть значит старую, преименоваем и дописывае к имени old
3. Начинаем качать новую версию
4. Получаем md5-хэш скачаного файла и сверяем с эталоном записанным на сервере
5. После проверки если все нормально удаляем олд и запускаем скачаный, нет удаляем скачаный и откатываем олд и сообщаем админам.
В общем подробнее схема рассмотрена тут http://myshinobi.ru/kak-sdelat-obnov. mmy-na-delphi/
Источник: www.programmersforum.ru
Как лучше всего реализовать автоматическое обновления программы на Delphi?
Было много идей ,пока стоит обновления через сайт.То есть при вкл софт проверяет версию, если версия старая выдает сообщения и скачивает с сайта новый файл.
Интересно есть ли какие то библиотеки для работы с этим в поиске нашел WinSparkle ,но как такового примера использования конкретно для делфи не нашел.
Или скажите как вы обновляете ваш софт ,или какие есть идеи.
Возможно через php скрипт или по другому.
- Вопрос задан более трёх лет назад
- 2032 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3
Frontend-разработчик (ReactJS)
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
1) Используйте только HTTP и HTTPS, т.к. 50% Ваших пользователей находятся за прокси. HTTPS к тому же снимает
массу вопросов с целостностью обновляемого кода.
2) Учтите, что пользователь не всегда админ на своем ПК и по хорошему права записи в папку, где расположены бинарники не имеет, или может не иметь. Разное ПО решает эту проблему по-разному (вариант размещать изменяемую часть бинарников в личном профиле пользователя считаю несерьезным, хотя некоторые известные производители не брезгуют и этим) — многие единожды инсталлируют сервис обновлений, который имеет привилегии системы и периодически сверяет инсталлированную версию с размещенной на сайте. Хорошим тоном является реализовать к этому сервису минималистичную утилиту управления, чтобы хотя бы иметь возможность контролировать его поведение.
3) После 1000 активных пользователей Вам очень захочется а) распределять процесс обновления во времени для снижения нагрузки; б) тестировать вносимые изменения не на всех пользователях сразу, а на некоторой части, например, на 100 или на 5%. Из этого мы приходим к тому, что статический текстовый файл на сервере обновлений не самое удачное решение, все таки это должен быть скрипт (возвращающий рекомендуемую версию для клиента в зависимости от его ID), которым можно динамично управлять (например, повысить или понизить долю тестирующих, или передать на тест новую версию только для определенной группы, удовлетворяющей каким-либо условиям).
4) Ну и возможно Вам захочется ограничить взаимодействие с сервером версий, ниже определенной. Но это обычно реализуют в протоколе клиент-серверного обмена. Другое дело, что по-хорошему после отказа сервера в подключении из-за слишком старой версии ПО должно иметь возможность «подтолкнуть» сервис обновлений к экстренному обновлению.
Источник: qna.habr.com