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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.002 c
15-1431293402
Юрий
2015-05-11 00:30
2016.01.10
С днем рождения ! 11 мая 2015 понедельник


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


2-1404361144
lewka_s
2014-07-03 08:19
2016.01.10
Обновление программы


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


2-1404291103
Deled.
2014-07-02 12:51
2016.01.10
как вывести на печать с определенными параметрами?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский