Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 22:05   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию Удаление старой версии программы

Всем доброго, столкнулся с проблемой одной, сделал софт и сделал там авто обновление после чего он обновляет и все норм а вот как удалить старую версию? И например вывести иконку на рабочий стол новой версии?
Что надо делать в первой версии программы или во второй что то надо? Как я понял можно же во второй уже прописать чтоб она удалила старый EXE? И как вывести иконку на рабочий стол не знаю..... что читать? есть статьи?
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 05.01.2014, 22:32   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

www.google.com
ZuBy вне форума Ответить с цитированием
Старый 05.01.2014, 22:38   #3
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Есть куча способов это все сделать. Подробнее можно найти в поиске по форуму или интернету. И про автообновление тебе тоже уже говорили.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 05.01.2014, 22:46   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

иконка на рабочем столе - это всего навсего ЛИНК (== ярлык, == специальный файл, который ссылается на указнный в нём файл). Поэтому, когда Вы измените (замените) EXEшник вашей программы, на который указывает ваша иконка, то открываться будет уже новая версия программы, менять иконку на рабочем столе обычно не нужно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.01.2014, 22:52   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как удалить старую версию?
Обычно этим занимаются деинсталляторы.
Все зависит от того как ты обновляешь версии. Если накрываешь уже имеющуюся то вопрос в молоко. Если устанавливаешь независимо от предидущей то вопрос должен стоять так: "Зачем я это делаю и для чего живы в этом мире?"
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.01.2014, 23:01   #6
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Обычно этим занимаются деинсталляторы.
Все зависит от того как ты обновляешь версии. Если накрываешь уже имеющуюся то вопрос в молоко. Если устанавливаешь независимо от предидущей то вопрос должен стоять так: "Зачем я это делаю и для чего живы в этом мире?"
качаю так
Код:
procedure TForm3.Button1Click(Sender: TObject);
var FileStream :TFileStream;
begin
 FileStream := TFileStream.Create('program.exe', fmCreate);   //Имя файла под которым он будет сохранен.
 IdHTTP2.Get(edit1.Text, FileStream);     //Ссылка для загрузки.
 FileStream.Free;
  end;
end.
Инсталятор "Smart install Maker"

Вот и хочу у вас спросить как же лучше? я сделал так, вышла новая версия, то программа качает новую версию, а вот как сделать так чтоб старый ехе удалился не знаю, пробовал чет у меня старая версия и новая версия в одной папке лежат...
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 05.01.2014, 23:30   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Способов много... можно все сделать через bat-файл. Но я в больших программах делал так:
1. Пишу файл Updater.exe и бросаю в папку с программой.

2. На сайте есть текстовый файл с номером версии. Читаю из программы этот файл и если номер версии больше текущей предлагаю обновиться.

3. Программа скачивает zip-архив с обновлением и в случае удачного завершения (в идеале нужно в тот текстовый файл записать второй строкой хеш по md5, потом просчитать хеш скачанного файла и сравнить) программа пишет "Для продолжения программа будет перезапущена > Да> Нет".

4. При стандартном закрытии программа предлагает сохранить данные и т.п. (Просто убивать процесс не стоит. Некрасиво это как-то, по-ламерски). Итак, программа запускает файл Updater.exe и закрывает сама себя.

5. Updater.exe распаковывает архив с обновлениями с заменой файлов и делает прочие действия, например, выполняет скрипты на базу данных, если ее структура была изменена и пр. По сути Updater.exe - это и есть мой собственный инсталлятор, которым можно вносить изменения в реестр, отправлять софтину в автозагрузку и так далее. В отличие от чужих инсталляторов его возможности будут ограничены только вашей фантазией. Интерфейс тоже (!!!).

6. Далее Updater.exe удаляет архив с обновлением, запускает саму программу и закрывает сам себя.

7. Ну, и конечно, от всей души благодарит пользователя за использование Вашей программы

Работы, конечно, больше, но зато все получается красиво и эффектно.
_SERGEYX_ вне форума Ответить с цитированием
Старый 05.01.2014, 23:31   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Качаете файл и сохраняете с расширением .new
Далее подготавливаете ПО к завершению.
Под конец запускаете пакетный файл или ПО, которое ждет когда закроется оригинал, чтобы заменить его новой версией. Все.
Человек_Борща вне форума Ответить с цитированием
Старый 05.01.2014, 23:34   #9
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Способов много... можно все сделать через bat-файл. Но я в больших программах делал так:
1. Пишу файл Updater.exe и бросаю в папку с программой.

2. На сайте есть текстовый файл с номером версии. Читаю из программы этот файл и если номер версии больше текущей предлагаю обновиться.

3. Программа скачивает zip-архив с обновлением и в случае удачного завершения (в идеале нужно в тот текстовый файл записать второй строкой хеш по md5, потом просчитать хеш скачанного файла и сравнить) программа пишет "Для продолжения программа будет перезапущена > Да> Нет".

4. При стандартном закрытии программа предлагает сохранить данные и т.п. (Просто убивать процесс не стоит. Некрасиво это как-то, по-ламерски). Итак, программа запускает файл Updater.exe и закрывает сама себя.

5. Updater.exe распаковывает архив с обновлениями с заменой файлов и делает прочие действия, например, выполняет скрипты на базу данных, если ее структура была изменена и пр. По сути Updater.exe - это и есть мой собственный инсталлятор, которым можно вносить изменения в реестр, отправлять софтину в автозагрузку и так далее. В отличие от чужих инсталляторов его возможности будут ограничены только вашей фантазией. Интерфейс тоже (!!!).

6. Далее Updater.exe удаляет архив с обновлением, запускает саму программу и закрывает сам себя.

7. Ну, и конечно, от всей души благодарит пользователя за использование Вашей программы

Работы, конечно, больше, но зато все получается красиво и эффектно.
Хорошо, я как-то думал сделать по ламерский=) просто моя первая программа тестовая=)
мне бы удалить старую и сразу запустить новую....
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Fahman; 05.01.2014 в 23:46.
Fahman вне форума Ответить с цитированием
Старый 06.01.2014, 00:31   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...для себя делал батником по-простому:
Код:
REM Update.bat
REM Батник обновления программы из Интернета
REM 
REM При запуске: 
REM 1. Создается временная директория для закачки свежей версии программы в архиве
REM 2. Производится скачивание архива (обновления) по заданному адресу
REM 3. Архив распаковывается во временную директорию
REM 4. В процессах ищется запущенная версия "старой" программы и убивается
REM 5. Из временной директории в текущую перемещается "новая" версия программы
REM 6. Временная директория удаляется с автоподтверждением
REM 7. Прозводится запуск обновленной версии программы
REM
REM Разработчик: Бадло Сергей Григорьевич
REM H-page: http://raxp.radioliga.com
REM Ограничения: Win OS + запуск батника самой программой, которая хочет себя обновить

@echo off

REM В реальном приложении убрать этот первый запуск старой программы
echo Test run old program...
start raxp_sockets.exe

mkdir update

echo Downloading Update...
httpget http://raxp.radioliga.com/update/update.zip update\update.zip

echo Unpacking update.zip...
unzip -o update\update.zip -d update

echo Kill old program...
set ProcessName="raxp_sockets.exe"
TaskList /FI "ImageName EQ %ProcessName%" | Find /I %ProcessName%
REM Задержка через пинг, в реальном убрать (введена для видеоролика)
ping 0 -n 7
taskkill /f /im %ProcessName%

echo Moving New to Old...
move /Y update\raxp_sockets.exe 

echo Delete Update Directory...
rmdir update /S /Q

echo Run New program...
start raxp_sockets.exe

http://www.youtube.com/watch?v=e99rvyv-T0o
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4 версии программы gunis7 Фриланс 2 27.11.2011 12:41
Создание портабл версии программы. Dartar Общие вопросы Delphi 2 26.12.2010 16:41
Добавить информацию о версии программы Alex Cones Общие вопросы Delphi 2 27.11.2009 09:18
Реанимация старой программы Bayazet Общие вопросы Delphi 7 24.11.2009 17:29
Платная и бесплатная версии программы mosq Общие вопросы Delphi 5 28.08.2009 13:53