我正在創建一個具有自己的數據庫模式的項目。其他將使用由我的項目創建的DLL的項目將在我的DLL所需的數據庫中具有相同的模式。 但是,如果需要爲我更改模式,問題就出現了,對於每個將數據庫中的所有更改進行更改的客戶端都不是一個好的選擇。如何創建安裝程序以實現數據庫模式更改?
所以,我想創建一個安裝程序,這將讓他們自動做到這一點... 任何建議,想法表示讚賞..
我正在創建一個具有自己的數據庫模式的項目。其他將使用由我的項目創建的DLL的項目將在我的DLL所需的數據庫中具有相同的模式。 但是,如果需要爲我更改模式,問題就出現了,對於每個將數據庫中的所有更改進行更改的客戶端都不是一個好的選擇。如何創建安裝程序以實現數據庫模式更改?
所以,我想創建一個安裝程序,這將讓他們自動做到這一點... 任何建議,想法表示讚賞..
看看這個工具 - >http://www.liquibase.org/ 它允許數據庫遷移腳本
自動化我會產生上,如果尚未應用的變化檢查數據庫架構中的每個變化的變化srcipt和我的DLL或與安裝的應用程序,將更新的DLL和運行所有的更改腳本出貨
謝謝親愛的..但如何將一個DLL自己運行腳本,只需將其添加到項目中?有道理..沒有?? – Manish 2009-07-15 13:23:08
您可以在數據庫中維護相應DLL的版本以及此版本的更新日期。 SQL更改腳本可以嵌入到DLL資源中。在應用程序啓動時(可能處於其中一個類的靜態構造函數中),可以檢查版本是否相應,如果不是 - 進行必要的更改 – 2009-07-15 13:38:46
你可能是我們e WiX創建安裝程序:GAC對您的程序集只是一個選項,您可以針對數據庫執行SQL腳本。
該解決方案使用Visual Studio 2008中的安裝項目,並利用.NET框架中的內建Installer
類。其他鏈接可以參見here和here。
這裏是做什麼基本輪廓:
Installer
類實例將被安裝到客戶端的PCInstaller
類的相關方法以從最終用戶durin獲取數據庫連接詳細信息摹應用程序安裝這裏有一個一步
Installer
類:an Installer
類必須安裝在要安裝的應用程序內部。在Visual Studio的解決方案資源管理器中,選擇要安裝的應用程序,然後單擊菜單項「項目 - >添加新項目 - >安裝程序類」。這將添加一個名爲「Installer1」的默認安裝程序類。Installer
類(「Installer1」),並覆蓋OnBeforeInstall
自定義操作。這裏的東西是如何工作的僞代碼:
[Installer1.cs]
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
MessageBox.Show("OnBeforeInstall: " + GetProperties(savedState));
using (ConnectionDialog d = new ConnectionDialog())
{
d.ShowDialog();
savedState["database"] = d.Database;
savedState["user"] = d.User;
savedState["password"] = d.Password;
savedState["integrated"] = d.Integrated;
}
}
的IDictionary
例如,通過安裝在傳遞是用戶可以填充鍵/值對的集合與他們的相關數據。同樣的信息被傳入其他方法,例如OnBeforeUninstall
,開發人員可以使用這些方法來分離數據庫或回滾更改或其他任何其他方法。
如果您的安裝可以調用,您可以創建一個批處理文件,不只是遵循一個簡單的批處理文件:
Liquibase是作爲一個Java庫實現的,但它應該可以作爲一個dll使用ikvm運行 – 2009-07-18 04:00:09