2011-12-15 41 views
1

在install4j,我們可以設置覆蓋政策文件「如果有更新,否則問」,或「總是問」等。Install4j自定義操作合併新老屬性文件

我想升級一個具有.properties配置文件的應用程序,供最終用戶編輯。在較新的版本中,會添加一些屬性,但我們不想更新定製的現有屬性。

所以我將覆蓋策略設置爲「never」,並創建一個自定義操作來合併新的屬性。我可以使用「將文本附加到文件」,但我想更多地執行此操作動態地通過比較舊文件和新文件,並且只附加舊文件中不存在其鍵的屬性。

所以我的問題:

  1. 我能察覺如果操作的安裝或升級過程中叫什麼?
  2. 如果不覆蓋舊文件,我如何獲取新文件的內容?

回答

1

我可以檢測在安裝或升級過程中是否調用操作?

是的,你可以在條件表達式或其他腳本中使用

context.isUpdateInstallation() 

如何獲取新文件的內容,如果它沒有覆蓋舊文件?

如果未安裝文件,則無法訪問該內容。我建議如下:

  1. 安裝屬性文件,以不同的路徑
  2. 在新安裝的情況下,將其與「複製文件」行動
  3. 複製到目標路徑在這種情況下的合併屬性文件
  4. 在所有情況下,使用「刪除文件」操作刪除步驟1中的模板文件