使用 Dynamics CRM Package Deployer 和 Windows PowerShell 部署套件

 

發行︰ 2017年2月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

注意

這裡提供的資訊適用於在 Dynamics 365 (線上) 9.0 版之前的 Dynamics 365 版本。 如需最新文件,請參閱使用 Dynamics CRM Package Deployer 和 Windows PowerShell 部署套件

Microsoft Dynamics CRM Package Deployer 可讓系統管理員在 Dynamics 365 (內部部署) 或 Microsoft Dynamics 365 (線上) 執行個體上部署套件。 「套件」可以包含下列任何或所有項目:

  • 一個或多個 Dynamics 365 解決方案檔案。

  • 一般檔案或從設定移轉工具匯出的資料檔案。 如需有關設定移轉工具的詳細資訊,請參閱管理組態資料

  • 可以在套件部署到 Microsoft Dynamics 365 期間或之後執行的自訂程式碼。

  • 可以在套件部署程序開頭和結尾顯示、套件特定的 HTML 內容。 這可提供套件中部署的解決方案和檔案的描述。

開發人員使用 Microsoft Visual Studio 中的套件部署範本來建立套件。其他資訊:MSDN:建立 CRM Package Deployer 的套件

建立套件之後,您可以藉由執行CRM 套件部署器或使用工具的 Windows PowerShell cmdlet 將它部署。

重要

您匯入並執行生產組織中的套件之前,請先在生產組織的非生產鏡射映像上測試套件。

部署套件之前,務必先備份生產組織。

本主題內容

使用 套件部署器工具 部署套件

使用 Windows PowerShell 來部署套件

使用記錄檔,疑難排解套件部署問題

部署套件的最佳作法

使用 套件部署器工具 部署套件

您可以使用 套件部署器工具 (packagedeployer.exe) 透過下列方式部署套件。

使用 套件部署器工具 部署套件

在命令列使用 套件部署器工具

使用 套件部署器工具 部署套件

套件部署器工具一次只可以處理一個套件。 不過,它讓使用者能夠從套件部署器工具目錄中的多個套件選取要部署的套件。 根據套件定義,工具中部分的畫面和動作有所不同。 您不需要安裝套件部署器工具。 只要下載並執行它。

  1. 取得要部署的套件。 套件是當您在 Visual Studio 中建立套件專案時,在 Visual studio 專案資料夾 (<Project>\Bin\Debug) 中建立的檔案和資料夾集合。 複製專案偵錯資料夾中的下列項目:

    • <PackageName> 資料夾:此資料夾包含解決方案、匯入設定及套件內容。

    • <PackageName>.dll:此組件包含套件的程式碼。 根據預設,這個組件的名稱與您的 Visual Studio 專案名稱相同。

    如需有關使用 Visual Studio 建立套件的詳細資訊,請參閱MSDN:建立 CRM Package Deployer 的套件

    對於本主題,我們假設 Visual Studio 專案偵錯資料夾 (<Project>\Bin\Debug) 中的套件資料夾及組件已複製到 c:\DeployPackage 資料夾。

  2. 下載 Microsoft Dynamics CRM SDK。 然後執行下載的可執行檔,解壓縮套件的內容。

  3. 瀏覽至 SDK\Tools\PackageDeployer 資料夾,並將套件資料夾及組件從 c:\DeployPackage 複製到 SDK\Tools\PackageDeployer 資料夾。

  4. 複製檔案之後,藉由按兩下 SDK\Tools\PackageDeployer 資料夾中的 PackageDeployer.exe 檔案,執行此工具。

  5. 在工具的主畫面,按一下 [繼續]。

  6. 在 [連線至 Microsoft Dynamics 365] 畫面中,提供驗證詳細資料,連線到您想要用來部署套件的 Dynamics 365 伺服器。 如果您有多個組織,而且想要選取您要部署套件的組織,請選取 [一律顯示可用組織清單] 核取方塊。 按一下 [登入]。

  7. 如果您的 Dynamics 365 伺服器有多個組織時,選取您想要連線到的 Dynamics 365 組織。

  8. 選取要部署的套件,然後按一下 [下一步]。

    Select your package in the Package Deployer Tool

  9. 依照接下來的畫面指示來完成部署您的套件。

    出現的畫面會根據您選取要部署的套件定義。 如需使用 套件部署器工具 端對端套件部署的資訊,請參閱 Unified Service Desk 套件部署主題:使用 Package Deployer,將範例 Unified Service Desk 應用程式部署至 CRM 伺服器

在命令列使用 套件部署器工具

系統管理員和自訂員可以從命令列傳遞參數 (例如地區語言碼) 至 packagedeployer.exe。 這些參數只能透過在命令列執行 套件部署器工具 的方式設定。

注意

此功能最初是在 Microsoft Dynamics CRM Online 2016 更新 0.1 中推出。

此表提供可用參數。

參數

描述

預設值

RuntimePackageSettings

指示 packagedeployer.exe 接受命令列參數,例如 LCID 和 SkipChecks。

不適用

LCID=localeID

從套件中可用的地區設定識別碼指定地區設定識別碼,例如 1033 代表英文 (美國),或 1036 代表法文 (法國)。 若未指定,將使用預設語言。

使用預設語言

SkipChecks=true/false

只應在目標環境未包含任何其他解決方案或自訂時使用此參數。 當設定為 true,解決方案匯入將會略過某些安全性檢查,藉此改善匯入的效能。

FALSE

下列範例會指示 CRM 套件部署器 略過某些安全性檢查,並將匯入的語言設定為波蘭文。

packagedeployer.exe /Settings:"SkipChecks=true|lcid=1045"

注意

當您在命令列執行 packagedeployer.exe 搭配多個參數時,使用管道字元 | 分隔參數。

如需可傳遞至 packagedeployer.exe 的參數及值的詳細資訊,請參閱 MSDN:建立 CRM Package Deployer 的套件

使用 Windows PowerShell 來部署套件

套件部署器工具也提供 Windows PowerShell 支援,以部署套件。

執行下列步驟,以使用 PowerShell cmdlet 部署套件:

先決條件

註冊 Cmdlet

使用 cmdlet 擷取套件

使用 cmdlet 連線到您的 Dynamics 365 執行個體

使用 cmdlet 部署套件

取得 cmdlet 的詳細說明

先決條件

以下是使用 PowerShell Cmdlet 的先決條件:

  • 需要 PowerShell 3.0 或更新版本,才能使用 PowerShell 部署套件。 若要檢查 PowerShell 版本,請執行 PowerShell 視窗,然後執行下列命令:$Host

  • 設定執行原則執行簽署的 PowerShell 指令碼。 若要這麼做,請以系統管理員身分執行 PowerShell 視窗,然後執行下列命令:Set-ExecutionPolicy -ExecutionPolicy AllSigned

註冊 Cmdlet

您必須先註冊套件部署器工具的 Windows PowerShell Cmdlet,才能使用。 若要註冊 Cmdlet:

  1. 如果您尚未這樣做,請從 Microsoft 下載中心下載 Dynamics 365 SDK 套件,然後執行套件檔案,以解壓縮套件的內容。 假設您解壓縮套件到電腦上的 c:\CRM 資料夾。套件部署器工具和其他必要的檔案會出現在下列位置:c:\CRM\SDK\Tools\PackageDeployer。

  2. 在電腦,以提高的權限 (以系統管理員身分執行) 啟動 Windows PowerShell。

  3. 在 Windows PowerShell 視窗中的提示字元中,變更目錄至 PackageDeployer 資料夾下的 Windows PowerShell 資料夾。 在此案例中:

    cd c:\CRM\SDK\Tools\PackageDeployer\PowerShell
    
  4. 執行 RegisterXRMTooling.ps1 指令碼,以註冊 Package Deployer Windows PowerShell 組件 (dll),並安裝 套件部署器工具 的 Windows PowerShell 嵌入式管理單元。 若要這麼做,請輸入下列命令,並按下 ENTER:

    .\RegisterXRMTooling.ps1
    
  5. 新增 XRM 工具的 Windows PowerShell 嵌入式管理單元: 這將會註冊下列的 cmdlet:Get-CrmConnection 和 Get-CrmOrganizations。

    Add-PSSnapin Microsoft.Xrm.Tooling.Connector
    
  6. 新增 Package Deployer 的 Windows PowerShell 嵌入式管理單元: 這將會註冊下列的 cmdlet:Get-CrmPackages 和 Import-CrmPackage。

    Add-PSSnapin Microsoft.Xrm.Tooling.PackageDeployment
    

現在您已經可以使用這些 Windows PowerShell cmdlet。 若要列出已註冊的 cmdlet,請在 Windows PowerShell 視窗提示字元中執行下列命令:

Get-Help “Crm”

使用 cmdlet 擷取套件

使用此 cmdlet 之前,請確定您已將套件複製到 PackageDeployer 資料夾 (此處案例為 c:\CRM\SDK\Tools\PackageDeployer)。 套件是當您建立 Visual Studio 中的專案時,在 Visual Studio 專案資料夾 (<Project>\Bin\Debug) 中建立的檔案和資料夾集合。 將專案偵錯資料夾的整個內容複製到 PackageDeployer 資料夾。 如需有關使用 Visual Studio 建立套件的詳細資訊,請參閱MSDN:建立 CRM Package Deployer 的套件

  1. 在 PowerShell 視窗中,使用下列 cmdlet 來傳回指定的資料夾 (此處案例為 c:\CRM\SDK\Tools\PackageDeployer) 中可供匯入的套件清單:

    Get-CrmPackages –PackageDirectory c:\CRM\SDK\Tools\PackageDeployer
    
  2. 如果您需要資料夾中套件的相關資訊,您可以使用 Get-CrmPackages cmdlet,以及 –PackageName 參數 (用來指定包含套件定義的資料夾中的組件名稱)。

    Get-CrmPackages –PackageDirectory c:\CRM\SDK\Tools\PackageDeployer –PackageName SampleCRMPackage.dll
    
  3. 套件組件可以使用 Get-CrmPackages cmdlet 儲存在變數中。 然後可在 Import-CrmPackage cmdlet 中重複使用,以指定 PackageDirectory 參數的值。 例如,您可以將 Get-CrmPackages cmdlet 傳回的一個或多個套件的資訊儲存在 $MyPackages 變數。

    $MyPackages = Get-CrmPackages –PackageDirectory c:\CRM\SDK\Tools\PackageDeployer 
    

    顯示所有套件。

    $MyPackages
    

    只顯示第三個套件。

    $MyPackages[2].PackageAssemblyLocation
    

    然後您可以參照陣列中從 0 到 n 的每個套件。 例如,此 cmdlet 會匯入在 $MyPackages 中找到的第一個套件。

    Import-CrmPackage -CrmConnection $CRMConn -PackageDirectory $MyPackages[0].PackageAssemblyLocation
    

    注意

    PackageAssemblyLocation 參數和顯示資料夾位置和套件名稱的功能,先以 Dynamics 365 (Online 和內部部署) 的 2016 年 12 月更新 引入。其他資訊:Dynamics 365 SDK

使用 cmdlet 連線到您的 Dynamics 365 執行個體

  1. 提供認證,連線到您的 Microsoft Dynamics 365 (線上) 或 Dynamics 365 (內部部署) 執行個體。 執行下列命令,將會提示您輸入使用者名稱和密碼以連線到 Dynamics 365 執行個體,而我們會將它儲存在 $Cred 變數,並供日後連線到您的 Dynamics 365 Server 使用。

    $Cred = Get-Credential
    
  2. 使用下列命令,連線到您的 Microsoft Dynamics 365 (線上) 或 Dynamics 365 (內部部署) 執行個體。 我們將連接資訊儲存在 $CRMConn 變數:

    • 如果您連線到 Dynamics 365 (內部部署) 執行個體:

      $CRMConn = Get-CrmConnection -ServerUrl http://<your_CRM_Server> -OrganizationName <your_Org_Name> -Credential $Cred
      
    • 如果您連線到 Microsoft Dynamics 365 (線上) 伺服器:

      $CRMConn = Get-CrmConnection -DeploymentRegion NorthAmerica –OnlineType Office365 –OrganizationName <your_Org_Name> -Credential $Cred
      

      注意

      DeploymentRegion 參數的有效值包括:NorthAmericaEMEA、APAC、SouthAmericaOceaniaJPNNorthAmerica2。OnlineType 參數的有效值包括:Office365LiveID

  3. 當您在步驟 2 中執行命令時,會驗證您提供的認證。

使用 cmdlet 部署套件

接下來,使用儲存在 $CRMConn 變數的 Dynamics 365 連接資訊,將套件部署到 Dynamics 365 執行個體。 下列命令會部署套件、解譯 c:\UnpackedFiles 資料夾中的套件,以及將資料記錄至 c:\MyLogFiles 資料夾中的記錄檔。

Import-CrmPackage –CrmConnection $CRMConn –PackageDirectory c:\CRM\SDK\Tools\PackageDeployer –PackageName SampleCRMPackage.dll –UnpackFilesDirectory c:\UnpackedFiles -LogWriteDirectory C:\MyLogFiles -Verbose

注意

  • CrmConnection、PackageDirectory 和 PackageName 參數都是強制性。

  • 您可以搭配 PackageDirectory 參數使用變數,而不要手動指定套件資料夾。其他資訊:使用 cmdlet 擷取套件

  • 對於 PackageName 參數,您必須指定包含套件定義的組件名稱。

  • 如果您的套件不會在套件部署期間解壓縮檔案,您不需要指定 UnpackFilesDirectory 參數。 在 Visual Studio 中定義套件時,於 ImportConfig.xml 檔案中使用 agentdesktopzipfile 參數,指定是否要解壓縮檔案。其他資訊:MSDN:建立 CRM Package Deployer 的套件

  • Verbose 參數是選擇性的,用來顯示套件部署程序期間執行的活動的詳細記錄檔。

  • 選擇性的 RuntimePackageSettings 參數可以搭配下列參數使用:

    • LCID=localeID 參數會從套件中可用的地區設定識別碼指定地區設定識別碼,例如 1033 代表英文 (美國),或 1036 代表法文 (法國)。 若未指定,將使用預設語言。

    • SkipChecks=true/false 參數只應在目標環境未包含任何其他解決方案或自訂時使用。 當設定為 true,解決方案匯入將會略過某些安全性檢查,藉此改善匯入效能。

  • 您在使用 LogWriteDirectory 參數時指定的資料夾必須存在,且正在執行 Import-CrmPackage cmdlet 的使用者必須具有此資料夾的寫入權限。 此外,使用 LogWriteDirectory 參數時,需要 -Verbose 參數。

    LogWriteDirectory 參數先以 Dynamics 365 (Online 和內部部署) 的 2016 年 12 月更新 引入。其他資訊:Dynamics 365 SDK

下列範例命令會匯入名為 SampleCRMPackage 的套件,並指定英文 (美國) (1033) 做為匯入套件的語言。

Import-CrmPackage –CrmConnection $CRMConn –PackageDirectory c:\CRM\SDK\Tools\PackageDeployer –PackageName SampleCRMPackage.dll –UnpackFilesDirectory c:\UnpackedFiles –RuntimePackageSettings LCID=1033

取得 cmdlet 的詳細說明

在 PowerShell 視窗中,使用 Get-Help cmdlet 與 cmdlet 名稱,檢視此 cmdlet 的詳細說明。 例如,若要取得 Import-CrmPackage cmdlet 的詳細說明:

Get-Help Import-CrmPackage -full

若要檢視 Cmdlet 的線上說明,請參閱 CRM PowerShell 參照

使用記錄檔,疑難排解套件部署問題

套件部署器工具 提供記錄支援,可取得某人使用工具及部署套件登入 Microsoft Dynamics 365 執行個體時,可能發生的錯誤的詳細資訊。 根據預設,在執行工具的電腦上,工具於下列位置產生三個記錄檔:c:\Users\<UserName>\AppData\Roaming\Microsoft\Microsoft Dynamics CRM Package Deployer\<Version>。 若要指定不同的資料夾,請使用 -LogWriteDirectory PowerShell cmdlet 參數。其他資訊:使用 cmdlet 擷取套件

  • Login_ErrorLog.log:提供有關使用工具登入 Dynamics 365 執行個體時發生之問題的詳細資訊。 如果登入期間有任何問題,則工具的登入畫面上會出現訊息,內含此記錄檔的連結。 訊息指出處理登入要求時發生錯誤,而且使用者可以檢視錯誤記錄檔。 您可以按一下訊息中的連結,以檢視此記錄檔。 第一次遇到工具的任何登入問題時,會建立記錄檔。 此後,記錄檔會用來記錄任何時候發生之登入問題的相關資訊。

  • PackageDeployer.log:提供有關在套件部署期間工具中執行的每個工作的詳細資訊。 您可以按一下畫面底部的 [檢視記錄檔] 連結,來檢視工具的記錄檔。

  • ComplexImportDetail.log:提供有關使用工具最後一次部署中匯入資料的詳細資訊。 每次使用這個工具部署套件時,記錄檔現有的詳細資料會被移到相同目錄中的檔案 ComplexImportDetail._old.log,而 ComplexImportDetail.log 檔案會顯示使用工具最新匯入的相關資訊。

部署套件的最佳作法

部署套件時,Dynamics 365 系統管理員必須:

  • 堅持簽署的套件組件,以便追蹤到組件的來源。

  • 先在生產前執行個體 (最好是生產執行個體的鏡像映像) 測試套件,然後在生產伺服器上執行套件。

  • 先備份生產執行個體,再部署套件。

另請參閱

MSDN:建立 CRM Package Deployer 的套件
管理 Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權