共用方式為


部署已開發網站元素自訂

本文內容:

  • 使用方案套件部署已開發網站元素

  • 使用「功能」部署已開發網站元素

本文提供使用 Microsoft Office SharePoint Server 2007,部署已開發網站元素自訂的指導,其中涵蓋部署程序、一般考量和部署自訂程式碼的相關最佳作法。

**「已開發網站元素」是指提供網站功能的應用程式和檔案。例如,實作商務程序的工作流程,或讓使用者能建立特定設計之網站的網站範本。已開發網站元素是在伺服器陣列的網頁伺服器上部署,或在某些情況下,部署在伺服器陣列中間層的專用應用程式伺服器。

本文中的各小節描述如何使用不同的方法,在 Office SharePoint Server 2007 中部署已開發網站元素,包括描述如何匯入、匯出和建立方案套件和「功能」的程序。

本文不討論已製作網站元素的部署,例如網頁、階層式樣式表,以及版面配置頁面。如需部署已製作網站元素的相關資訊,請參閱<部署已授權的網站元素自訂>。如需已製作網站元素和已開發網站元素之間差異的詳細資訊,請參閱<檢閱網站元件>。

閱讀本文章之前,請先熟悉設計和建置網站相關的概念。如需詳細資訊,請參閱<關於設計與建立網站>。

本文中的程序是根據<自訂案例>一文中描述的拓撲,可能無法完全符合您的環境。

這些程序可能需要數個不同角色之間相互合作。此外,本文假設會使用排程部署工作,進行拓撲特定層之間的內容移轉。

注意

若要排除潛在同步處理問題,則已開發網站元素必須永遠在已製作網站元素之前進行部署。如需已製作和已開發網站元素的詳細資訊,請參閱<檢閱網站元件>。另外請注意,來源伺服器使用的任何語言套件,也必須安裝在目的地伺服器上,否則內容部署將會失敗。

下表摘要說明本文所描述的部署方法。

方法 附註

方案套件

方案套件為配送套件,可以將自訂 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 開發工作遞送至網頁伺服器或伺服器陣列中的應用程式伺服器。

使用方案套件,可以:

  • 在連線和離線環境中部署已開發網站元素。

  • 部署相同套件中的成品和已開發網站元素。

您不可以使用方案套件來部署已製作完成但還不是成品的網站元素。

功能

「功能」是部署到網頁伺服器的 XML 套裝集合。「功能」可以搭配在網站定義及解決方案中,或個別在 Office SharePoint Server 網站中啟動。

使用「功能」,您可以:

  • 在連線和離線環境中部署已開發網站元素。

  • 啟動和停用管理中心網站中的自訂,或是使用 Stsadm 命令列工具。

  • 控制部署的範圍。

  • 將「功能」與其他功能、已開發網站元素和成品一起包含在方案套件中。

無法使用「功能」來部署已製作網站元素。

下列各節會詳細描述每種列出的部署方法。

使用方案套件部署已開發網站元素

本節內容:

  • 何謂方案套件?

  • 方案套件的使用時機

  • 使用管理中心部署解決方案

  • 建立方案套件

  • 使用 Stsadm 命令列工具匯入方案套件

  • 使用 Stsadm 命令列工具部署方案套件

何謂方案套件?

**「方案套件」是配送套件,可將自訂 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 開發工作,遞送至伺服器陣列中的網頁伺服器或應用程式伺服器。方案套件是副檔名為 .wsp 的 CAB 檔案以及資訊清單檔案。此套件使用 Makecab.exe 這類的工具手動建立,也可以使用「解決方案產生器」( Windows SharePoint Services 3.0 工具:Visual Studio 2005 Extensions (英文) (https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x404) 所含的獨立應用程式) 建立。

可以封裝在解決方案中的元件包括:

  • .NET Framework 組件,包裝驅動解決方案的程式碼。

  • 部署檔案 (如資源檔案、圖像或其他協助程式檔案)。

  • 網站、清單、文件庫、欄位、內容類型及其他的新的範本和定義。這些定義的格式是 CAML 型 XML 檔案。

  • 「功能」,允許您啟動及停用網站中的程式碼。

  • 必須在網頁伺服器層級上執行的設定;例如,用以登錄網頁組件的 Web.config 檔案。

如需詳細資訊,請參閱<方案套件元件>。

方案套件的使用時機

您可以使用方案套件來遞送已開發網站元素和成品 (描述於<部署已授權的網站元素自訂>)。也可以使用方案套件在離線環境中部署已開發網站元素,或是將已開發網站元素儲存到軟體設定管理系統。

如果符合下列其中一或多個因素,則可以使用方案套件部署已開發網站元素:

  • 中斷連線環境 如果伺服器陣列中斷連線,則應該建立方案套件,以對整合伺服器陣列進行非同步傳送。。

  • 軟體設定管理環境   您可以將開發工作合併在方案套件中,以便遞送給軟體設定管理系統。

  • 包含「功能」與其他已開發網站元素   您可以將「功能」與其他自訂包含在方案套件中。如果您的自訂有些包裝為「功能」,而其他的則否,那麼可以使用方案套件作為標準的部署媒體。

  • 成品和已開發網站元素的 Tandem 遞送   如果要在單一部署套件中部署成品和已開發網站元素,請使用方案套件。

  • 指令碼部署   如果想要撰寫指令碼來自動部署已開發網站元素,可以使用方案套件。

如<自訂案例>一文中的部署圖表所示,您可以使用方案套件來部署已開發網站元素自訂,其可部署於開發人員工作站和整合伺服器陣列或軟體設定管理系統之間,或是在整合伺服器陣列和製作用戶端工作站及試驗或實際執行伺服器陣列之間。

使用管理中心部署解決方案

您可以從管理中心網站部署匯入的解決方案。使用 Stsadm -Addsolution 作業將解決方案匯入到解決方案資料庫時 (如本文稍後在<使用 Stsadm 命令列工具匯入方案套件>一節中所述),必須先部署到網站才能存取。

注意

您無法在管理中心裡使用解決方案管理頁面匯入解決方案。

下列程序顯示如何將匯入的解決方案部署到伺服器陣列中的網站。

在管理中心網站中部署解決方案

  1. 按一下管理中心網站上方連結列上的 [作業]。

  2. 在 [作業] 頁面上,按一下 [通用設定]**** 區段的 [方案管理]。

  3. 在 [方案管理] 頁面上,按一下您要部署的解決方案。

  4. 按一下 [方案內容]**** 頁面的 [部署方案]。

  5. 在 [部署方案] 頁面的 [部署時間] 區段中,選取下列其中一項:

    • 現在

    • 在指定的時間。如果選取此選項,請使用日期和時間方塊指定時間。建議您選取目的地伺服器上低負載的時間。

  6. 在 [部署位置?] 區段的 [特定 Web 應用程式]**** 清單內,按一下 [所有 Web 應用程式] 或選取特定 Web 應用程式。

  7. 按一下 [確定]****。

建立方案套件

本節描述包含已開發網站元素和成品之方案套件的建立方法。建立方案套件有數種不同的方法。下表摘要說明本節所描述的方法。

方法 描述

手動

您可以使用 Makecab.exe 工具手動建立方案套件。因為 Office SharePoint Server 2007 不包含建立方案套件的工具,這是預設的方法。

您可以在 Microsoft Cabinet Software Development Kit (https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x404) (機器翻譯) 中下載 Makecab.exe 工具。

SharePoint 解決方案產生器

SharePoint 解決方案產生器是獨立的應用程式,可以將某些類型的 Office SharePoint Server 2007 或 Windows SharePoint Services 3.0 網站轉換成 Visual Studio 2005 網站定義專案。如果您使用 Visual Studio 2005 來進行網站元素自訂的情況下,此方法可能有用。

您可以在 Windows SharePoint Services 3.0 工具:Visual Studio 2005 Extensions (英文) (https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x404) 下載 SharePoint 解決方案產生器。

WSPBuilder

WSPBuilder 是開放原始碼命令列工具,可用來自動建立方案套件。如果定期建立方案套件,且在環境中使用開放程式碼工具未受限制的情況下,此方法可能有用。

您可以在 Codeplex (英文) (https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x404) 下載 WSPBuilder 工具。

手動建立方案套件

Office SharePoint Server 2007 解決方案的開發人員,在需要執行下列任何動作時,經常會手動建立 SharePoint 方案套件:

  • 在私人應用程式資料夾中部署 .NET Framework 組件,而非全域組件快取。

  • 將程式碼存取安全性權限新增到解決方案,而這些權限必須在部署期間套用。

  • 使用預設以外的「功能」資料夾名稱。

  • 本地化解決方案。

  • 將「功能」事件處理常式與特定類型的 Windows SharePoint Services 3.0 解決方案相關聯,例如網頁組件解決方案。

  • 新增資源 (XML 檔案、圖片, .dll 檔案和組件) 到方案套件。

若要手動建立解決方案檔,請執行下列基本步驟:

  1. 將所有個別的解決方案檔收集到資料夾中。沒有具體的作法準則,但最佳作法是將不同類型的解決方案檔分別放入自己的子資料夾。

  2. 建立列出解決方案元件的 manifest.xml 檔案。

  3. 建立定義 Windows SharePoint Services 3.0 解決方案檔結構的 .ddf 檔。這個檔案包含決定 output.wsp 檔之個別解決方案檔的清單。

  4. 執行 Makecab.exe,使用 .ddf 檔作為輸入,.wsp 檔作為輸出。

前面的基本步驟詳細描述於接下來的程序中。

注意

若要執行此程序,您將需要 Makecab.exe 工具,它可以在 Microsoft Cabinet Software Development Kit (https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x404) (機器翻譯) 中下載。

使用 Makecab.exe 手動建立方案套件

  1. 建立解決方案 manifest.xml 檔。

    解決方案資訊清單 (一定稱為 manifest.xml) 儲存於解決方案檔的根目錄。這個檔案定義功能、網站定義、資源檔、網頁組件檔及程序組件等的清單。它不會定義檔案結構-如果檔案包含在解決方案中,但未列於 manifest.xml 檔,則它們便不會被處理。

    以下 manifest.xml 檔結構的範例是以 XML 顯示。

    <?xml version="1.0" encoding="utf-8" ?>

    <Solution xmlns="https://schemas.microsoft.com/sharepoint/"

    SolutionId="{79d1a62e-3627-11db-963e-00e08161165f}"

    ResetWebServer="TRUE">

        <Assemblies>

            <Assembly DeploymentTarget="GlobalAssemblyCache"

    Location="Example.Sharepoint.Webparts\

    Example.SharePoint.WebParts.dll">

                <SafeControls>

                    <SafeControl Assembly="Example.Sharepoint.Webparts,

    Version=1.0.0.0, Culture=Neutral, PublicKeyToken=63cce650e8605f5d"

    Namespace="Example.Sharepoint.Webparts" TypeName="*"/>

                </SafeControls>

            </Assembly>

            <Assembly DeploymentTarget="GlobalAssemblyCache"

    Location="Example.Sharepoint.Timer/Example.Sharepoint.Timer.dll"/>

        </Assemblies>

        <FeatureManifests>

            <FeatureManifest Location="Example.Sharepoint.Timer\Feature.xml"/>

            <FeatureManifest Location="Example.CustomType\Feature.xml"/>

            <FeatureManifest Location="Example.ExampleLibrary\Feature.xml"/>

            <FeatureManifest Location="Example.Columns\Feature.xml"/>

            <FeatureManifest Location="Example.Workflow.ProcessExample\Feature.xml"/>

            <FeatureManifest Location="Example.Workflow.ProvisionExample\Feature.xml"/>

        </FeatureManifests>

        <SiteDefinitionManifests>

            <SiteDefinitionManifest Location="EXAMPLE">

                <WebTempFile Location="1033\XML\WEBTEMPExample.XML"/>

            </SiteDefinitionManifest>

        </SiteDefinitionManifests>

    </Solution>

    此外,可以新增 DwpFiles 元素來指定 .webpart 或 .dwp 檔,或是新增 ResourceFiles 元素來指定資源檔、網站定義、應用程式資源和程式碼存取安全性原則。

  2. 您可以選用 <ElementFile> 標籤為 Feature.xml 檔加上註釋。

    在 Feature.xml 檔的 <ElementManifests> 標籤中,為功能裡的所有其他檔案新增 <ElementFile Location="..."/>,例如 Active Server Page 擴充功能 (ASPX) 頁面 (例如 allitems.aspx) 或主版頁面等等。

    注意

    唯有在解決方案包含「功能」時才需要此步驟。

  3. 建立您的方案套件 (.wsp 檔)。

    由於解決方案檔基本上是 CAB 檔,因此請使用 Makecab.exe 工具來建立方案套件。Makecab.exe 工具會採用 .ddf 檔的指標,該指標描述 CAB 檔的結構。.ddf 檔案格式與 .inf 檔案格式類似。也就是說,宣告標準標頭,然後依檔案組在磁碟機上的位置進行列舉 (每行一個檔),並依其在 CAB 檔中的所在位置進行分隔。例如:

    ; .OPTION EXPLICIT    

    ; Generate errors

    .Set CabinetNameTemplate=MySolutionFile.wsp

         .set DiskDirectoryTemplate=CDROM

    ; All cabinets go in a single directory

    .Set CompressionType=MSZIP

    ;** All files are compressed in cabinet files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package build\manifest.xml manifest.xml build\

    MySolutionFile\Feature.xml MySolutionFile\Feature.xml ...

逐步解說:產生及部署自訂的網頁組件方案套件

本節提供如何建置和部署包含自訂網頁組件之方案套件的範例。這項逐步解說需要使用 Visual Studio 2005 以及 Makecab.exe 工具。

Office SharePoint Server 2007 讓開發人員能夠選擇在安裝、啟動、停用或解除安裝「功能」時,執行自訂的程式碼。例如,依賴特定工作清單的網頁組件。啟動「網頁組件功能」時,自訂程式碼可以檢查此份工作清單是否為網站內清單的一部分。若不是,程式碼會建立清單,然後在停用「功能」時移除該清單。自訂程式碼包裝成 .NET Framework 組件,稱為「功能接收器組件」。

這項逐步解說假設,您已建立網頁組件專案。安裝、啟動、停用或解除安裝「網頁組件功能」時,Office SharePoint Server 發生非同步的事件。藉由建立繼承來自抽像 Microsoft.SharePoint.SPFeatureReceiver 類別的 .NET Framework 類別,可讓您在自訂的 .NET Framework 組件中處理這些事件。

逐步解說:產生及部署自訂的網頁組件方案套件

  1. 以 C# 建立下列 .NET 類別:

    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace MSDN.Samples
    {
        public class MSDNTaskListEventHandler: SPFeatureReceiver
        {
            public override void 
    FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = 
    (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list exists.
                    SPList list = web.Lists["MSDN Tasks"]; 
                }
                catch 
                {
                    // -- If not, create the list.
                    web.Lists.Add("MSDN Tasks", "A custom list", SPListTemplateType.Tasks);
                }
            }
    
            public override void 
    FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list is there, and if so, delete it.
                    SPList list = web.Lists["MSDN Tasks"];
                    web.Lists.Delete(list.ID);
                }
                catch (Exception ex)
                {
                }
            }
    
            public override void 
    FeatureInstalled(SPFeatureReceiverProperties properties)
            {
            }
    
            public override void 
    FeatureUninstalling(SPFeatureReceiverProperties properties)
            {
            }
        }
    }
    

    程式碼工作會產生兩個組件。組件之一包含傳送該網頁組件的程式碼,而另一個組件,則包含先前的程式碼。本文發佈時,Visual Studio Extensions for Windows SharePoint Services 3.0 不允許將事件處理常式連接到「網頁組件功能」定義檔。此外,網頁組件必須部署在私人應用程式資料夾中,而非全域組件快取。因此必須手動建立方案套件。

    注意

    在下列步驟中,代表解決方案元件的不同檔案組織方式,可依您的偏好進行調整,並可作為 Visual Studio 2005 解決方案的一部分。

  2. 建立一個內含兩個子資料夾的資料夾,以收集所有解決方案元件。第一個子資料夾會儲存組件 (本文稱之為 Assembilies),而第二個子資料夾會儲存定義「功能」(本文稱之為 Features) 的不同 XML 檔案。將網頁組件和事件處理常式組件複製到 Assemblies 資料夾。

  3. 在 Features 資料夾下,為每個必須內含至 SharePoint 解決方案的「功能」建立一個子資料夾。此逐步解說僅涵蓋一個「功能」,假設此「功能」稱為 MSDNTaskCreator;Features 資料夾包含該名稱的子資料夾。在此資料夾的根目錄,新增一個包含下列 XML 的 Feature.xml 檔案。

    <Feature  Title="MSDNTaskCreator" 
              Id="55312295-a323-4333-b875-1bbe8ef7fd04" 
              Description="Small Web Part creating a custom task item" 
              Version="1.0.0.0" Scope="Site" Hidden="FALSE" 
              ReceiverAssembly="MSDNFeatureEventhandlers, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=5e5a470a5445a8f1" 
              ReceiverClass="MSDN.Samples.MSDNTaskListEventHandler"
              DefaultResourceFile="core" 
    xmlns="https://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="elementManifest.xml" />
        <ElementFile Location="MSDNTaskCreator.webpart" />
      </ElementManifests>
    </Feature>
    

    此 XML 不同於 Visual Studio Extensions for Windows SharePoint Services 3.0 所產生的 XML,其中加入兩個額外的屬性到 Feature.xml 檔案:

    • ReceiverAssembly 屬性包含 .NET Framework 組件 (內含事件處理常式程式碼) 的完整強式名稱。

    • ReceiverClass 屬性儲存該組件內的類別完整名稱。

  4. 請在根資料夾建立資訊清單檔。此檔案與 Visual Studio Extensions for Windows SharePoint Services 3.0 所產生的不同。以下是其內容。

    <Solution SolutionId="d63d0395-96a4-449e-83ce-5f7239bbd3ad"

    xmlns="https://schemas.microsoft.com/sharepoint/" >

      <FeatureManifests>

        <FeatureManifest Location="MSDNTaskCreator\Feature.xml" />

      </FeatureManifests>

      <Assemblies>

        <Assembly Location="MSDNTaskCreator.dll"

    DeploymentTarget="WebApplication" >

          <SafeControls>

            <SafeControl Assembly="MSDNTaskCreator, Version=1.0.0.0,

    Culture=neutral, PublicKeyToken=9f4da00116c38ec5"

    Namespace="MSDN.Samples" TypeName="MSDNTaskCreator" Safe="True" />

          </SafeControls>

        </Assembly>

            <Assembly Location="MSDNFeatureEventHandlers.dll"

    DeploymentTarget="GlobalAssemblyCache" />

      </Assemblies>

    </Solution>

    請注意,「功能」的名稱不再包含 GUID。第一個組件元素擁有名為 DeploymentTarget 的屬性,其值為 WebApplication 而不是 GlobalAssemblyCache。第二個組件元素 (具有 .NET Framework 組件的定義) 包含在全域組件快取中部署的事件處理常式程式碼。

  5. 現在我們可以建立 .ddf 檔案,其名稱在本案例中為 .wsp_structure.ddf。請直接在 DeploymentFiles 資料夾中建立。首先,請新增下列標頭資訊。

    ;

    ; *** .ddf file for generating SharePoint solution.

    ;

    .OPTION EXPLICIT ; Generate errors

    .Set CabinetNameTemplate=MSDNTaskCreatorWebPart.wsp

    .set DiskDirectoryTemplate=CDROM ; All cabinets go in a single

    directory

    .Set CompressionType=MSZIP;** All files are compressed in cabinet

    files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package

    標頭包含兩部分:

    • CabinetNameTemplate 設為 SharePoint 解決方案檔的名稱 (MSDNTaskCreatorWebPart.wsp)。

    • DiskDirectory1 設為 Package。此為包含所產生 .wsp 檔案的目錄。

    .ddf 檔案的第二部分定義套件的結構。

    ; *** the manifest file

    manifest.xml manifest.xml

    ; *** the feature files

    Features\MSDNTaskCreator\Feature.xml MSDNTaskCreator\Feature.xml

    Features\MSDNTaskCreator\elementManifest.xml MSDNTaskCreator\elementManifest.xml

    Features\MSDNTaskCreator\MSDNTaskCreator.webpart

    MSDNTaskCreator\MSDNTaskCreator.webpart

    ; *** the assemblies

    Assemblies\MSDNTaskCreator.dll MSDNTaskCreator.dll

    Assemblies\MSDNFeatureEventhandlers.dll MSDNFeatureEventhandlers.dll

    .ddf 檔案是 Makecab.exe 的輸入,這個工具可以藉由安裝 Microsoft Cabinet SDK 而取得,如本節稍早所述。您也可以在 Smart Devices SDK (預設位於 \Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SDKTools) 中找到 Makecab.exe。

  6. 為了有助於包裝和部署,請建立內容如下的批次檔。

    set MakeCabTool=c:\Program Files\Microsoft Visual Studio 8\

    SmartDevices\SDK\SDKTools\Makecab.exe

    set SPAdminTool=%CommonProgramFiles%\Microsoft Shared\

    web server extensions\12\BIN\stsadm.exe

    "%MakeCabTool%" /f wsp_structure.ddf

    "%SPAdminTool%" -o addsolution -filename package\

    MSDNTaskCreatorWebPart.wsp

    "%SPAdminTool%" -o deploysolution -name MSDNTaskCreatorWebPart.wsp

    -immediate -allowGACDeployment -url <URL name>

    前兩行是 Makecab 和 Stsadm 命令列工具的路徑設定。接下來這行是建立方案套件。

    Makecab.exe /f wsp_structure.ddf
    

    執行的結果,MSDNTaskCreatorWebPart.wsp 會出現在 Package 資料夾。執行下一行命令會將 MSDNTaskCreatorWebPart.wsp 新增到您伺服器陣列中的方案存放區:

    stsadm.exe -o addsolution -filename 
    Package\MSDNTaskCreatorWebPart.wsp
    

    批次檔的最後一行是將解決方案部署到網站集合之一。

  7. 您可以使用管理中心 [作業] 索引標籤上的 [方案管理]**** 連結來部署方案套件。或者是在命令提示中輸入下列命令:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

    stsadm -o deploysolution -name MSDNTaskCreatorWebPart.wsp -local -allowGACDeployment -url <URL 名稱>

    已安裝網頁組件功能,但未啟動。

  8. 若要啟動「功能」,請開啟 [網站集合功能] 頁面,再按一下「功能」名稱旁的 [啟動] 按鈕。因為若發生 [FeatureActivated]**** 事件時,會顯示將要執行的程式碼,因此建立 MSDN 工作清單。停用此「功能」則會從網站集合的根網站移除此工作清單。

使用 SharePoint 解決方案產生器建立方案套件

SharePoint 解決方案產生器是獨立的應用程式,可以將某些類型的 Office SharePoint Server 2007 或 Windows SharePoint Services 3.0 網站轉換成 Visual Studio 2005 網站定義專案。SharePoint 解決方案產生器不支援的內容包括:

  • 部分網站和清單範本,例如 Wiki 網站、發佈入口網站,以及共同作業入口網站

  • 查閱欄位及自訂欄位類型

  • 部分網站設定及清單設定

如需 SharePoint 解決方案產生器的詳細資訊,請參閱 Windows SharePoint Services 3.0 工具: Visual Studio 2005 Extensions (英文) (https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x404) 。

使用 SharePoint 解決方案產生器使用者介面,可以將自訂的網站編譯成 SharePoint 解決方案,以便部署到另一個 SharePoint 伺服器陣列。部分自訂可能會在解決方案匯入到伺服器陣列時會遺失,包括:

  • 查閱欄從包含該欄的所有清單中消失。

  • 對網站快速啟動的自訂項目遺失。

  • 頁面上設定的網頁組件遺失。

  • 自訂清單項目事件接收器不再附加到清單。

如需詳細資訊,請參閱<檢閱工具和處理程序>。

在佈建網站時執行自訂動作

解決方案檔提供在佈建網站時執行自訂動作的方法。產生的解決方案檔中會有一個名為 Site Provisioning Handler 的資料夾,此資料夾包含名稱為 SiteProvisioning.cs 的類別。此類別中的 OnActivated 方法讓您能新增自訂程式碼。當使用網站定義佈建新的網站時,會呼叫此方法。它接受類型為 SPFeatureReceiverProperties 之具名屬性的參數。透過下列程式碼,可使用此參數找到 SPSiteSPWeb 物件:

SPWeb web;
SPSite site;
if (properties.Feature.Parent is SPWeb)
{
    web = properties.Feature.Parent as SPWeb;
    site = web.Site;
}
Else
{
    site = properties.Feature.Parent as SPSite;
    web = site.RootWeb;
}

使用 WSPBuilder 建立方案套件

網際網路上公開提供了數種開放程式碼和社群建立的 SharePoint 產品及技術工具。雖然 Microsoft 不控制、檢閱、修訂、保證或發佈這些網站上協力廠商的專案,但是這些工具中,某些可提供有用的方法以執行一般作業。

WSPBuilder 是命令列工具,可用於建立方案套件程序的自動化。WSPBuilder 會遞迴地遍訪資料夾,並以資料夾結構內的檔案為基準以建立 SharePoint 方案套件,包括 manifest.xml 檔和 .wsp 檔。

您可以在 Codeplex (英文) (https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x404) 下載 WSPBuilder 工具。

使用 Stsadm 命令列工具匯入方案套件

使用下列程序即可將解決方案檔匯入到 Office SharePoint Server 伺服器陣列的解決方案資料庫。

重要

在任何執行 Stsadm 命令列工具的電腦上,您必須是該電腦管理員群組的成員。

使用 Stsadm 命令列工具匯入方案套件

  1. 在您要匯入解決方案的伺服器陣列的伺服器上,在安裝 SharePoint 產品及技術的磁碟機上,輸入下列命令於命令提示,以變更到儲存 Stsadm 命令列工具的目錄:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 輸入下列命令:

    stsadm -addsolution -filename <解決方案名稱>

解決方案會加入伺服器陣列的解決方案資料庫。若要使用解決方案,請遵循本文章下一節中的程序。如需詳細資訊,請參閱<Addsolution:Stsadm 作業 (Office SharePoint Server)>。

使用 Stsadm 命令列工具部署方案套件

您可以透過命令提示,使用 deploysolution 作業來部署解決方案。

將方案套件部署到單一網站集合

  1. 在您要部署已匯入方案套件的伺服器陣列的伺服器上,在安裝 SharePoint 產品及技術的磁碟機上,輸入下列命令以變更到儲存 Stsadm 命令列工具的目錄:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 輸入下列命令:

    **stsadm –o deploysolution –name <**解決方案名稱 > –url <URL 名稱>

    其中 檔案名稱 是解決方案的名稱,而 URL 名稱 是您要部署已匯入之解決方案的目標 Web 應用程式 URL。

使用 allcontenturls 參數,讓您可以選擇性地使用下列程序來將解決方案部署到伺服器陣列內每個網站集合,而不是只針對一個網站集合。

將方案套件部署到所有網站集合

  1. 在您要部署已匯入方案套件的伺服器陣列的伺服器上,在安裝 SharePoint 產品及技術的磁碟機上,輸入下列命令以變更到儲存 Stsadm 命令列工具的目錄:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 輸入下列命令:

    stsadm –o deploysolution –name <解決方案名稱> –allcontenturls [-time] <部署時間> [-allowgacdeployment] [-allowcaspolicies]

    其中 解決方案名稱 是解決方案的名稱。

根據預設,會立即部署解決方案,但您也可以使用 time 參數來排定部署。

allowgacdeploymentallowcaspolicies 參數很重要。allowgacdeployment 參數讓 Office SharePoint Server 2007 能在全域組件快取中部署組件。allowcaspolicies 參數可以建立自訂程式碼存取安全性 (CAS) 原則檔,以及在目標網站集合的 Web.config 檔中啟動它。

如需詳細資訊,請參閱<Deploysolution:Stsadm 作業 (Office SharePoint Server)>。

使用功能部署已開發網站元素

本節內容:

  • 何謂功能?

  • 功能的使用時機

  • 建立功能套件

  • 手動部署功能

  • 使用 Stsadm 安裝和啟動功能

如需「功能」的詳細資訊,請參閱使用功能 (英文) (https://go.microsoft.com/fwlink/?linkid=105337&clcid=0x404)。

何謂功能?

「功能」**是 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 各種已定義擴充功能的容器,是由部署到網頁伺服器的 XML 檔案集所組成。您可以部署「功能」為網站定義或方案套件的一部分,且可以個別地在 Office SharePoint Server 網站中啟動「功能」。

「功能」減少在進行簡單網站自訂時所涉及的複雜性,並且在套用升級套件到部署時功能也很強大。「功能」可以排除為變更簡單功能而複製大量程式碼區塊的需求,因此減少了前端網頁伺服器之間會產生的版本設定與不一致性的問題。

「功能」讓部署的過程中,更容易的啟動或停用功能,管理員只要在使用者介面中開啟或關閉某特定的功能,便可以輕易地轉換網站的範本或定義。

「功能」提供下列各項功能:

  • 範圍語意,讓您能指定自訂程式碼執行的範圍。

  • 能夠指定功能是否將在部署時安裝在目的地伺服器陣列上。

  • 能夠啟動或停用指定範圍的功能,而不必安裝或解除安裝程式碼。

  • 能夠將「功能」在其範圍內需要的資料儲存在具有範圍的屬性資料夾。

  • 分散部署 Windows SharePoint Services 3.0 及 Office SharePoint Server 2007 解決方案的統一架構基礎。

包含在 Microsoft Office SharePoint Portal Server 2003 大型網站定義檔中的項目,在 Windows SharePoint Services 3.0「功能」內是分開的元素。元素是「功能」內的最小單位。Feature 元素用於 Feature.xml 檔中,定義「功能」以及指定支援功能之組件、檔案、相依性或屬性的位置。「功能」包含 Feature.xml 檔和任意數量描述個別元素的檔案。來自不同結構描述的另一個「功能」元素用於 Onet.xml 檔,以指定在網站定義內啟動功能。

Feature.xml 檔通常指向一或多個以上的 XML 檔,其最上層 <Elements> 標籤包含了支援該「功能」的元素定義。Windows SharePoint Services 3.0 中的元素經常對應到舊版 Onet.xml 或 Schema.xml 檔中的離散節點。元素有數種類型-例如,自訂功能表項目或事件處理常式。

例如,「功能」可能提供「我的最愛項目」功能,其中包含下列元素:

  • 自訂清單,儲存每個使用者我的最愛項目之清單,此清單在啟用「功能」時,建立為每個工作區的單一隱藏清單。

  • 附加到所有清單的自訂功能表項目,稱為「新增至我的最愛」,會將項目新增到「我的最愛」清單。

  • 網頁組件,實作使用情況和追蹤連結,以顯示上層使用者的前 10 項我的最愛。

功能的每個元素本身可能不是非常有用,但是當您在網站上啟用功能時,所有的這些元素都會結合成為完整的解決方案。

如需詳細資訊,請參閱 Windows SharePoint Services 3.0 SDK 中的下列資源:

功能的使用時機

如果符合下列其中一或多個因素,則可以使用功能部署已開發網站元素:

  • 需要啟動和停用   當您在「功能」中部署網站元素自訂時,可以使用 Stsadm 命令列工具的作業,使用物件模型來安裝、啟動和停用「功能」。您也可以透過使用者介面啟動和停用「功能」。

  • 範圍彈性   您可以啟動單一範圍的「功能」,包括伺服器陣列、Web 應用程式、網站集合和網站。

  • 容易進行分散式部署   可輕易部署「功能」到多個伺服器陣列。

  • 透過「功能」物件模型深入控制   「功能」物件模型可讓您在特定的範圍內,指定已安裝功能的清單,並控制是否要在伺服器陣列和網站層級啟用功能。

如<自訂案例>一文中的部署圖表所示,可以使用「功能」進行已發開網站元素自訂和開發人員工作站與整合陣列,以及整合陣列和製作用戶端工作站與試驗或實際執行陣列之間的部署。

建立功能套件

當您在 Office SharePoint Server 2007 中建立自訂網頁時,ASPX 頁面可以只屬於執行 Office SharePoint Server 2007 之伺服器的根網站集合。若要在不位於根的網站集合下建立頁面,必須將自訂網頁組件部署為 SharePoint 功能。SharePoint 功能需要兩個簡單的 XML 檔,且是使用 Stsadm 命令列工具部署-您可以用批次檔將此程序自動化。

注意

若要執行 Stsadm 命令列工具,則必須變更到儲存 Stsadm 的目錄。要這麼做,請在安裝 SharePoint 產品及技術的磁碟機上,執行下列命令:cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

建立自訂功能

  1. 建立 Feature.xml 檔案。以下是範例 Feature.xml 檔,提供功能唯一識別碼和指向 Module.xml 檔時需要用到此檔案。

    <?xml version="1.0"?>
    <Feature Id="8C4DD0CB-5A94-44da-9B7F-E9ED49C2B2DC" Title=
    "Custom Web page"
    Description="This simple example feature adds an ASPX page 
    with a hosted XmlFormView control" 
    Version="1.0.0.0" Scope="Web"
    xmlns="https://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="Module.xml"/>
    </ElementManifests>
    </Feature>
    
  2. 建立 Module.xml 檔。以下是範例 Module.xml 檔,此檔案包含屬於解決方案一部分之頁面的相關資訊。

    <?xml version="1.0"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
        <module name="file" url="" path="">
            <file url="XmlFormViewPage.aspx" type="ghostable"> </file>
        </module>
    </Elements>
    
  3. 將檔案 url 值變更為 ASPX 頁面的名稱,然後如<使用 Stsadm 命令列工具安裝和啟動功能>中所描述,執行命令列作業。您可以建立批次檔,循序地執行這些命令列作業。

  4. 執行下列動作:

    1. 在伺服器電腦的 Features 資料夾下建立資料夾,Features 資料夾通常位於 %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES。

    2. 將您的自訂 ASPX 頁面新增到此資料夾。

    3. 根據前一節顯示的範例,建立 Feature.xml 和 Module.xml 檔,並將它們新增到同一位置。

若要在部署「功能」後將其安裝和啟動,請參閱本文稍後的<使用 Stsadm 命令列工具安裝和啟動功能>。

手動部署功能

要實作「功能」,請在「功能」設定目錄內 (在本例中為 Local_Drive:\%COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES),新增包含「功能」定義的子資料夾。「功能」子資料夾包含 Feature.xml 檔,其中定義「功能」的基本屬性,並列出繫結到「功能」的元素,例如包含元素資訊清單的 XML 檔,以及任何其他的支援檔案。「功能」資料夾只能包含 Feature.xml 檔,或是可以包含 Feature.xml 檔以及任何數目的支援元素檔,包括 XML 檔,以及 .aspx, .htm, .xsn, .resx, .dll 和其他檔案類型。

注意

當透過 Windows 檔案總管,以滑鼠右鍵按一下資料夾、指向 [新增],然後按一下 [資料夾] 在 Features 目錄內建立資料夾時,新的資料夾並不具備繼承的權限。如果在資料夾中部署功能,將無法存取部分 Windows SharePoint Services 3.0 頁面 (例如網站設定或清單檢視的頁面)。您可以使用 md 命令在命令提示建立新資料夾,即可修正此問題。

建立功能資料夾之後,可以使用 Stsadm 命令列作業或使用物件模型,安裝和啟動功能。也可以在 [網站集合功能] 頁面,或是想要啟動功能之網站集合或網站的 [網站功能] 頁面上,啟動功能。安裝「功能」可使整個伺服器陣列得知「功能」的定義和元素,而啟動「功能」則可讓特定範圍使用該「功能」。

使用 Stsadm 命令列工具安裝和啟動功能

將功能安裝在 12\Template\Features 目錄裡,每個功能位於自己的子目錄中。在此資料夾的根目錄,Feature.xml 檔定義了功能的內容。

注意

若要執行 Stsadm 命令列工具,則必須變更到儲存該工具的目錄。若要執行這項操作,請輸入下列命令:cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

必須先安裝個別的「功能」,才能使用。若要執行這項操作,請在命令提示中執行下列命令:

stsadm -o installfeature-filename <相對路徑> -name <功能資料夾> [-force]

如需詳細資訊,請參閱<Installfeature:Stsadm 作業 (Office SharePoint Server)>。

除了安裝之外,還必須先啟動「功能」,才能加以使用 (除非功能的範圍設定為伺服器陣列,這表示已經自動啟動「功能」)。

若要啟動功能,請執行下列命令:

stsadm -o activatefeature -filename <相對路徑> -name <功能資料夾> -id <功能識別碼> [-url] <URL 名稱> [-force]

如需詳細資訊,請參閱<Activatefeature:Stsadm 作業 (Office SharePoint Server)>。

若要解除安裝功能,使其定義不再能在伺服器陣列內使用,您可以使用 uninstall 作業。如需詳細資訊,請參閱<Uninstallfeature:Stsadm 作業 (Office SharePoint Server)>。

注意

必須先停用功能才能加以解除安裝-除非它們的範圍設定為 Web 應用程式或伺服器陣列。

解除安裝功能之後,請重設網際網路資訊服務 (IIS),變更才會生效。

若要停用「功能」,使其在原始指派的範圍中變成非使用中的狀態而不解除安裝,則可以使用 deactivate 作業。如需詳細資訊,請參閱<Deactivatefeature:Stsadm 作業 (Office SharePoint Server)>。

下載本書

本主題隨附於下列可下載的叢書中,以便於閱讀與列印:

請參閱 Office SharePoint Server 2007 可下載的叢書 (英文) 上提供的完整叢書清單。

另請參閱

概念

部署自訂
部署已授權的網站元素自訂
方案套件元件