2017-04-25 39 views
0

我們使用Innosetup安裝程序將我們的二進制文件和INI文件安裝到系統中。 升級時,我們只需刪除現有的二進制文件並安裝新的二進制文件。 但是,它與INI文件有點不同,因爲用戶可以編輯ini文件值,並且我們希望保留該更改。在我們安裝一個更新的ini文件之前,我們將現有的ini文件複製到名稱後附上_copy,刪除原始的ini文件,安裝帶默認值的新ini文件,然後讀入_copy ini文件並使用(Section,key )。人們如何管理生產系統中的ini文件?

---該系統工作正常,直到我們決定重命名鍵或更改節名。然後我們必須有安裝後更新ini文件的腳本。

從長遠來看,我目前看到的問題是如果用戶想從1.0.1更新到1.0.9,我們該如何處理? 強制他們運行每個安裝程序從1.0.1到1.0.9? 構建遷移工具?有人目前正​​在使用哪種策略?

回答

1

這適用於數據庫以及任何版本化的結構化數據。 您需要決定是否支持遷移,如果您確實需要,則可以創建遷移腳本或在每個版本之間使用的實用程序。而版本的意思是每個版本都改變特定用戶數據資源的數據模式。將每個遷移分開,然後逐個遷移。所以如果您必須跨4個版本進行遷移,然後從1-> 2 2-> 3 3-> 4進行遷移。隔離即將遷移到遷移庫中的代碼。在某些時候,您必須決定哪些版本支持遷移。如果您決定停止支持遷移路徑,那麼他們可能需要先安裝舊版本。基本上,我會提供遷移,但對您支持的內容合理。

如果可能,請保留原始用戶數據的備份並將其保留給用戶以刪除它。這種手動回滾或升級仍然是可能的。

所有這些都是假設更多的企業產品與銷售工程師或至少與客戶有更直接的關係,因爲這是我唯一的經驗。如果您的產品用於大衆消費,那麼支持傳統ini並保留用戶數據可能會更智能。我期望像YAML/JSON或數據庫這樣的結構化數據具有需要遷移的模式更新,但像INI文件這樣簡單的應用可以很容易地支持舊版本,因爲它只是鍵/值。

0

用戶INI文件是用戶唯一的,永遠不會改變它。

  • 在應用程序或單獨的默認INI文件中具有硬編碼的默認值。
  • 如果未找到最新的名稱,使應用程序回退到傳統密鑰名稱或節名稱。
+0

我想我們不想在處理遺留文件的代碼中進行更改,而是在版本升級期間對INI進行編輯。 –

+1

@lukesignh這提醒了我,您應該留下以前版本的備份,並帶有時間戳和.bak擴展名,這樣如果遷移有任何複雜性,至少他們可以選擇手動回滾或升級 – Novaterata