Dynamics 365 Package Deployer에 대한 패키지 만들기
게시 날짜: 2017년 1월
적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Microsoft Dynamics CRM Package Deployer를 사용하여 관리자는 Microsoft Dynamics 365(온라인) 및 Dynamics 365(온-프레미스) 인스턴스에 패키지를 배치할 수 있습니다. "패키지"는 다음 중 일부 또는 전부로 구성될 수 있습니다.
하나 이상의 Dynamics 365 솔루션 파일.
플랫 파일 또는 구성 마이그레이션 도구에서 내보낸 구성 데이터 파일. 도구에 대한 자세한 내용은 TechNet: 구성 데이터 관리를 참조하십시오.
Dynamics 365 인스턴스에 패키지를 배치하기 전에, 동안 또는 후에 실행될 수 있는 맞춤 코드.
배포 프로세스의 시작 및 끝에 표시할 수 있는 패키지에 고유한 HTML 콘텐츠입니다. 패키지에 배포되는 솔루션 및 파일의 설명을 제공하는 데 유용합니다.
Microsoft Dynamics 365은 패키지 배포자 도구과 함께 사용할 수 있는 이러한 패키지를 생성하여 Dynamics 365 인스턴스에 배치하기 위한 Visual Studio 템플릿을 제공합니다.
참고
CRM 온라인 2016 업데이트 1 및 CRM 2016 Service Pack 1(온-프레미스) 배포를 통해, Dynamics 365 패키지 생성용 Visual Studio 템플릿이 런타임 매개 변수 지원, 단일 패키지로 다국어 구성 파일 가져오기, 솔루션 업데이트 중에 사용자 지정을 재조정할지, 유지할지 여부 제어 등의 새로운 기능에 대한 지언을 추가하도록 개선되었습니다. 기존 패키지 프로젝트는 NuGet을 사용하는 CRM 패키지 배포자 어셈블리를 버전 8.1 이상으로 업데이트하여 새 기능을 이용하도록 업데이트할 수 있습니다.
이 항목의 내용
필수 조건
패키지 만들기
패키지 배포
패키지를 만들고 배포하기 위한 최상의 방법
필수 조건
패키지에 포함하려는 모든 솔루션과 파일이 준비되었는지 확인합니다.
Microsoft .NET Framework 4.5.2
Microsoft Visual Studio 2012, Visual Studio 2013 또는 Visual Studio 2015
Visual Studio 2012, Visual Studio 2013 또는 Visual Studio 2015용 NuGet 패키지 관리자
패키지 템플릿을 포함하는 Visual Studio용 Microsoft Dynamics 365 SDK 탬플릿. 다음 방법 중 하나로 얻을 수 있습니다.
CRM SDK 템플릿을 다운로드하고CRMSDKTemplates.vsix 파일을 두 번 클릭하여 Visual Studio에 템플릿을 설치합니다.
CRM SDK 패키지를 다운로드하고 추출합니다. 템플릿 파일 CRMSDKTemplates.vsix은 SDK\Templates 폴더에 있습니다.CRMSDKTemplates.vsix 파일을 두 번 클릭하여 Visual Studio에 템플릿을 설치합니다.
패키지 만들기
패키지를 만들려면 다음과 같은 다섯 단계를 수행합니다.
1단계: 템플릿을 사용하여 프로젝트 만들기
2단계: 프로젝트에 파일 추가
3단계: HTML 파일 업데이트: 영어 및 기타 언어
4단계: 패키지의 구성 값 지정
5단계: 패키지에 대한 사용자 지정 코드 정의
1단계: 템플릿을 사용하여 프로젝트 만들기
Microsoft Visual Studio를 시작하고 새 프로젝트를 만듭니다.
새 프로젝트 대화 상자에서:
설치된 템플릿 목록에서 Visual C#을 확장하고 Dynamics 365 SDK 템플릿을 선택합니다.
.NET Framework 4.5.2이 선택되었는지 확인합니다.
Dynamics 365 패키지를 선택합니다.
프로젝트의 이름과 위치를 지정하고 확인을 클릭합니다.
2단계: 프로젝트에 파일 추가
솔루션 탐색기 창에서 PkgFolder 폴더 아래에 솔루션과 파일을 추가합니다.
PkgFolder 폴더 아래 추가하는 각 파일에 대해 속성 창에서 출력 디렉터리로 복사 값을 항상 복사로 설정합니다. 이렇게 하면 생성된 패키지에서 파일을 사용할 수 있습니다.
3단계: HTML 파일 업데이트: 영어 및 기타 언어
솔루션 탐색기 창에서 PkgFolder > Content > en-us를 확장합니다.EndHTML 및 WelcomeHTML이라는 두 폴더가 있습니다. 이러한 폴더는 패키지 배포 프로세스의 끝과 시작에서 정보를 표시할 수 있는 HTML 및 관련 파일을 포함하고 있습니다. 이러한 폴더의 HTML 폴더에 있는 파일을 편집하여 패키지 정보를 추가합니다.
또한 HTML에 있는 콘텐츠가 사용자 컴퓨터의 로캘 설정을 기반으로 하는 언어로 나타나도록 다른 언어의 패키지에 있는 HTML 파일을 추가할 수도 있습니다. 수행할 작업:
PkgFolder > Content 아래에 en-us 폴더 사본을 만듭니다.
복사한 폴더의 이름을 적절한 언어로 바꿉니다. 예를 들어, 스페인어의 경우 파일 이름을 es-ES로 바꿉니다.
HTML 파일의 콘텐츠를 수정하여 스페인어 콘텐츠를 추가합니다.
4단계: 패키지의 구성 값 지정
PkgFolder에서 사용할 수 있는 ImportConfig.xml 파일에 패키지에 대한 정보를 추가하여 패키지 구성을 정의합니다. 파일을 두 번 클릭하여 파일을 열고 편집합니다. 다음 표에는 구성 파일의 각 매개 변수 및 노드에 대한 정보를 나열합니다.
매개 변수/노드
설명
installsampledata
True 또는 false.true의 경우 샘플 데이터를 Dynamics 365 인스턴스에 설치합니다. 이는 Dynamics 365의 설정 > 데이터 관리 영역에서 설치할 수 있는 것과 같은 샘플 데이터입니다.
waitforsampledatatoinstall
true 또는 false.true이고 installsampledata가 true로 설정된 경우 패키지를 배포하기 전에 샘플 데이터가 설치될 때까지 기다립니다.
참고
waitforsampledatatoinstall을 true로 설정하는 경우, installsampledata를 true로 설정해야 합니다.
agentdesktopzipfile
압축을 풀 zip 파일의 파일 이름입니다. .zip 파일 이름을 여기에 지정하는 경우 패키지 배포 프로세스 동안 파일 내용의 압축을 풀 위치를 선택하라는 화면이 추가됩니다.
이는 일반적으로 Unified Service Desk for Microsoft Dynamics 365용 패키지를 만드는 데 사용됩니다.Unified Service Desk에 대한 자세한 내용은 TechNet: 통합 서비스 데스크 관리 가이드를 참조하십시오.
agentdesktopexename
배포 프로세스가 끝날 때 호출할 zip 파일 또는 URL에 있는 .exe 또는 .msi 파일의 이름입니다.
이는 일반적으로 Unified Service Desk용 패키지를 만드는 데 사용됩니다.
crmmigdataimportfile
구성 마이그레이션 도구을 사용하여 내보낸 기본 구성 데이터 파일(.zip)의 파일 이름입니다.
Package Deployer를 실행하는 동안 새 런타임 설정을 사용하여 지정된 로캘 ID(LCID)에 기반한 구성 데이터 파일의 지역화된 버전을 가져올 수도 있습니다.<cmtdatafile> 노드(뒷부분에서 설명)를 사용하여 패키지의 구성 데이터 파일의 지역화된 버전을 지정한 다음 OverrideConfigurationDataFileLanguage 메서드(뒷부분에서 설명)를 사용하여 런타임 설정을 사용하여 지정된 로캘 ID를 기반으로 구성 데이터 파일을 가져오는 논리를 지정합니다. 한 번에 패키지를 사용하여 여러 개의 구성 데이터 파일을 가져올 수 없습니다.
Dynamics 365(온-프레미스)의 경우, 구성 데이터 파일이 사용자 정보를 포함하고 소스 및 목표Dynamics 365 인스턴스가 모두 같은 활성 디렉터리 도메인에 있으면, 사용자 정보가 목표 Dynamics 365 인스턴스에 가져와집니다. 사용자 정보를 다른 도메인의 Dynamics 365(온-프레미스) 인스턴스로 가져오려면 프로젝트에서 구성 마이그레이션 도구을 사용하여 생성된 사용자 맵 파일(.xml)을 포함해야 하며, 그것을 나중에 설명하는 <cmtdatafile> 노드의 usermapfilename 특성을 사용하여 구성 데이터 파일과 함께 지정해야 합니다.Dynamics 365(온라인) 인스턴스로 사용자 정보를 가져올 수 없습니다.
<solutions> 노드
가져올 솔루션을 설명하는 <configsolutionfile> 노드의 배열이 들어 있습니다. 이 노드 아래에서 솔루션의 순서는 대상 Dynamics 365 인스턴스에 솔루션을 가져올 순서를 나타냅니다.
<configsolutionfile> 노드
<solutions> 노드 아래의 이 노드를 사용하여 개별 솔루션과 가져올 각 솔루션에 대한 다음 정보를 지정하십시오:
solutionpackagefilename: 솔루션의.zip 파일 이름을 지정 합니다. 필수 특성:
overwriteunmanagedcustomizations: 대상 Dynamics 365 인스턴스에 이미 존재하는 솔루션을 가져올 때 관리되지 않는 사용자 지정을 덮어쓸지 여부를 지정합니다. 이는 선택 사항이며, 이 특성을 지정하지 않으면 기존 솔루션의 관리되지 않는 사용자 지정은 기본적으로 대상 Dynamics 365 인스턴스에 유지됩니다.
publishworkflowsandactivateplugins: 솔루션을 가져온 후 대상 Dynamics 365 인스턴스에 워크플로 게시 및 플러그 인 정품 인증 여부를 지정합니다. 이는 선택 사항이며, 이 특성을 지정하지 않을 경우 기본적으로 대상 Dynamics 365 인스턴스로 솔루션을 가져온 후 워크플로가 게시되며 플러그 인에 대한 정품 인증이 이루어집니다.
원하는 만큼 <configsolutionfile> 노드를 추가하여 패키지에 여러 솔루션 파일 이름을 추가할 수 있습니다. 예를 들어, 3개의 솔루션 파일을 가져오려면 다음과 같이 추가합니다.
<solutions> <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip" overwriteunmanagedcustomizations="false" publishworkflowsandactivateplugins="true"/> <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip" overwriteunmanagedcustomizations="false" publishworkflowsandactivateplugins="true"/> <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" /> </solutions>
<filestoimportnode> 노드
각각 가져올 개별 파일과 zip 파일을 설명하는 데 사용되는 <configimportfile> 및 <zipimportdetails> 노드의 배열이 들어 있습니다.
<configimportfile> 노드
<configimportfile> 노드 아래에서 이 노드를 사용하여 Dynamics 365로 가져올 파일을 설명합니다. 원하는 만큼 <configimportfile> 노드를 추가하여 패키지에 여러 파일을 추가할 수 있습니다.
<filestoimport> <configimportfile filename="File.csv" filetype="CSV" associatedmap="FileMap" importtoentity="FileEntity" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="true" /> <configimportfile filename="File.zip" filetype="ZIP" associatedmap="FileMapName" importtoentity="FileEntity" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="true"/> </filestoimport>
여기에는 다음과 같은 특성이 있습니다.
특성
설명
filename
가져올 데이터가 들어 있는 파일 이름입니다. 파일이 .zip 파일인 경우 <zipimportdetails> 노드는 .zip 파일에 있는 각 파일에 대한 <zipimportdetail> 노드와 함께 제공해야 합니다.
filetype
이는 csv, xml 또는 zip이 될 수 있습니다.
associatedmap
이 파일과 함께 사용할 Dynamics 365 가져오기 데이터 맵의 이름입니다. 비어 있는 경우 이 파일에 대한 시스템에서 결정한 가져오기 데이터 맵 이름을 사용해 봅니다.
importtoentity
zip 파일에 있는 exe의 이름, URL 또는 프로세스가 끝날 때 호출할 링크를 제공하는 .msi 파일이 될 수 있습니다.
datadelimiter
가져올 파일에 사용된 데이터 구분 기호의 이름입니다. 유효한 값은 singlequote 또는 doublequotes입니다.
fielddelimiter
가져올 파일에 사용된 필드 구분 기호의 이름입니다. 유효한 값은 comma, colon 또는 singlequote입니다.
enableduplicatedetection
데이터 가져오기에 대한 중복 검색 규칙을 활성화할지 여부를 나타냅니다. 유효한 값은 true 또는 false입니다.
isfirstrowheader
가져올 파일의 첫 행에 필드 이름이 있는지 여부를 나타내는 데 사용합니다. 유효한 값은 true 또는 false입니다.
isrecordownerateam
가져오기에 있는 레코드의 담당자가 팀이 되어야 하는지 여부를 나타냅니다. 유효한 값은 true 또는 false입니다.
owneruser
레코드를 담당해야 하는 사용자 ID를 나타냅니다. 기본값은 현재 로그인한 사용자입니다.
waitforimporttocomplete
true의 경우 시스템은 처리하기 전에 가져오기가 완료될 때까지 기다립니다.false의 경우 작업을 큐에 넣고 이동합니다.
<zipimportdetails> 노드
이 노드에는 Dynamics 365로 가져오는 데 사용되는 zip 파일에 포함된 파일을 설명하는 <zipimportdetail> 노드의 배열이 포함되어 있습니다.
<zipimportdetail> 노드
<zipimportdetails> 노드 아래 있는 이 노드를 사용하여 <configimportfile> 노드에 지정된 .zip 파일에 있는 개별 파일에 대한 정보를 제공합니다.
<filestoimport> ... ... <zipimportdetails> <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" /> <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" /> </zipimportdetails> </filestoimport>
여기에는 다음과 같은 특성이 있습니다.
특성
설명
filename
가져올 데이터가 들어 있는 파일 이름입니다.
filetype
csv 또는 xml일 수 있습니다.
importtoentity
zip 파일에 있는 exe의 이름, url 또는 프로세스가 끝날 때 호출할 링크를 제공하는 .msi 파일이 될 수 있습니다.
<filesmapstoimport> 노드
이 노드에는 가져올 <configmapimportfile> 노드의 배열이 들어 있습니다. 이 노드에 있는 맵 파일의 순서는 가져온 순서를 나타냅니다. 데이터 맵에 대한 자세한 내용은 가져올 데이터 맵 만들기 문서를 참조하십시오.
<configimportmapfile> 노드
<filesmapstoimport> 노드 아래의 이 노드를 사용하여 Dynamics 365에서 가져올 개별 맵 파일에 대한 정보를 제공합니다.
<filesmapstoimport> <configimportmapfile filename="FileMap.xml" /> </filesmapstoimport>
<cmtdatafiles>
이 노드는 가져올 구성 데이터 파일의 현지화된 버전을 담은 <cmtdatafile> 노드 배열을 포함합니다.
<cmtdatafile>
<cmtdatafiles> 노드 아래의 이 노드를 사용하여 로캘 ID와 함께 지역화된 구성 데이터 파일(필수)과 사용자 정보 맵 파일(선택 사항)을 지정합니다. 예를 들면 다음과 같습니다.
<cmtdatafiles> <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" /> <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" /> </cmtdatafiles>
OverrideConfigurationDataFileLanguage 메서드(뒷부분에서 설명)의 사용자 지정 논리를 정의하여 런타임 설정(뒷부분에서 설명)을 사용하여 지정된 로캘 ID(LCID) 값에 따라 기본 (crmmigdataimportfile에 지정됨) 대신 지역화된 구성 데이터 파일을 가져올 수 있습니다.
모두 저장을 클릭합니다.
다음은 샘플 ImportConfig.xml 파일의 내용입니다.
<?xml version="1.0" encoding="utf-16"?> <configdatastorage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" installsampledata="true" waitforsampledatatoinstall="true" agentdesktopzipfile="" agentdesktopexename="" crmmigdataimportfile="data_1033.zip"> <solutions> <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip" overwriteunmanagedcustomizations="false" publishworkflowsandactivateplugins="true"/> <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip" overwriteunmanagedcustomizations="false" publishworkflowsandactivateplugins="true"/> <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" /> </solutions> <filestoimport> <configimportfile filename="SampleOption.csv" filetype="CSV" associatedmap="SampleOption" importtoentity="sample_option" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="false"/> <configimportfile filename="File.zip" filetype="ZIP" associatedmap="FileMapName" importtoentity="FileEntity" datadelimiter="" fielddelimiter="comma" enableduplicatedetection="true" isfirstrowheader="true" isrecordownerateam="false" owneruser="" waitforimporttocomplete="true"/> <zipimportdetails> <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" /> <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" /> </zipimportdetails> </filestoimport> <filesmapstoimport> <configimportmapfile filename="SampleOption.xml" /> </filesmapstoimport> <cmtdatafiles> <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" /> <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" /> </cmtdatafiles> </configdatastorage>
5단계: 패키지에 대한 사용자 지정 코드 정의
솔루션 탐색기 창에서 루트에 있는 PackageTemplate.cs 파일을 두 번 클릭하여 편집합니다.
PackageTemplate.cs 파일에서 다음을 수행할 수 있습니다.
InitializeCustomExtension의 다시 정의 메서드 정의에서 패키지를 정의할 때 실행할 사용자 지정 코드를 입력합니다.
이 매서드 활용하여 사용자가 패키지를 실행하는 동안 런타임 매개 변수를 사용할 수 있습니다. 개발자는 사용자 입력을 기반으로 하는 처리 코드가 있으면 RuntimeSettings 속성을 사용하여 패키지에 대한 런타임 매개 면수 지원을 추가할 수 있습니다.
예를 들어, 다음 샘플 코드는 true 또는 false 두 가지 값을 가질 수 있는 패키지에 대해 SkipChecks라는 런타임 매개 변수를 사용할 수 있게 해 줍니다. 샘플 코드는 사용자가 명령줄 또는 PowerShell을 사용하여 CRM 패키지 배포자을 실행하는 동안 런타임 매개 변수를 지정했는지 여부를 확인한 다음 이에 따라 정보를 처리합니다. 사용자가 패키지를 실행하는 동안 런타임 매개 변수를 지정하지 않는 경우, RuntimeSettings 속성 값은 null이 됩니다.
public override void InitializeCustomExtension() { // Do nothing. // Validate the state of the runtime settings object. if (RuntimeSettings != null) { PackageLog.Log(string.Format("Runtime Settings populated. Count = {0}", RuntimeSettings.Count)); foreach (var setting in RuntimeSettings) { PackageLog.Log(string.Format("Key={0} | Value={1}", setting.Key, setting.Value.ToString())); } // Check to see if skip checks is present. if ( RuntimeSettings.ContainsKey("SkipChecks") ) { bool bSkipChecks = false; if (bool.TryParse((string)RuntimeSettings["SkipChecks"], out bSkipChecks)) OverrideDataImportSafetyChecks = bSkipChecks; } } else PackageLog.Log("Runtime Settings not populated"); }
이렇게 하면 관리자가 명령줄 또는 Import-CrmPackage cmdlet을 사용하여 패키지를 가져오기 위해 패키지 배포자 도구을 실행하는 동안 보안 검사를 건너뛸지 여부를 지정할 수 있습니다. 추가 정보: TechNet: CRM Package Deployer 및 Windows PowerShell을 사용하는 Deploy 패키지
PreSolutionImport의 재정의 메서드 정의에 솔루션을 가져오기 전에 실행할 사용자 지정 코드를 입력하여, 대상 Dynamics 365 인스턴스의 지정된 솔루션을 업데이트하는 동안 사용자 지정을 유지할지 아니면 덮어쓸지 여부와 자동으로 플러그 인 및 워크플로 정품 인증을 실행할지 여부를 지정합니다.
RunSolutionUpgradeMigrationStep의 무효화 방법 정의를 사용하여 한 솔루션의 두 버전 사이의 데이터 전환 및 업그레이드를 수행합니다. 가져오려는 솔루션이 이미 대상 Dynamics 365 인스턴스에 있는 경우에만 이 메서드를 호출합니다.
이 함수는 다음 매개 변수가 필요합니다.
매개 변수
설명
solutionName
솔루션의 이름
oldVersion
기존 솔루션의 버전 번호
newVersion
새 솔루션의 버전 번호
oldSolutionId
기존 솔루션의 GUID
newSolutionId
새 솔루션의 GUID
BeforeImportStage 메서드의 재정의 정의에서 솔루션 가져오기를 완료하기 전에 수행할 사용자 정의 코드를 입력합니다. 솔루션 가져오기를 완료하기 전에 ImportConfig.xml 파일에서 지정된 솔루션에 대한 샘플 데이터 및 몇 가지 플랫 파일을 가져옵니다.
OverrideConfigurationDataFileLanguage의 재정의 메서드 정의를 사용하여 구성 데이터 가져오기에 대해 현재 선택되어 있는 언어를 다시 정의합니다. 특정 언어의 특정 로캘 ID(LCID)가 패키지 내 사용 가능한 언어 목록에 없을 경우, 기본 데이터 파일을 가져옵니다.
ImportConfig.xml 파일의 <cmtdatafiles> 노드에 구성 데이터에 대해 사용 가능한 언어를 정의합니다.ImportConfig.xml 파일의 crmmigdataimportfile 특성에 기본 구성 데이터 가져오기 파일이 정의됩니다.
대상 Dynamics 365 인스턴스에 아무 데이터도 포함되어 있지 않다고 확신할 경우 여기에서는 데이터 검사 건너뛰기(OverrideDataImportSafetyChecks = true)가 효과적일 수 있습니다.
AfterPrimaryImport 방법의 무효화 정의에서 가져오기 완료 후 실행할 맞춤 코드를 입력하십시오. 솔루션 가져오기가 시작되기 전에, 앞서 가져오지 않은 나머지 플랫 파일을 지금 가져옵니다.
PkgFolder에서 패키지 폴더의 기본 이름을 원하는 패키지 이름으로 변경합니다. 그렇게 하기 위해 솔루션 익스플로러 창의 PkgFolder 폴더 이름을 변경한 다음, GetImportPackageDataFolderName 속성 아래의 반환 값을 편집하십시오.
public override string GetImportPackageDataFolderName { get { // WARNING this value directly correlates to the folder name in the Solution Explorer where the ImportConfig.xml and sub content is located. // Changing this name requires that you also change the correlating name in the Solution Explorer return "PkgFolder"; } }
GetNameOfImport 속성 아래에서 반환 값을 편집하여 패키지 이름을 변경합니다.
public override string GetNameOfImport(bool plural) { return "Package Short Name"; }
이것은 CRM 패키지 배포자 마법사의 패키지 선택 페이지에 나타나는 패키지의 이름입니다.
GetImportPackageDescriptionText 속성 아래에서 반환 값을 편집하여 패키지 설명을 변경합니다.
public override string GetImportPackageDescriptionText { get { return "Package Description"; } }
이것은 Package Deployer 마법사에서 패키지 선택 페이지에 있는 패키지 이름과 함께 나타나는 패키지 설명입니다.
GetLongNameOfImport 속성 아래에서 반환 값을 편집하여 패키지 긴 이름을 변경합니다.
public override string GetLongNameOfImport { get { return "Package Long Name"; } }
패키지 긴 이름은 설치할 패키지를 선택한 후 다음 페이지에 나타납니다.
또한 다음 함수 및 변수를 패키지에 사용할 수 있습니다.
이름
유형
설명
함수
UI(사용자 인터페이스)의 새로운 진행 중 항목을 만드는 데 사용합니다.
함수
CreateProgressItem에 대한 호출로 만들어진 진행 상황을 업데이트하는 데 사용됩니다.
ProgressPanelItemStatus는 열거형입니다.
public enum ProgressPanelItemStatus { Working = 0, Complete = 1, Failed = 2, Warning = 3, Unknown = 4 }
함수
예외 메시지와 함께 현재 상태 가져오기에 실패하는 데 사용합니다.
함수
역할이 지정된 팀과 연결되어 있는지 확인하는 데 사용합니다.
함수
지정한 워크플로가 활성 상태인지 확인하는 데 사용합니다.
클래스 포인터
이는 패키지를 위해 초기화된 로깅 인터페이스에 대한 포인터입니다. 이 인터페이스는 메시지와 예외를 패키지 로그 파일에 기록하기 위해 패키지에 의해 사용됩니다.
속성
이는 패키지 배포 중 자체 UI 렌더링을 제어할 수 있도록 활용된 디스패처 인터페이스입니다. 모든 UI 요소 또는 명령을 래핑하기 위해 이 인터페이스를 이용합니다. 값으로 설정할 수 있는지 여부를 알 수 없으므로 사용하기 전에 이 변수에 null 값을 확인하는 것이 중요합니다.
속성
이는 패키지 내에서 패키지가 Dynamics 365를 다룰 수 있는 CrmServiceClient 클래스에 대한 포인터입니다. 이 클래스를 사용하여 다시 정의된 메서드의 Dynamics 365 SDK 및 기타 동작을 실행합니다.
속성
이를 사용하여 CRM 패키지 배포자에서 Dynamics 365 샘플 데이터, 플랫 파일 데이터 및 구성 마이그레이션 도구에서 내보낸 데이터 같은 모든 데이터 가져오기 작업을 건너뛸지 여부를 지정합니다. true 또는 false를 지정합니다. 기본값은 false입니다.
속성
이를 사용하여 CRM 패키지 배포자에서 가져오기 성능 향상에 도움이 되는 안전 검사 일부를 무시할지 여부를 지정합니다.true 또는 false를 지정합니다. 기본값은 false입니다.
대상 Dynamics 365 인스턴스에 아무 데이터도 포함되지 않을 경우에는 이것을 true로 설정해야 합니다.
프로젝트를 저장한 다음 빌드(빌드 > 솔루션 빌드)하여 패키지를 만듭니다. 패키지는 <Project>\Bin\Debug 폴더 아래의 다음 파일입니다.
< PackageName > 폴더: 폴더 이름은 이 섹션의 2.g 단계에서 변경한 패키지 폴더 이름과 동일합니다(5단계: 패키지에 대한 사용자 지정 코드 정의). 이 폴더에는 패키지에 대한 모든 솔루션, 구성 데이터, 플랫 파일 및 콘텐츠가 들어 있습니다.
<PackageName>.dll: 어셈블리에는 사용자 지정 패키지 코드가 들어 있습니다. 기본적으로 어셈블리의 이름은 Visual Studio 프로젝트 이름과 동일합니다.
다음 단계는 패키지 배포입니다.
패키지 배포
패키지를 만든 후 패키지 배포자 도구 또는 Windows PowerShell을 사용하여 Dynamics 365 인스턴스에 배포할 수 있습니다. 자세한 내용은 TechNet: CRM Package Deployer 또는 Windows PowerShell을 사용하여 패키지 배포를 참조하십시오.
패키지를 만들고 배포하기 위한 최상의 방법
패키지를 만드는 동안 개발자는 패키지 어셈블리가 서명되었는지 확인해야 합니다.
패키지를 배포하는 동안 Dynamics 365 관리자는 다음을 수행해야 합니다.
어셈블리 원본에 다시 추적할 수 있도록 서명된 패키지 어셈블리를 요구합니다.
패키지를 프로덕션 인스턴스에서 실행하기 전에 사전 프로덕션 인스턴스(프로덕션 인스턴스의 미러 이미지)에서 테스트합니다.
패키지를 배포하기 전에 프로덕션 인스턴스를 백업합니다.
참고 항목
개발자를 위한 새로운 기능: Microsoft Dynamics 365
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 저작권 정보