InstallAynwhere - Check Upgrade Version

先前曾分享抓取目標系統安裝軟體版本的方法。本篇要分享如何判斷是否滿足升級條件。

目前我們手上會有兩個變數:

  • $PRODUCT_VERSION_NUMBER$: 當前Installer的軟體版本,這是在Project>General Settings中設定的。
  • $BASE_PRODUCT_VERSION$: 在先前文章中,透過讀取IA registry file所取得的變數。

內建的IA Rule,並沒辦法達到比較字串大小的作用;假如我使用script去處理,會比較不好維護。因此最後決定寫CustomCodeRule去達到這個目的,程式碼很簡單,供給大家參考:

package org.tonylin.practice.ia.customcode;
 
import com.zerog.ia.api.pub.CustomCodeRule;
 
public class MatchUpgradeCriteria extends CustomCodeRule {
	@Override
	public boolean evaluateRule() {
		String base_version = (String)ruleProxy.getVariable("BASE_PRODUCT_VERSION");
		if( base_version == null || base_version.isEmpty() ) {
			return false;
		}
 
		String installer_version = (String)ruleProxy.getVariable("PRODUCT_VERSION_NUMBER");
 
		return installer_version.compareTo(base_version) >= 1;
	}
}
最後就是在你要執行升級動作相關的Action去加入CustomRule:


假如你會重複使用這個Rule,也可以先設定一個Flag Variable去增加執行效率。