![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Вопрос таков.
Есть программа , которая по умолчанию запускается с главной формой FORM1, вроде все хорошо и все устраивает. Пишу обновление для своей программы и хочу ,когда есть новая версия программы на сервере по умолчанию загружалась FORM2. То есть , когда программа свежая грузится форма 1, а когда есть новая версия тогда форма2. Как заставить открываться форму 2? |
|
#2
|
|||
|
|||
|
Можете в Form1 поставить событие OnCreate.
Если будут обновления то нужно скрыть Form1.Visible:=false; а Form2.Visible:= True; |
|
#3
|
|||
|
|||
|
Код:
var c_ver,new_ver:string; begin //получаешь версию своей программы, //Версию новой программы if c_ver < new_ver then begin Timer1.Enabled:=True; end; Timer1.onTick Form2.Show; Form1.Hide; я так делаю ) если без таймера то падают ошибки Последний раз редактировалось ApxaHGe1, 25.08.2016 в 14:46. |
|
#4
|
|||
|
|||
|
Я просто не правильно выразился.
Суть такая , запускается программа , проверяются версии с сервером. Если версия ниже , переименовываю текущую в qqq_old.exe и запускаю уже как qqq_old.exe и вот её хочу запустить уже с формой 2 (для продолжения скачивания программы qqq.exe) Переименовываю , что бы qqq.exe не заругалась , что такое имя файла уже есть |
|
#5
|
|||
|
|||
|
Я так обновляюсь и все прекрасно работает
Код:
var
ver:string;
restart:TextFile;
FileStream :TFileStream;
begin
ver:=IdHTTP1.Get('http://******.ru/soft/ver.txt');
if ver > GetMyVersion then
begin
FileStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+'\'+'BC_new.exe', fmCreate);
IdHTTP1.Get('http://********.ru/soft/BC.exe', FileStream);
FileStream.Free;
AssignFile (restart,ExtractFilePath(Application.ExeName)+'\'+'restart.bat');
Rewrite (restart);
WriteLn (Restart,'DEL BC.exe');
WriteLn (Restart,'REN BC_new.exe BC.exe');;
WriteLn (Restart,'BC.exe');
WriteLn (Restart,'for /L %%b in (1,1,500) Do @Echo %%b >Nul');
CloseFile (restart);
ShellExecute(0,'OPEN',PAnsiChar (ExtractFilePath(Application.ExeName)+'\'+'restart.bat'),0,0,0);
ExitProcess(0);
end; |
| Этот пользователь сказал Спасибо ApxaHGe1 за это полезное сообщение: | ||
starcon (25.08.2016)
| ||
|
#6
|
|||
|
|||
|
Тоже вариант .
Сделаю немного поправок под себя. СПАСИБО |
|
#7
|
||||
|
||||
|
А что мешает запускаться не с основной программы, а с апдейтера? Запускается апдейтер, проверяет наличие обновлений, если есть перезаписывает и запускает, если нет - просто запускает.
|