這是本文件的舊版!


How to detect previous version in InstallAnywhere?

軟體升級是維護產品必經之路,而透過安裝程式升級,幾乎是大家都會使用的方式。InstallAnywhere在Premier版本提供了Upgrade功能,可以透過以下方式啟用它:


接著可以透過Check Running Mode去確認是否是在執行Upgrade:


對於安裝程式可以允許多個Feature各別安裝的使用者來說,在啟用這個功能後,相同版本就無法執行再次安裝了:


經過測試,在啟用Upgrade Mode後,Maintenance Mode沒有任何作用;面對這問題,我捨棄了IA所提供的Upgrade功能,自己去偵測是否要跑Upgrade流程。本篇文章主要分享我的心路歷程。
(我們使用InstallAnywhere 2015 Premier)

CustomCodeRule - HasPreviousVersionRule

package org.tonylin.practice.ia.customcode;
 
import com.zerog.ia.api.pub.CustomCodeRule;
 
public class HasPreviousVersionRule 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;
	}
}