2
它看起來像內置函數,VerCompare
,但它需要具有全部四個組件的字符串,例如, 1.2.3.4。我還沒有嘗試在InstallScript中進行字符串操作,並希望有人已經有了代碼來接收版本字符串並根據需要添加.0's。如何比較InstallScript中的版本?
它看起來像內置函數,VerCompare
,但它需要具有全部四個組件的字符串,例如, 1.2.3.4。我還沒有嘗試在InstallScript中進行字符串操作,並希望有人已經有了代碼來接收版本字符串並根據需要添加.0's。如何比較InstallScript中的版本?
需要一些錯誤檢查,但這裏的總體思路:
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;