Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 06.01.2014, 03:26   #1
Fahman
Участник клуба
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 702
Репутация: 23
По умолчанию Проверка обновлений C++

Как можно проверить текущию версию программы, и сравнить её с версией в txt на сервере?
Fahman вне форума   Ответить с цитированием
Старый 06.01.2014, 09:19   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

При запуске запросить с сервера txt файл, прочитать его и проверить версию.
Если ты хранишь версию как я - в ресурсах то вот пример на Делфи:
Код:

function VersionMe: String;
var
  verblock:PVSFIXEDFILEINFO;
  versionMS,versionLS:cardinal;
  verlen:cardinal;
  rs:TResourceStream;
  m:TMemoryStream;
  p:pointer;
  s:cardinal;
begin
  m:=TMemoryStream.Create;
  try
    rs:=TResourceStream.CreateFromID(HInstance,1,RT_VERSION);
    try
      m.CopyFrom(rs,rs.Size);
    finally
      rs.Free;
    end;
    m.Position:=0;
    if VerQueryValue(m.Memory,'\',pointer(verblock),verlen) then
      begin
        VersionMS:=verblock^.dwFileVersionMS;
        VersionLS:=verblock^.dwFileVersionLS;
        Result:=IntToStr(versionMS shr 16)   +'.'+
          IntToStr(versionMS and $FFFF)      +'.'+
          IntToStr(VersionLS shr 16)         +'.'+
          IntToStr(VersionLS and $FFFF);
      end;
    if VerQueryValue(m.Memory,PChar('\\StringFileInfo\\'+
      IntToHex(GetThreadLocale,4)+IntToHex(GetACP,4)+'\\FileDescription'),p,s) or
        VerQueryValue(m.Memory,'\\StringFileInfo\\040904E4\\FileDescription',p,s) then //en-us
          Result:=PChar(p)+' '+Result;
  finally
    m.Free;
  end;
end;

Который я использую. Попробуй переведи в Си.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 06.01.2014, 16:05   #3
Fahman
Участник клуба
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 702
Репутация: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
При запуске запросить с сервера txt файл, прочитать его и проверить версию.
Если ты хранишь версию как я - в ресурсах то вот пример на Делфи:
Код:

function VersionMe: String;
var
  verblock:PVSFIXEDFILEINFO;
  versionMS,versionLS:cardinal;
  verlen:cardinal;
  rs:TResourceStream;
  m:TMemoryStream;
  p:pointer;
  s:cardinal;
begin
  m:=TMemoryStream.Create;
  try
    rs:=TResourceStream.CreateFromID(HInstance,1,RT_VERSION);
    try
      m.CopyFrom(rs,rs.Size);
    finally
      rs.Free;
    end;
    m.Position:=0;
    if VerQueryValue(m.Memory,'\',pointer(verblock),verlen) then
      begin
        VersionMS:=verblock^.dwFileVersionMS;
        VersionLS:=verblock^.dwFileVersionLS;
        Result:=IntToStr(versionMS shr 16)   +'.'+
          IntToStr(versionMS and $FFFF)      +'.'+
          IntToStr(VersionLS shr 16)         +'.'+
          IntToStr(VersionLS and $FFFF);
      end;
    if VerQueryValue(m.Memory,PChar('\\StringFileInfo\\'+
      IntToHex(GetThreadLocale,4)+IntToHex(GetACP,4)+'\\FileDescription'),p,s) or
        VerQueryValue(m.Memory,'\\StringFileInfo\\040904E4\\FileDescription',p,s) then //en-us
          Result:=PChar(p)+' '+Result;
  finally
    m.Free;
  end;
end;

Который я использую. Попробуй переведи в Си.
на делфи я тоже знаю как. А как это перевести в C++?
Fahman вне форума   Ответить с цитированием
Старый 06.01.2014, 16:19   #4
Fahman
Участник клуба
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 702
Репутация: 23
По умолчанию

Например, как перевести этот код в C++:

Код:

var
version:WideString;
begin
try
version:=IdHTTP1.Get('http://sayt.ru/version.txt');
if version='1.0' then
begin
Application.MessageBox('У вас установлена последняя версия.','Внимание',MB_OK);
end
else
begin
Application.MessageBox('Доступно обновление.','Внимание',MB_OK);
end;
except
on e:Exception do
end;
end;

Fahman вне форума   Ответить с цитированием
Старый 06.01.2014, 20:00   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

А на какой Си? Если на Билдер то проще, а если на какойнить VC то придется WinAPI скорее всего юзать. Хедер WinInet точнее.
Собсно говоря можешь начать изучение отсюда: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 06.01.2014, 20:10   #6
Fahman
Участник клуба
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 702
Репутация: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А на какой Си? Если на Билдер то проще, а если на какойнить VC то придется WinAPI скорее всего юзать. Хедер WinInet точнее.
Собсно говоря можешь начать изучение отсюда: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Visual C++
Fahman вне форума   Ответить с цитированием
Старый 07.01.2014, 22:56   #7
Fahman
Участник клуба
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 702
Репутация: 23
По умолчанию

ну так что не кто не знает?
Fahman вне форума   Ответить с цитированием
Старый 07.01.2014, 22:58   #8
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Я так понял, предложенное мной в молоко?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка обновлений Fahman Visual C++ 0 04.01.2014 04:22
Как правильно сделать программу обновлений? Dux Работа с сетью в Delphi 13 13.06.2013 13:30
Построение системы обновлений Lindemann66 Qt и кроссплатформенное программирование С/С++ 0 05.06.2012 11:07
Выбор источника обновлений Bu$ter Microsoft Office Excel 20 12.11.2008 10:46
Система обновлений Johnson Общие вопросы Delphi 8 25.10.2008 20:39


20:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru