私下部署與集中部署 (SQL Server Compact)
您可以使用 SQL Server Compact 的集中部署或私下部署來部署使用 SQL Server Compact 4.0 所建立的 Managed 應用程式。SQL Server Compact 是使用安裝程式可執行檔安裝到電腦上。在私下部署中,SQL Server Compact 二進位檔會放置在應用程式資料夾本身內。以這種方式私下部署 SQL Server Compact 也稱為 SQL Server Compact 的 XCOPY 部署。
採用中央部署時,應用程式會使用安裝在全域組件快取 (GAC) 中的 SQL Server Compact Managed 組件 (System.Data.SqlServerCe.dll 和 System.Data.SqlserverCe.Entity.dll) 以及中央位置 (也就是 %Program Files%\Microsoft SQL Server Compact Edition\v4.0) 中的 SQL Server Compact 原始元件。如果安裝了較新的 SQL Server Compact 4.0 版本/更新,則使用 SQL Server Compact 中央部署的應用程式會在下次執行時使用更新的 SQL Server Compact 4.0 版本。集中部署的可能缺點是,SQL Server Compact 4.0 只能由擁有電腦之系統管理員權限的使用者安裝 (這是因為系統需要使用這些權限,才能將組件安裝於 GAC 以及註冊原生元件)。如果應用程式是使用 ClickOnce 技術所部署,而且 SQL Server Compact 4.0 在安裝期間集中部署為必要元件,則安裝可能會失敗,因為使用者缺少必要的權限來安裝 SQL Server Compact 4.0。
採用私下部署時,應用程式會使用 SQL Server Compact Managed 組件和任何必要 SQL Server Compact 原生程式庫的本機複本。這些組件和原生程式庫隨附於應用程式,而且在部署應用程式時,這些項目會安裝在目標系統的應用程式檔案路徑中。如果私下部署之 SQL Server Compact 組件的版本號碼高於集中安裝於 GAC 中的組件,應用程式就會使用私下部署的組件而非集中部署的組件。如果 GAC 中沒有 SQL Server Compact 組件 (SQL Server Compact 尚未集中部署於目標電腦上),應用程式就會使用其私下部署的組件。使用私下部署的其中一項優點在於,因為 SQL Server Compact 組件不會安裝在 GAC 中,而且原生元件不會向 COM 註冊,如此一來使用者就不需要擁有電腦的系統管理權限,所以能夠避免在鎖定系統上進行集中部署時可能面臨的問題。不過,私下部署會讓開發人員承擔更大的責任,因為無法集中提供私下部署之 SQL Server Compact 組件的更新。如果需要針對透過應用程式部署的 SQL Server Compact 組件進行更新,開發人員就必須使用包含必要更新的 SQL Server Compact 4.0 版本來重建應用程式,然後重新發行此應用程式。
安裝
32 位元及 64 位元作業系統上 SQL Server Compact 4.0 的安裝行為如下所述:
SQL Server Compact 4.0 |
作業系統 |
---|---|
32 位元 |
|
32 位元 |
成功 |
64 位元 |
錯誤 |
以下為安裝的 Managed 和原生組件:
Managed 組件:這些組件會安裝在 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private:
System.Data.SqlServerCe.dll
System.Data.SqlServerCe.Entity.dll
原生組件:這些組件會安裝在 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 和 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64,但 sqlceoledb40.dll 除外,它會安裝在 %Program Files&\Microsoft SQL Server Compact Edition\v4.0。
sqlceca40.dll
sqlcecompact40.dll
sqlceer40EN.dll
sqlceme40.dll
sqlceoledb40.dll
sqlceqp40.dll
sqlcese40.dll
除了上述之外,Microsoft Visual C++ 2008 執行階段程式庫 (CRT) 還有一個組件和一個資訊清單:
msvcr90.dll
Microsoft.VC90.CRT.manifest
更新和私下部署
私下部署的其中一個問題是,CLR 預設會從 GAC 載入組件。因此,當舊版 SQL Server Compact 存在於 GAC 中時,很難將更新發送至私下部署的 SQL Server Compact 組件,因為 CLR 將繼續從 GAC 載入 SQL Server Compact 組件。只有當私下部署的組件版本與 GAC 中的組件版本不同,而且已經使用部署於 GAC 中的組件來編譯應用程式時,CLR 才會載入私下部署的組件。
在 SQL Server Compact 4.0 中,我們已經透過下列方式解決了這個問題:
針對所有軟體更新遞增組件版本號碼,包括 Hotfix、Service Pack、重大修補程式和安全性更新。組件版本會依照下列方式遞增:4.0.0.1、4.0.0.2、4.0.0.3,依此類推。
將 Managed 組件 (System.Data.SqlServerCe.dll 和 System.Data.SqlServerCe.Entity.dll) 的其他複本安裝在下列資料夾:%Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private。
以下列方式套用更新:
若為一般 Hotfix,更新會套用至這兩個 Managed 組件其中一個或兩者的所有複本。不過,只會更新 Private 資料夾中的組件複本版本。對於非重大更新而言,這樣做可確保開發電腦上 Private 資料夾中之組件的版本號碼高於 GAC 中安裝的組件。此外,對於在套用更新之電腦上使用私下部署的應用程式而言,這樣做也可確保 CLR 將繼續從應用程式的路徑載入 SQL Server Compact 4.0 組件 (因為 GAC 中組件的版本號碼不會變更)。
若為安全性更新、Service Pack 和重大更新,更新會套用至這兩個 Managed 組件的所有複本,而且所有組件複本也會更新組件版本。此外,系統會更新發行者原則,以便確保自動將所有較低版本組件重新導向至新版本。對於套用更新的電腦而言,這樣做可確保 CLR 將從所有 SQL Server Compact 4.0 應用程式的 GAC 載入 Managed 組件,包括使用私下部署的應用程式。
開發使用私下部署的應用程式
若要開發使用 SQL Server Compact 4.0 私下部署的桌面應用程式:
確定開發電腦上 SQL Server Compact 4.0 的更新是最新版本。
在 Visual Studio 的 [加入參考] 對話方塊中,瀏覽至 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private 資料夾,藉以將兩個 SQL Server Compact Managed 組件的任何參考加入至專案 (若為使用集中部署的應用程式,就要從 [.NET] 索引標籤加入這些參考)。
將任何必要的原生程式庫加入至專案。您應該瀏覽至 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 資料夾、%Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 資料夾或兩者,藉以加入這些程式庫。您從中加入原生程式庫的資料夾取決於開發應用程式的目標平台 ([x86]、[x64] 或 [任何 CPU])。
您至少須加入下列原生組件:
sqlceer40EN.dll
sqlceme40.dll
sqlceqp40.dll
sqlcese40.dll
所有原生元件都會在 [private] 資料夾中找到自己的位置。為了方便管理與使用 x86 和 amd64 平台之原生元件的資料夾結構,安裝程式中的目錄結構會相同。
注意
64 位元的 SQL Server Compact 4.0 安裝程式是一個全套式 (All-Inclusive) 安裝程式。它會在電腦上安裝 32 位元元件、64 位元元件和架構中立元件。32 位元和 64 位元安裝程式都包含私下部署之任一架構的原生二進位檔。因此,您不需要解壓縮任何 64 位元原始組件,也能使用 32 位元開發環境建立適用於 64 位元電腦的 SQL Server Compact 4.0 應用程式。只要在 %Program files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 資料夾中挑選 64 位元的原生二進位檔即可。
確定上述加入的 Managed 組件和原生程式庫已複製到組建輸出。
如需有關建立桌面應用程式的詳細資訊,請參閱<建立用於桌上型電腦的應用程式 (SQL Server Compact)>。