Как вы сравниваете версии в 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;