Как вы сравниваете версии в InstallScript?

Похоже, что есть встроенная функция, VerCompare, но для этого требуются строки, которые имеют все четыре компонента, например 1.2.3.4. Я не пытался манипулировать строками в InstallScript и надеялся, что у кого-то уже есть код, чтобы взять строку версии и добавить.0 по мере необходимости.

1 ответ

Решение

Нужна некоторая проверка ошибок, но вот общая идея:

prototype NUMBER CompareVersions(STRING, STRING);
prototype STRING FormatVersion(STRING);

function NUMBER CompareVersions(leftVersion, rightVersion)
    STRING formattedLeftVersion, formattedRightVersion;
begin
    formattedLeftVersion = FormatVersion(leftVersion);
    formattedRightVersion = FormatVersion(rightVersion);

    return VerCompare(formattedLeftVersion, formattedRightVersion, VERSION);
end;

function STRING FormatVersion(version)
    STRING formattedVersion;
    LIST tokens;
    NUMBER count;
begin
    tokens = ListCreate(STRINGLIST);
    StrGetTokens(tokens, version, ".");
    count = ListCount(tokens);
    ListSetIndex(tokens, LISTLAST);
    while (count < 4)
        ListAddString(tokens, "0", AFTER);
        count = count + 1;
    endwhile;
    StrPutTokens(tokens, formattedVersion, ".", FALSE);
    ListDestroy(tokens);
    return formattedVersion;
 end;
Другие вопросы по тегам