私下部署與集中部署 (SQL Server Compact)

您可以使用 SQL Server Compact 的集中部署或私下部署來部署使用 SQL Server Compact 3.5 所建立的 Managed 應用程式。 在集中部署中,SQL Server Compact 是使用 Microsoft Windows Installer (MSI) 檔案安裝在電腦上,而透過複製並安裝裝置專用的 SQL Server Compact Windows 封包 (CAB) 檔案安裝在裝置上。在電腦與裝置的私下部署中,SQL Server Compact 元件會放置在應用程式資料夾本身內。以這種方式私下部署 SQL Server Compact 也稱為 SQL Server Compact 的 XCOPY 部署。

採用集中部署時,應用程式會使用安裝在全域組件快取 (GAC) 中的 SQL Server Compact Managed 組件 (System.Data.SqlServerCe.dll 和 System.Data.SqlserverCe.Entity.dll) 以及在 COM 中註冊的 SQL Server Compact 原生元件。 這表示,您可以使用 Microsoft Update 來集中提供 SQL Server Compact 3.5 的更新。 使用 SQL Server Compact 集中部署的應用程式會在下一次執行時使用更新的 SQL Server Compact 3.5 版本。集中部署的可能缺點是,SQL Server Compact 3.5 只能由擁有電腦之系統管理員權限的使用者安裝 (這是因為系統需要使用這些權限,才能將組件安裝於 GAC 中以及註冊原生元件)。 如果應用程式是使用 ClickOnce 技術所部署,而且 SQL Server Compact 3.5 在安裝期間集中部署為必要元件,則安裝可能會失敗,因為使用者缺少必要的權限來安裝 SQL Server Compact 3.5。

採用私下部署時,應用程式會使用 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 組件的更新 (Microsoft Update 只會更新集中安裝的 SQL Server Compact 3.5 執行個體)。如果需要針對透過應用程式部署的 SQL Server Compact 組件進行更新,開發人員就必須使用包含必要更新的 SQL Server Compact 3.5 版本來重建應用程式,然後重新發行此應用程式。

注意

SQL Server Compact 的重大安全性更新將透過 Microsoft Update 提供,甚至是私下部署 SQL Server Compact 的電腦也一樣。即使電腦上沒有集中安裝的 SQL Server Compact (SQL Server Compact 組件不會安裝在 GAC 中,而且不會註冊 SQL Server Compact 原生程式庫),系統仍然會進行這些更新。

SQL Server Compact 架構應用程式的私下和集中部署都支援桌面與裝置應用程式。

更新和私下部署

私下部署的其中一個問題是,CLR 預設會從 GAC 載入組件。因此,當舊版 SQL Server Compact 存在於 GAC 中時,很難將更新發送至私下部署的 SQL Server Compact 組件,因為 CLR 將繼續從 GAC 載入 SQL Server Compact 組件。只有當私下部署的組件版本與 GAC 中的組件版本不同,而且應用程式已經使用部署於 GAC 中的組件來編譯時,CLR 才會載入私下部署的組件。

從 SQL Server Compact 3.5 Service Pack 1 (SP1),我們已經透過下列方式解決這個問題了:

  • 針對所有軟體更新遞增組件版本號碼,包括 Hotfix、Service Pack、重大修補程式和安全性更新。組件版本會依照下列方式遞增:3.5.1.0、3.5.1.2、3.5.1.3,依此類推。

  • 將 Managed 組件 (System.Data.SqlServerCe.dll 和 System.Data.SqlServerCe.Entity.dll) 的其他複本安裝在下列資料夾:%Program Files%\Microsoft SQL Server Compact Edition\v3.5\Private。

以下列方式套用更新:

  • 若為一般 Hotfix,更新會套用至這兩個 Managed 組件其中之一或兩者的所有複本。不過,只有 Private 資料夾中的組件複本會更新版本。對於非重大更新而言,這樣做可確保開發電腦上 Private 資料夾中之組件的版本號碼高於 GAC 中安裝的組件。此外,對於在套用更新之電腦上使用私下部署的應用程式而言,這樣做也可確保 CLR 將繼續從應用程式的路徑載入 SQL Server Compact 3.5 組件 (因為 GAC 中組件的版本號碼不會變更)。

  • 若為安全性更新、Service Pack 和重大更新,更新會套用至這兩個 Managed 組件的所有複本,而且所有組件複本也會更新版本。此外,系統會更新發行者原則,以便確保自動將所有較低版本組件重新導向至新版本。對於套用更新的電腦而言,這樣做可確保 CLR 將從所有 SQL Server Compact 3.5 應用程式的 GAC 載入 Managed 組件,包括使用私下部署的應用程式。

開發使用私下部署的應用程式

注意

建議您使用 Visual Studio 2010 當做開發桌面應用程式的環境。建議您使用 Visual Studio 2008 SP1 來開發智慧型裝置應用程式。Visual Studio 2010 不支援開發智慧型裝置應用程式。如需詳細資訊,請參閱<安裝開發環境>。

若要開發使用 SQL Server Compact 3.5 私下部署的桌面應用程式:

  1. 確定開發電腦上 SQL Server Compact 3.5 的更新是最新版本。

  2. 在 Visual Studio 的 [加入參考] 對話方塊中,瀏覽至 %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Private 資料夾,藉以將兩個 SQL Server Compact Managed 組件的任何參考加入至專案 (若為使用集中部署的應用程式,就要從 [.NET] 索引標籤加入這些參考)。

  3. 將任何必要的原生程式庫加入至專案。您應該瀏覽至 %Program Files%\Microsoft SQL Server Compact Edition\v3.5 資料夾、%Program Files(x86)%\Microsoft SQL Server Compact Edition\v3.5 資料夾或兩者,藉以加入這些程式庫。您從中加入原生程式庫的資料夾取決於開發應用程式的目標平台 ([x86][x64][@@@任何 CPU])。至少,您必須加入下列原生組件:sqlceme35.dll、ssceqp35.dll、sscese35.dll 和 sqlceer35xx.dll。

    注意

    64 位元 SQL Server Compact 3.5 原生組件無法安裝在 32 位元電腦上。若要在使用 32 位元開發環境時,建立適用於 64 位元電腦的 SQL Server Compact 3.5 應用程式,您必須從 64 位元 SQL Server Compact 3.5 安裝程式 (SSCERuntime_x64-ENU.msi) 中擷取這些組件。如需詳細資訊,請參閱<如何:從 SQL Server Compact Runtime 安裝程式中擷取 64 位元 DLL>。

  4. 確定上述加入的 Managed 組件和原生程式庫已複製到組建輸出。

如需有關建立桌面應用程式的詳細資訊,請參閱<建立用於桌上型電腦的應用程式 (SQL Server Compact)>。

若要開發使用 SQL Server Compact 3.5 私下部署的智慧型裝置應用程式:

  1. 確定開發電腦上 SQL Server Compact 3.5 的更新是最新版本。

  2. 在 Visual Studio 中,從 [加入參考] 對話方塊的 [.NET] 索引標籤加入 .NET Compact Framework Data Provider for SQL Server Compact 的參考。這會將資料提供者從 %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Devices 資料夾加入至專案。不論是使用 SQL Server Compact 的私下或集中部署版本,這個步驟對於所有智慧型裝置應用程式而言都相同。

  3. 將任何必要的原生程式庫加入至專案。您應該瀏覽至目標平台的正確資料夾,藉以加入這些程式庫:%Program Files%\Microsoft SQL Server Compact Edition\v3.5\Devices\platform\processor 資料夾。至少,您必須加入下列原生程式庫:sqlceme35.dll、ssceqp35.dll、sscese35.dll 和 sqlceer35xx.dll。

  4. 確定上述加入的 Managed 組件和原生程式庫已複製到組建輸出。

如需有關建立智慧型裝置應用程式的詳細資訊,請參閱<建立智慧型裝置應用程式 (SQL Server Compact)>。

請參閱

其他資源

建立用於桌上型電腦的應用程式 (SQL Server Compact)

建立智慧型裝置應用程式 (SQL Server Compact)

部署智慧型裝置應用程式

部署桌上型電腦應用程式