2012-09-14 33 views
1

我的問題是,如果有一個替代插件類似於LogicLib?一個沒有像17.0.8.22支持的電話號碼,因爲我的程序版本,在註冊表是一個數字一樣,而且好像LogicLib不支持此爲Windows 7 它recgonize這樣的:NSIS替代如果,然後,其他,和等

${If} $0 = '17.0.22.0' 

但這失敗/被忽略,

${If} $0 > '17.0.22.0' 

回答

3

正如安德斯指出,在宏觀VersionCompare可以處理複雜VERSI比較。

這裏是一個小例子:

!include "logiclib.nsh" 
!include "wordfunc.nsh" 
OutFile "version.exe" 

!define v1 "1.4.0" 
!define v2 "1.3" 

Section 

    ${VersionCompare} "${v1}" "${v2}" $0 
    ${select} $0 
     ${case} 0 
      messagebox MB_OK "${v1} = ${v2}" 
     ${case} 1 
      messagebox MB_OK "${v1} newer than ${v2}" 
     ${case} 2 
      messagebox MB_OK "${v1} older than ${v2}" 
    ${endselect} 

SectionEnd 
+0

我不認爲這將與嵌入式安裝程序一起使用? –

+0

@YoshiKlarenbeek:你能詳細說明一下嗎?我無法理解你在說什麼嵌入式安裝程序。請注意,我的示例通過定義使用硬編碼版本,但您可以使用任何其他變量。 – Seki

+0

我正在使用NSIS來進行安裝稱爲TT的應用程序的設置。該程序需要一個名爲VDF的程序才能正常運行。所以我在$ EXEDIR中包含了VDF的安裝程序。這樣TT的安裝程序就可以讀取註冊表來檢查是否安裝了17.0.22.8版本。如果安裝了這個版本或者更新的版本,它應該給MBox說'注意,VDF已經安裝在這臺機器上了。'並且它取消了嵌入安裝程序的執行。如果當前安裝在機器上的版本較低,無法找到它,它應該執行嵌入式安裝程序。 –

1

VersionCompare是輔助宏與NSIS船舶的一部分...

+0

這一切都非常好,但我需要它來檢查當前值是否高於或低於或等於17.0.22.8所以當電流值低於或它不存在,那麼它需要做一些事情。 –

+0

什麼問題?根據VersionCompare返回的值,您可以處理3個替代方案(舊/相同/更新)。 – Seki