Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.01.10;
Скачать: CL | DM;

Вниз

Обновление программы   Найти похожие ветки 

 
lewka_s   (2014-07-03 08:19) [0]

Приветствую, мастера!
Есть код, который выполняет обновление моей программы.
if FileExists("temp.exe") then DeleteFile("temp.exe");
     ss:=Application.ExeName;
     AssignFile(Current_file, Application.ExeName);
     Rename(Current_file, "temp.exe");
     AssignFile(new_file,pach_up+"\Bak_up.exe");
     Rename(new_file,ss);
     Application.Terminate;
     WinExec(PChar(ss),SW_SHOWNORMAL);

Этот код свое дело делает, т.е. обновляет мою программу, но удаляет файл обновления (Bak_up.exe).
Подскажите как это исправить? Что бы файл Bak_up.exe оставался на своем месте


 
lewka_s   (2014-07-03 08:35) [1]

Выполнял построчно этот код. Файл Bak_up.exe удаляется на строке Rename(new_file,ss);. НО почему? Rename ведь переименовывает файл, а не удаляет.


 
ВладОшин ©   (2014-07-03 08:45) [2]

переименован как уже существующий


 
ВладОшин ©   (2014-07-03 08:47) [3]

?
Rename(new_file,ss); -> Rename(new_file,pach_up+"\"+ss);


 
lewka_s   (2014-07-03 09:29) [4]


> Rename(new_file,pach_up+"\"+ss);

Так пишет "I/O error 161"
т.к. pach_up - это путь до файла обновления. Имя файла обновления не совпадает с именем файла предыдущей версии программы.


 
Dennis I. Komarov ©   (2014-07-03 09:49) [5]

Напишу нормальный "обновлятор" - от 750$


 
han_malign   (2014-07-03 09:55) [6]


> Rename ведь переименовывает файл, а не удаляет.

- ну...
Звали тебя, скажем, Серожа, а в 25 лет ты поменял паспорт на имя Ваня.
Вопрос - где теперь кредиторам искать Серожу?

Переименование - это оптимизированная версия копирования + удаления...

Для достижения просветления - предлагаю обратить внимание на Windows.CopyFile()...


 
lewka_s   (2014-07-03 11:09) [7]

Решил вот так сделать

AssignFile(new_file,pach_up+"\Bak_up.exe");
Rename(new_file,ss);
CopyFile(PChar(pach_up+"\Bak_up_copy.exe"),PChar(pach_up+"\Bak_up.exe"),False);
DeleteFile(PChar(pach_up+"\Bak_up_copy.exe"));
Application.Terminate;


 
Кщд   (2014-07-03 11:39) [8]

>lewka_s   (03.07.14 11:09) [7]
вам всего-то нужно скопировать Bak_up.exe в файл с именем Application.ExeName
и завязывать с программированием



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

Текущий архив: 2016.01.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
3-1306330689
OW
2011-05-25 17:38
2016.01.10
разный результат запросов напрямую к Ora и через линк


15-1431552604
Юрий
2015-05-14 00:30
2016.01.10
С днем рождения ! 14 мая 2015 четверг


4-1274796190
Monarch
2010-05-25 18:03
2016.01.10
Проблема с активацией окна


2-1404474828
ivashka
2014-07-04 15:53
2016.01.10
Вертикальный текст


2-1404306028
Кирилов Андрей
2014-07-02 17:00
2016.01.10
D2010 & QuickReport