-
Notifications
You must be signed in to change notification settings - Fork 117
/
DeployPackage.ps1
99 lines (79 loc) · 3.1 KB
/
DeployPackage.ps1
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
#
# DeployPackage.ps1
#
param(
[string]$CrmConnectionString,
[string]$PackageName,
[string]$PackageDirectory,
[string]$LogsDirectory = '',
[string]$PackageDeploymentPath,
[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
[string]$RuntimePackageSettings,
[string]$UnpackFilesDirectory
)
$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 "PackageDeploymentPath = $PackageDeploymentPath"
Write-Verbose "Timeout = $Timeout"
Write-Verbose "RuntimePackageSettings = $RuntimePackageSettings"
Write-Verbose "UnpackFilesDirectory = $UnpackFilesDirectory"
#Script Location
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Write-Verbose "Script Path: $scriptPath"
#Set Security Protocol
$currentProtocol = [System.Net.ServicePointManager]::SecurityProtocol
Write-Verbose "Current Security Protocol: $currentProtocol"
if (-not $currentProtocol.HasFlag([System.Net.SecurityProtocolType]::Tls11))
{
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [System.Net.SecurityProtocolType]::Tls11;
}
if (-not $currentProtocol.HasFlag([System.Net.SecurityProtocolType]::Tls12))
{
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [System.Net.SecurityProtocolType]::Tls12;
}
$currentProtocol = [System.Net.ServicePointManager]::SecurityProtocol
Write-Verbose "Modified Security Protocol: $currentProtocol"
#Load XRM Tooling
$crmToolingConnector = $scriptPath + "\Microsoft.Xrm.Tooling.CrmConnector.Powershell.dll"
$crmToolingDeployment = $scriptPath + "\Microsoft.Xrm.Tooling.PackageDeployment.Powershell.dll"
if ($PackageDeploymentPath)
{
$crmToolingConnector = $PackageDeploymentPath + "\Microsoft.Xrm.Tooling.CrmConnector.Powershell.dll"
$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"
#Check Logs Directory
if ($LogsDirectory -eq '')
{
$LogsDirectory = $PackageDirectory
}
#Create Connection
$CRMConn = Get-CrmConnection -ConnectionString $CrmConnectionString -Verbose
#Deploy Package
$PackageParams = @{
CrmConnection = $CRMConn
PackageDirectory = $PackageDirectory
PackageName = $PackageName
LogWriteDirectory = $LogsDirectory
Timeout = $Timeout
}
if ($UnpackFilesDirectory)
{
$PackageParams.UnpackFilesDirectory = $UnpackFilesDirectory
}
if ($RuntimePackageSettings)
{
$PackageParams.RuntimePackageSettings = $RuntimePackageSettings
}
Import-CrmPackage -Verbose @PackageParams
Write-Verbose 'Leaving DeployPackage.ps1'