Вопрос C++ Обновление программы


Platon666

Уважаемый пользователь
Форумчанин
Регистрация
14.08.2014
Сообщения
61
Репутация
29
C++ Подскажите с обновлением программы, как реализовать сравнение версий с учетом того что она не прописана в установленных?
Допустим на машине есть файл версии 0.0.0.1, мне нужно чтоб упдатер сравнил версию на машине и на сервере, если версия на сервере 0.0.0.1 то продолжить выполнения кода, если версия выше например 0.0.0.2 то затянуть обнову.
PS Сорри если вопрос простой и тп, я только учусь..
 

virt

Просветленный
Просветленный
Регистрация
24.11.2016
Сообщения
706
Репутация
228
На вкладке ресурсов->*.rc->Правая кнопка мышки->Add Resource->Version->New

Потом это:

Получите версию файла.
 

Platon666

Уважаемый пользователь
Форумчанин
Регистрация
14.08.2014
Сообщения
61
Репутация
29
virt, при всем уважении..
Ответ из серии "Бог/Google в помощь!, "Кури маны" и тп.
Version Info создать не мудрено.
Вопрос был как дернуть версию, сравнить с той что на сервере и в зависимости от результата выбрать сценарий..
PS Тут каждый первый кодер, я спрашиваю как новичок, только знакомлюсь с плюсами..
Трудно выложить кусок гребанного кода? То что вы уже знаете..
Это примерно если бы меня спросили "что за эррор MySQL в панели", а я например вместо "проверь MySQL в конфиге панели" отправил бы курить маны.
 

virt

Просветленный
Просветленный
Регистрация
24.11.2016
Сообщения
706
Репутация
228
Ну в своей проге считываете ресурс, примерно так:
Код:
bool GetVersionInfo(
    LPCTSTR filename,
    int &major,
    int &minor,
    int &build,
    int &revision)
{
    DWORD   verBufferSize;
    char    verBuffer[2048];

    //  Get the size of the version info block in the file
    verBufferSize = GetFileVersionInfoSize(filename, NULL);
    if(verBufferSize > 0 && verBufferSize <= sizeof(verBuffer))
    {
        //  get the version block from the file
        if(TRUE == GetFileVersionInfo(filename, NULL, verBufferSize, verBuffer))
        {
            UINT length;
            VS_FIXEDFILEINFO *verInfo = NULL;

            //  Query the version information for neutral language
            if(TRUE == VerQueryValue(
                verBuffer,
                _T("\\"),
                reinterpret_cast<LPVOID*>(&verInfo),
                &length))
            {
                //  Pull the version values.
                major = HIWORD(verInfo->dwProductVersionMS);
                minor = LOWORD(verInfo->dwProductVersionMS);
                build = HIWORD(verInfo->dwProductVersionLS);
                revision = LOWORD(verInfo->dwProductVersionLS);
                return true;
            }
        }
    }

    return false;
}

На сервере в какой-то, например текстовый файл выкладываете информацию о новой версии, ну и вам ещё нужно считать эту информацию с сервера и сравнить с текущей версии, всё.)

По поводу курите маны, а по другому никак, я-же нашел эту информацию.

Просто если хотите что-то делать, нужно учится читать маны и самому делать, иначе ничего путного так и не сделаете, тем более в этой теме всё есть в сети.

Это не какие-то очень специфичные вещи.)))
 
Верх Низ