我的問題是,如果有一個替代插件類似於LogicLib?一個沒有像17.0.8.22
支持的電話號碼,因爲我的程序版本,在註冊表是一個數字一樣,而且好像LogicLib不支持此爲Windows 7 它recgonize這樣的:NSIS替代如果,然後,其他,和等
${If} $0 = '17.0.22.0'
但這失敗/被忽略,
${If} $0 > '17.0.22.0'
我的問題是,如果有一個替代插件類似於LogicLib?一個沒有像17.0.8.22
支持的電話號碼,因爲我的程序版本,在註冊表是一個數字一樣,而且好像LogicLib不支持此爲Windows 7 它recgonize這樣的:NSIS替代如果,然後,其他,和等
${If} $0 = '17.0.22.0'
但這失敗/被忽略,
${If} $0 > '17.0.22.0'
正如安德斯指出,在宏觀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
VersionCompare是輔助宏與NSIS船舶的一部分...
這一切都非常好,但我需要它來檢查當前值是否高於或低於或等於17.0.22.8所以當電流值低於或它不存在,那麼它需要做一些事情。 –
什麼問題?根據VersionCompare返回的值,您可以處理3個替代方案(舊/相同/更新)。 – Seki
我不認爲這將與嵌入式安裝程序一起使用? –
@YoshiKlarenbeek:你能詳細說明一下嗎?我無法理解你在說什麼嵌入式安裝程序。請注意,我的示例通過定義使用硬編碼版本,但您可以使用任何其他變量。 – Seki
我正在使用NSIS來進行安裝稱爲TT的應用程序的設置。該程序需要一個名爲VDF的程序才能正常運行。所以我在$ EXEDIR中包含了VDF的安裝程序。這樣TT的安裝程序就可以讀取註冊表來檢查是否安裝了17.0.22.8版本。如果安裝了這個版本或者更新的版本,它應該給MBox說'注意,VDF已經安裝在這臺機器上了。'並且它取消了嵌入安裝程序的執行。如果當前安裝在機器上的版本較低,無法找到它,它應該執行嵌入式安裝程序。 –