During my first Sitecore 9 (XP0 topology) installation, I noticed that we can’t change a physical installation path of both Sitecore website and XConnect. The default installation path is “c:\inetpub\wwwroot\”, but it may differ, depending on which drive is marked as a “system”. From my point of view, it isn’t always comfortable. For example, I store all projects in different partition. This article is about how I added an ability to manage the installation paths.
In case installation XP0 topology, we have two configuration files:
- sitecore-XP0.json, which defines parameters and steps for installing Sitecore Instance;
- xconnect-xp0.json, which defines parameters and steps for installing XConnect Instance.
First, we need to apply the following changes to both configuration files:
1) Add the parameter above:
"InstallationPath": {
"Type": "string",
"Description": "The path to the folder where Sitecore will be installed"
}
Replace the following line:
"Site.PhysicalPath": "[joinpath(environment('SystemDrive'), 'inetpub', 'wwwroot', parameter('SiteName'))]",
with the line below:
"Site.PhysicalPath": "[parameter('InstallationPath')]",
Now we are able to pass the installation path in install.ps1 script:
#define parameters
$prefix = "xp0"
$PSScriptRoot = "c:\Data\resourcefiles\xp0"
$XConnectCollectionService = "$prefix.xconnect"
$sitecoreSiteName = "$prefix.sc"
$SolrUrl = "https://localhost:8983/solr"
$SolrRoot = "c:\solr"
$SolrService = "Solr6"
$SqlServer = "PC\MSSQL2016"
$SqlAdminUser = "sa"
$SqlAdminPassword="your password for sa user"
$SitecoreInstallationPath="c:\inetpub\wwwroot\$sitecoreSiteName"
$XConnectInstallationPath="c:\inetpub\wwwroot\$XConnectCollectionService"
#install client certificate for xconnect
$certParams = @{
Path = "$PSScriptRoot\xconnect-createcert.json"
CertificateName = "$prefix.xconnect_client"
}
Install-SitecoreConfiguration @certParams -Verbose
#install solr cores for xdb
$solrParams = @{
Path = "$PSScriptRoot\xconnect-solr.json"
SolrUrl = $SolrUrl
SolrRoot = $SolrRoot
SolrService = $SolrService
CorePrefix = $prefix
}
Install-SitecoreConfiguration @solrParams
#install xconnect instance
$xconnectParams = @{
Path = "$PSScriptRoot\xconnect-xp0.json"
Package = "$PSScriptRoot\Sitecore171002OnPremXp0xconnect.scwdp.zip"
LicenseFile = "$PSScriptRoot\license.xml"
Sitename = $XConnectCollectionService
InstallationPath = $XConnectInstallationPath
XConnectCert = $certParams.CertificateName
SqlDbPrefix = $prefix
SqlServer = $SqlServer
SqlAdminUser = $SqlAdminUser
SqlAdminPassword = $SqlAdminPassword
SolrCorePrefix = $prefix
SolrURL = $SolrUrl
}
Install-SitecoreConfiguration @xconnectParams
#install solr cores for sitecore
$solrParams = @{
Path = "$PSScriptRoot\sitecore-solr.json"
SolrUrl = $SolrUrl
SolrRoot = $SolrRoot
SolrService = $SolrService
CorePrefix = $prefix
}
Install-SitecoreConfiguration @solrParams
#install sitecore instance
$xconnectHostName = "$prefix.xconnect"
$sitecoreParams = @{
Path = "$PSScriptRoot\sitecore-XP0.json"
Package = "$PSScriptRoot\Sitecore171002OnPremSingle.scwdp.zip"
LicenseFile = "$PSScriptRoot\license.xml"
SqlDbPrefix = $prefix
SqlServer = $SqlServer
SqlAdminUser = $SqlAdminUser
SqlAdminPassword = $SqlAdminPassword
SolrCorePrefix = $prefix
SolrUrl = $SolrUrl
InstallationPath = $SitecoreInstallationPath
XConnectCert = $certParams.CertificateName
Sitename = $sitecoreSiteName
XConnectCollectionService = "https://$XConnectCollectionService"
}
Install-SitecoreConfiguration @sitecoreParams
This solution is also applicable for XP1 topology. The same changes should be applied for each configuration file which serves for creating IIS websites.
You can download updated files by the following links:
For Sitecore 9.0 Initial Release (rev. 171002)
For Sitecore 9.0 Update-1 (rev. 171219)
For Sitecore 9.0 Update-2 (rev. 180604)
UPDATED: configuration files are have been added for new Sitecore update versions
Do you like this approach? Tell us what you think.