InstallAnywhere - Detect Previous Version and Location

本篇文章分享在不使用內建Upgrade Mode情況下,如何偵測已安裝軟體的版本與安裝位置;因為偵測版本與安裝位置方法大同小異,所以我提供偵測版本方式就足夠了。

在Windows上通常都會使用registry,但Linux怎辦? IA在執行安裝完成後,會在系統中留下.com.zerog.registry.xml檔案,描述安裝資訊,其中就包含了版本與路徑。哪裡可以找到這個檔案?

Windows: C:/Program Files/Zero G Registry/.com.zerog.registry.xml。
Linux: /var/.com.zerog.registry.xml
可以仔細看看product標籤的內容:


接著可以使用Read/Modify XML File的Action,去把內容讀出來。首先是根據$PRODUCT_ID$去把對應的product標籤的位置讀出來:


然後可以透過這個index位置去把版本與安裝位置給讀出來:


假如目標系統沒有安裝過你的軟體,取得的index會是空字串;如果在取得版本或安裝位置時,有可能會讓你讀到別人的產品內容。因此我們必須加Rule去避免這個問題:


之後就可以根據拿到的變數去做你需要的操作。

如果不嫌麻煩,也可以做CustomCodeAction去parse這個檔案。