Problem
先前曾分享抓取目標系統安裝軟體版本的方法。本篇要分享如何判斷是否滿足升級條件。
How to?
目前我們手上會有兩個變數:
- $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去增加執行效率。
Reference
- Standard InstallAnywhere Variables
- Custom Code
留言
張貼留言