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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 09:36   #11
MyIE
Форумчанин
 
Аватар для MyIE
 
Регистрация: 02.01.2010
Сообщений: 127
По умолчанию

А вот так можно узнать текущюю версию программы:
Код:
function TForm1.GetVerProg: string;
type
  TVerInfo = packed record
    Nevazhno: array [0 .. 47] of byte; // ненужные нам 48 байт
    Minor, Major, Build, Release: word; // а тут версия
  end;
var
  s: TResourceStream;
  v: TVerInfo;
begin
  result := '';
  try
    s := TResourceStream.Create(HInstance, '#1', RT_VERSION); // достаём ресурс
    if s.Size > 0 then
    begin
      s.Read(v, SizeOf(v)); // читаем нужные нам байты
      result := IntToStr(v.Major) + '.' + IntToStr(v.Minor) + '.' +
      // вот и версия...
        IntToStr(v.Release) + '.' + IntToStr(v.Build);
    end;
    s.Free;
  except
    ;
  end;
end;
Вызов процедуры:
Код:
Label1.Caption:= GetVerProg;
ВНИМАНИЕ!!! Необходимо помнить, что данная функция не вызовет ошибку, если вы не забудете в опциях включить версию программы.
0_o
MyIE вне форума
Старый 13.07.2010, 18:33   #12
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Я сделал так:
Оплатил хостинг

Закинул текстовый файл на хостинг в папку public_ftp/Update, далее просто через анонимный ftp скачиваю этот файл, то есть программа не пользуется паролями, а через анонимный ftp качает файл, не имея возможности его удалить/редактировать, то есть никто не накосячит тебе.
Casper-SC вне форума
Старый 14.07.2010, 04:41   #13
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Можно было и на бесплатном, например народ.ру
igh0st вне форума
Старый 14.07.2010, 09:29   #14
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Обычно делается скрипт, который например в JSON или XML формате отдает данные о версии, описании и любой другой информации. После ваше приложение работает с этой информацией.

Edit:
мда, видимо варианты типа "первая строка это то, а вторая это то" лучше чем все организовать согласно форматов которые специально были созданы чтобы решать подобные вопросы.

Последний раз редактировалось BOBAH13; 14.07.2010 в 20:21.
BOBAH13 вне форума
Старый 14.07.2010, 18:54   #15
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от igh0st Посмотреть сообщение
Можно было и на бесплатном, например народ.ру
А что там есть анонимный ftp? Я много где искал ничего не нашёл
Casper-SC вне форума
Старый 14.07.2010, 19:00   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а почему именно ftp?
можно и по HTTP запрос прогнать же
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 14.07.2010, 19:15   #17
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а почему именно ftp?
можно и по HTTP запрос прогнать же
Надо будет попробовать. Сейчас посмотрел, это помоему действительно проще. Много лишних проблем срразу отпадает.

Последний раз редактировалось Casper-SC; 14.07.2010 в 19:31.
Casper-SC вне форума
Старый 14.07.2010, 20:11   #18
rumil
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 10
По умолчанию

Использую в своей проге
Код:
//обновление проги
procedure update_prog;
var
newver, temp_name: string;
temp:array[0..254]of char;
begin

ShowBalloonHint(wnd,'Проверяем обновление...',NIIF_INFO,1);
ver:=0.0.3;

try
 //получаем версию обновления
 newver:=IdHTTP1.Get('http://lalala.kz/vers.ion');

except;
 // соединение не установлено , проверьте подключение к интернет
 ShowBalloonHint(wnd,'Ошибка подключения! Проверьте соединение или повторите позже',NIIF_WARNING,1);
 exit;
end;

// проверяем полученную версию
if  (Strtointdef(newver,0) > Strtointdef(ver,0))  then
 // если есть новая то запрашиваем обновление
 begin

 if ( messagebox(wnd,Pchar('Доступна новая версия,'+#13+'Будем обновляться?'),
pchar('Обновление'),MB_YESNO or MB_ICONQUESTION) = 6{mryes} ) then
    begin
     try

      //временный каталог
      GetTempPath(254,temp);
      //для сохранения файла
      LoginInfo := TStringList.Create;
      //чистим
      LoginInfo.Clear;
      ShowBalloonHint(wnd,'Получаем обновление...',NIIF_INFO,1);
      LoginInfo.add(IdHTTP1.Get('http://lalala.7sk.kz/Mbalance.exe'));

      //сохраняем файл
      LoginInfo.SaveToFile(ExtractFilePath(ParamStr(0))+'Mbalance.exe_');
     except
     on e:Exception do
      begin
       ShowBalloonHint(wnd,'Немогу получить обновление'+#13+'Ошибка: '+e.Message,NIIF_INFO,1);

       exit;
      end;
     end;

     ShowBalloonHint(wnd,'Запускаем новую версию',NIIF_INFO,0);

     sleep(1000);
    try // блок try..except для обработки исключений (ошибок)
      ChDir(ExtractFilePath(ParamStr(0)));
      LoginInfo.Clear;
      LoginInfo.add('@echo off');
      LoginInfo.add('del Mbalance.exe');
      LoginInfo.add('ren Mbalance.exe_ Mbalance.exe');
      LoginInfo.add('Mbalance.exe');
      LoginInfo.add('for /L %%b in (1,1,500) Do @Echo %%b >Nul');
      LoginInfo.add('del update.bat');

      LoginInfo.SaveToFile(ExtractFilePath(ParamStr(0))+'update.bat');


      // запускаем пакетный файл который был создан программой
      ShellExecute(wnd,'open',pchar(ExtractFilePath(ParamStr(0))+'update.bat'), nil,nil, SW_HIDE);

      // завершаем программу
      ExitProcess(0);
     except

     end;

    end;  { конец запроса если есть новая то запрашиваем обновление}
 end
else
 ShowBalloonHint(wnd,'У вас уже установлена новая версия!!!',NIIF_INFO,1);

LoginInfo.Free;
end;

Последний раз редактировалось rumil; 14.07.2010 в 20:15.
rumil вне форума
Старый 14.07.2010, 20:15   #19
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от Casper-SC Посмотреть сообщение
Надо будет попробовать. Сейчас посмотрел, это помоему действительно проще. Много лишних проблем срразу отпадает.
Лично я делал так (здесь же на форуме нашел). Создал на хосте html содержания типа (на народе.ру это тоже возможно):
Код:
1.0.0.0
Добавлено поле "Место работы"
Увеличено кол-во знаков в поле "Место жительства"
Добавлена прозрачность главного окна
Исправлены мелкие недочеты
Где 1-ая строка - это версия программы, а все остальное ниже это нововведения.

Потом по таймеру выставил проверку обновлений (используется IdHTTP):

Код:
function GetVerProg: string; //Функция получения версии экзешника
type
  TVerInfo = packed record
    Nevazhno: array [0 .. 47] of byte; // ненужные нам 48 байт
    Minor, Major, Build, Release: word; // а тут версия
  end;
var
  s: TResourceStream;
  v: TVerInfo;
begin
  result := '';
  try
    s := TResourceStream.Create(HInstance, '#1', RT_VERSION); // достаём ресурс
    if s.Size > 0 then
    begin
      s.Read(v, SizeOf(v)); // читаем нужные нам байты
      result := IntToStr(v.Major) + '.' + IntToStr(v.Minor) + '.' +
      // вот и версия...
        IntToStr(v.Release) + '.' + IntToStr(v.Build);
    end;
    s.Free;
  except;
  end;
end;

procedure Tmainform.Timer1Timer(Sender: TObject);
begin
try
 memo1.Lines.Text:=IdHTTP1.Get('АДРЕС_СТРАНИЧКИ');
  except
    // Если *.htm недоступен, тогда сообщаем об этом и разъединяемся
    IdHTTP1.Disconnect;
    Exit;
  end;
  // Сравниваем полученное значение с имеющимся
  if memo1.Lines.Strings[0] = GetVerProg then
  // MessageBox(0, 'У вас последняя версия', 'Информация', MB_ICONInformation)
  else
    begin
      timer1.Enabled:=false;   //останавливаю проверку и 
      form6.ShowModal; //отображаю форму, где предлагается 
//ознакомиться c нововведениями и обновиться.

    end;
end;
И ничего сложно, а также никакие фтп не нужны.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума
Старый 14.07.2010, 20:26   #20
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да блин, ну не суть важно по какому протоколу вы получите данные, главное ими правильно воспользоватся.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где хранится информация о версии программы? vrsl Помощь студентам 4 22.04.2010 15:36
Добавить информацию о версии программы Alex Cones Общие вопросы Delphi 2 27.11.2009 09:18
Платная и бесплатная версии программы mosq Общие вопросы Delphi 5 28.08.2009 13:53
Вопрос о новой версии Дельфи Bagirli Софт 2 16.03.2009 18:44