История:После появления 10-го пользователя моей программы стало проблематично бегать по рабочим местам и обновлять версии, тем более что обновления часто включали багофиксы и функционирование в системе старых версий было очень нежелательно. В результате возникла идея сделать каталог общего доступа (мне - на запись, остальным - на чтение), чтоб юзеры сами скачивали обновления, причем незаметно для себя. В результате родилась эта программа. На рабочий стол кидается ярлык, который вместо основной программы указывает на LiveUpd, поэтому при запуске юзером программы сначала происходит проверка и обновление файлов, а затем - собственно запуск. Метод:Программа сравнивает даты указанных файлов с файлами в текущем каталоге и обновляет текущий каталог по необходимости. После обновления запускается программа из run=..., Параметр BaseDir= позволяет задать общий каталог-источник, если каталог присутствует в имени файла - то используется он. Русские имена файлов должны быть указаны в кодировке WIN1251. Программа также обновляет саму себя: для этого создается bat-файл, который запускается после завершения программы, копирует LiveUpd.exe и самоуничтожается. Успехов !!! (скачать) (c) Konstantin Beliaev, 2001 Отзывы на статью1) А я делаю так: Мой комментарий: все это справедливо, единственное дополнение - должен быть инсталлятор, который прописывал бы эти скрипты в меню и присваивал им красивые иконки. В идеале хотелось бы чтоб любая программа из пакета проверяла наличие новых версий, при обнаружении - запускала скрипт обновления, а сама завершалась, скрипт копировал новые файлы и снова запускал исходную программу.
Дополнение от 2009 годаПозднее родилось еще два метода автоматического обновления. 1) создаем описанный выше bat-файл, в котором перечислены все необходимые для копирования файлы, а в самом конце - запускается сама программа, например: --- start_me.bat --- @echo off xcopy \\server\upgrade\SLM2\SLM2_3.exe . /Z /Y /V /D /Q xcopy \\server\upgrade\SLM2\Help\*.* .\Help\*.* /S /Z /Y /V /D /Q xcopy \\server\upgrade\SLM2\*.dll . /Z /Y /V /D /Q start SLM2_3.exe --- Данный файл кладем в тот же каталог обновления, что и саму программу (в нашем случае \\server\upgrade\SLM2). \\server\upgrade\SLM2\start_me.bat а в качестве рабочего каталога - каталог на компьютере пользователя, например, C:\WORK_DIR. Теперь установка программы на компьютер пользователя заключается в создании каталога C:\WORK_DIR и копировании созданного ранее ярлыка на рабочий стол. Теперь при клике пользователем по ярлыку, сначала скопируются все обновленные файлы, а потом произойдет запуск программы, абсолютно прозрачно для пользователя. 2) Покольку у меня вся работа идет с базой данных, то родилась идея и обновления программ хранить в базе данных. В двух словах, идея заключается в следующем. В базе данных создаются таблицы, позволяющие повторить структуру рабочего каталога, и загрузить все необходимые файлы в BLOB поля. В качестве украшения, к каждому файлу сделано текстовописание и файлы сгруппированы в несколько групп. Пришлось таки написать программу :-) которая показывает файлы из базы аналогично проводнику Windows. Теперь пользователь запускает программы не с диска, а из программной оболочки. При запуске конкретной программы, сначала на компьютер пользователя копируются все все обновленные файлы, принадлежащие группе запускаемой программы, а только потом происходит запуск. Плюсы этого метода в том, что обновления можно передавать даже через интернет, что невозможно в предыдущих вариантах, когда требуется каталог с общим доступом, обновления программ можно проводить одновременно с обновлением структур в базе данных. В базах разных версий лежат именно те программы, которые предназначены для работы с данной версией БД. Ну, минусы, думаю, каждый найдет сам :-)) (to be continued...) |
Программирование > Прочее >