2015-10-27 98 views
0

我們正在開發一個(WPF)軟件,作爲獨立應用程序在每個客戶端上運行,並連接到數據庫服務器。你可以這樣看待它:1數據庫服務器= 1客戶= dosens /數百客戶端PC連接到這個數據庫。目前我們已經使用WIX做了一個安裝程序。強制更新到多個客戶端

讓我們考慮這種潛在的情況:我們發佈了一個新版本的軟件,其中包含一些數據庫模式更改。這意味着,如果一個客戶端安裝新版本並更新數據庫模式,則來自所有其他客戶端的軟件將不起作用。

那麼,在這種情況下有哪些可用的更新選項?是否有像從單一位置發佈給所有客戶的強制更新?

回答

0

我們有類似的更新要求。當對應用程序的更新與數據庫或存儲過程的更改對齊時,數據庫或存儲過程的更改與更新的客戶端應用程序之間的任何差異都可能導致錯誤。

檢修數據庫模式不夠,如果它只是SP中的更改,則可以對SP進行版本升級,並且只能從更新的軟件中調用新的SP。

由於我們的產品全部部署在網絡上,我們使用ClickOnce進行部署。我們手動運行代碼來檢查更新。爲此,我們實際上讀取了清單文件。我們更喜歡這種方法,而不是跟蹤數據庫上的版本,因爲它不需要我們維護版本。 (這是ClickOnce的用途)

我們在啓動時運行版本檢查。如果需要更新,我們強制更新,並要求用戶重新啓動應用程序。

+0

問題是,我們的應用程序不停止,他們不斷收集數據。那麼,你如何確保它們都在同一時間更新?我看到它的方式,一個客戶端可以重新啓動應用程序,並看到更新,並開始更新過程,而所有其他客戶端仍在運行。我不確定您使用ClickOnce有什麼優勢,但編寫應用更新檢查會很容易,如果存在,則啓動更新過程。 – Goran

+0

這裏的問題是#WHEN#:我們不能依賴於時鐘,因爲不同PC上的時鐘可能不會同步。我們也不能依賴互聯網來查詢時間。在所有機器上同時推出更新很重要。 – Goran