Apparently it is not possible to deploy a "classic" SharePoint solution (WSP) to a SharePoint 2016 MinRole server which is running a dedicated search role.

Most likely this is caused by the fact that on a dedicated search server role the „Microsoft SharePoint Foundation Web Application“ service is not installed. (At least I found posts which say this service had to be running in order to deploy WSP solutions. Yet I didn't find an official statement by Microsoft so far.)

Since our solution is a Custom Indexing Connector solution it has to be deployed on the crawl server. This works in most of topologies (in all likelihood as long as the „Microsoft SharePoint Foundation Web Application“ service is running on this server). But in a SharePoint 2016 MinRole deployment, running the crawl server on a dedicated search role is a designated topology.

(As a workaround you can copy the required DLLs manually to the GAC on the crawl server using gacutil.exe. This seems to be working so far but is no really satisfying solution.)

So my question is: is there any clean solution for this scenario?

  • What error you are getting? did you try install-spsolution with local parameter? is sharepoint admin and timer service running (check from services console)? – Waqas Sarwar MVP Oct 11 at 12:08
  • Unfortunately I have no environment with exactly this farm topology (dedicated search server role) available. The problem occurs on a customers system on which I have no access. But I stopped the Microsoft SharePoint Foundation Web Application service as well as the SharePoint Timer Service on my test farm and with this constellation I suceeded in deploying the solution (Install-SPSolution) using the "Local" parameter. So this seems to work. – Dorrit Riemenschneider Oct 15 at 14:24
  • At the customers system ("real" MinRole dedicated search server) the local deployment failed. Error message at Install-SPSolution: "You cannot deploy this solution on this type of server computer as it is configured. This solution must be installed on a server of type: front-end Web server." Thus I changed the manifest.xml by adding the attribute DeploymentServerType = "ApplicationServer" and now I'm waiting again for feedback of the customer. (At my server it did work, of course :o) – Dorrit Riemenschneider Oct 16 at 8:55
  • i am not developer so not sure if that works, I think safe option is either change the minrole to app+search or custom role or try to deploy locally. – Waqas Sarwar MVP Oct 16 at 13:05

Convert the server to the App+Search shared MinRole.

  • That would surely solve the problem - but this is (understandably) no option for our customer since it defies the purpose of using MinRoles in his scenario. – Dorrit Riemenschneider Oct 16 at 8:59
  • Why? It is a MinRole. It enforces starting of services appropriately. – Trevor Seward Oct 16 at 17:15
  • Because he intends to have a "dedicated" search server. – Dorrit Riemenschneider Oct 17 at 14:10
up vote 0 down vote accepted

The solution was to add the (optional) DeploymentServerType attribute to the solution element of the manifest.xml for the WSP and set it to "ApplicationServer". (When omitted the default value for this attribute is "WebFrontEnd". See also https://docs.microsoft.com/en-us/sharepoint/dev/schema/solution-element-solution)

enter image description here

With the DeploymentServerType set to ApplicationServer the solution successfully deployed to all servers in the farm (with no need to use the "Local" Parameter on the dedicated Search servers). Centrally deploying it from one of the Application Servers using Install-SPSolution was enough.

New contributor
Dorrit Riemenschneider is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.