2012-11-20 75 views
2

它看起來像內置函數,VerCompare,但它需要具有全部四個組件的字符串,例如, 1.2.3.4。我還沒有嘗試在InstallScript中進行字符串操作,並希望有人已經有了代碼來接收版本字符串並根據需要添加.0's。如何比較InstallScript中的版本?

回答

4

需要一些錯誤檢查,但這裏的總體思路:

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;