使用 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 (online) 实例上部署数据包。 一个“数据包”可以包括以下内容:

  • 一个或多个 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:为 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 将统一服务台应用程序部署到 CRM 服务器

通过命令行使用 包部署程序工具

系统管理员和定制员可以通过命令行将区域语言代码之类参数传递到 packagedeployer.exe。 这些参数只能通过在命令行中运行 包部署程序工具 来配置。

备注

此功能最早在 Microsoft Dynamics CRM Online 2016 更新 0.1 中引入。

可用参数见下表。

参数

说明

默认值

RuntimePackageSettings

指示 packagedeployer.exe 接受命令行参数(如 LCID 和 SkipChecks)。

不适用

LCID=localeID

从程序包中的可用区域设置 ID 指定区域设置 ID,如 1033 表示美国英语,1036 表示法国法语。 如果不指定,将使用默认语言。

使用默认语言

SkipChecks=true/false

仅当目标环境中不包含任何其他解决方案或自定义项时,才使用此参数。 如果设置为 true,导入解决方案时将绕过某些安全检查,这样可以改善导入的性能。

以下示例指示 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 tooling 添加 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 参数指定值。 例如,您可以在名为的 $MyPackages 的变量中存储从 Get-CrmPackages cmdlet 返回的一个或多个包的信息。

    $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 的 2016 年 12 月更新(联机和本地) 中第一次推出。详细信息:Dynamics 365 SDK

使用 cmdlet 连接到您的 Dynamics 365 实例

  1. 提供您的凭据以连接到您的 Microsoft Dynamics 365 (online) 或 Dynamics 365(本地) 实例。 运行以下命令将会提示您键入您的用户名和密码,以连接到 Dynamics 365 实例中,而我们将其存储在 $Cred 变量中,并在之后用其连接到您的 Dynamics 365 服务器。

    $Cred = Get-Credential
    
  2. 使用以下命令以连接到您的 Microsoft Dynamics 365 (online) 或 Dynamics 365(本地) 实例。 我们将把连接信息存储在 $CRMConn 变量中:

    • 如果要连接到 Dynamics 365(本地) 实例:

      $CRMConn = Get-CrmConnection -ServerUrl http://<your_CRM_Server> -OrganizationName <your_Org_Name> -Credential $Cred
      
    • 如果要连接到 Microsoft Dynamics 365 (online) 服务器:

      $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 参数从程序包中的可用区域设置 ID 指定区域设置 ID,如 1033 表示美国英语,1036 表示法国法语。 如果不指定,将使用默认语言。

    • “”

      仅当目标环境中不包含任何其他解决方案或自定义项时,才应使用 SkipChecks=true/false 参数。 如果设置为 true,导入解决方案时将绕过某些安全检查,这样可以改善导入性能。

  • 在使用 LogWriteDirectory 参数时指定的文件夹必须已存在,且运行 Import-CrmPackage cmdlet 的用户必须具有该文件夹的写入权限。 另外,在使用 LogWriteDirectory 参数时需要 -Verbose 参数。

    LogWriteDirectory 参数在 适用于 Dynamics 365 的 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 窗口中,使用带 cmdlet 名称的 Get-Help cmdlet 以显示 cmdlet 的详细帮助。 例如,获取 Import-CrmPackage cmdlet 的详细帮助:

Get-Help Import-CrmPackage -full

若要查看 cmdlet 的联机帮助,请参阅 CRM PowerShell 引用

使用日志文件解决程序包部署问题

包部署程序工具 提供记录支持,用来获取有关使用工具和部署程序包登录 Microsoft Dynamics 365 实例时所发生错误的详细信息。 默认情况下,此工具可生成三个日志文件,在您运行此工具的计算机上的以下路径中可用:c:\Users\<用户名>\AppData\Roaming\Microsoft\Microsoft Dynamics CRM Package Deployer\<版本>。 若要指定其他文件夹,请使用 -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。 保留所有权利。 版权