-
Notifications
You must be signed in to change notification settings - Fork 115
Expand file tree
/
Copy pathDeployPackage.ps1
More file actions
106 lines (83 loc) · 3.27 KB
/
Copy pathDeployPackage.ps1
File metadata and controls
106 lines (83 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#
# DeployPackage.ps1
#
param(
[string]$CrmConnectionString,
[string]$PackageName,
[string]$PackageDirectory,
[string]$LogsDirectory = '',
[string]$PackageDeploymentPath,
[string]$ToolingConnectorModulePath,
[string]$Timeout = '00:30:00', #optional timeout for Import-CrmPackage, default to 1 hour and 20 min. See https://technet.microsoft.com/en-us/library/dn756301.aspx
[int]$CrmConnectionTimeout = 2,
[string]$RuntimePackageSettings,
[string]$UnpackFilesDirectory,
[bool]$ImportAsync = $false #Import solution in Async Mode, recommended
)
$ErrorActionPreference = "Stop"
Write-Verbose 'Entering DeployPackage.ps1'
#Parameters
Write-Verbose "CrmConnectionString = $CrmConnectionString"
Write-Verbose "PackageName = $PackageName"
Write-Verbose "PackageDirectory = $PackageDirectory"
Write-Verbose "LogsDirectory = $LogsDirectory"
Write-Verbose "ToolingConnectorModulePath = $ToolingConnectorModulePath"
Write-Verbose "PackageDeploymentPath = $PackageDeploymentPath"
Write-Verbose "Timeout = $Timeout"
Write-Verbose "CrmConnectionTimeout = $CrmConnectionTimeout"
Write-Verbose "RuntimePackageSettings = $RuntimePackageSettings"
Write-Verbose "UnpackFilesDirectory = $UnpackFilesDirectory"
Write-Verbose "ImportAsync = $ImportAsync"
#Script Location
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Write-Verbose "Script Path: $scriptPath"
#Set Security Protocol
& "$scriptPath\SetTlsVersion.ps1"
#Load XRM Tooling
$crmToolingConnector = $scriptPath + "\Microsoft.Xrm.Tooling.CrmConnector.Powershell.dll"
$crmToolingDeployment = $scriptPath + "\Microsoft.Xrm.Tooling.PackageDeployment.Powershell.dll"
if($ToolingConnectorModulePath)
{
$crmToolingConnector = $ToolingConnectorModulePath + "\Microsoft.Xrm.Tooling.CrmConnector.Powershell.dll"
}
if ($PackageDeploymentPath)
{
$crmToolingDeployment = $PackageDeploymentPath + "\Microsoft.Xrm.Tooling.PackageDeployment.Powershell.dll"
}
Write-Verbose "Importing: $crmToolingConnector"
Import-Module $crmToolingConnector
Write-Verbose "Imported: $crmToolingConnector"
Write-Verbose "Importing: $crmToolingDeployment"
Import-Module $crmToolingDeployment
Write-Verbose "Imported: $crmToolingDeployment"
Write-Host "Microsoft.Xrm.Tooling.CrmConnector.Powershell.dll - Version: $([System.Diagnostics.FileVersionInfo]::GetVersionInfo($crmToolingConnector).FileVersion)"
Write-Host "Microsoft.Xrm.Tooling.PackageDeployment.Powershell.dll - Version: $([System.Diagnostics.FileVersionInfo]::GetVersionInfo($crmToolingDeployment).FileVersion)"
#Check Logs Directory
if ($LogsDirectory -eq '')
{
$LogsDirectory = $PackageDirectory
}
#Create Connection
$CRMConn = Get-CrmConnection -ConnectionString "$CrmConnectionString" -LogWriteDirectory "$LogsDirectory" -MaxCrmConnectionTimeOutMinutes $CrmConnectionTimeout -Verbose
#Deploy Package
$PackageParams = @{
CrmConnection = $CRMConn
PackageDirectory = "$PackageDirectory"
PackageName = $PackageName
LogWriteDirectory = "$LogsDirectory"
Timeout = $Timeout
}
if ($UnpackFilesDirectory)
{
$PackageParams.UnpackFilesDirectory = $UnpackFilesDirectory
}
if ($RuntimePackageSettings)
{
$PackageParams.RuntimePackageSettings = $RuntimePackageSettings
}
if ($ImportAsync)
{
$PackageParams.EnabledAsyncForSolutionImport = $true
}
Import-CrmPackage @PackageParams -Verbose
Write-Verbose 'Leaving DeployPackage.ps1'