Friday, 7 December 2012

Error in SharePoint Server 2013 Prerequisite Installer on Windows Server 2012 - Unable to Install Application Server and Web Server (IIS) Role

When trying to install SharePoint Server 2013 RTM on a fresh new Windows Server 2012 RTM OS, in a farm with SQL Server running on a seperate VM I hit a bit of grief getting past the prerequisite installer a.k.a Microsoft SharePoint 2013 Product Preparation Tool.

One of the first steps it gets through is to add the Application Server and Web Server (IIS) Roles. This is where it seemed to be failing, below is an output of the prerequisite installer logs.


2012-11-20 13:15:12 - Request for install time of Application Server Role, Web Server (IIS) Role
2012-11-20 13:15:13 - Request for install time of Application Server Role, Web Server (IIS) Role
2012-11-20 13:15:13 - Install process returned (0)
2012-11-20 13:15:13 - [In HRESULT format] (0)
2012-11-20 13:15:13 - "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe" -i
2012-11-20 13:15:13 - Install process returned (0)
2012-11-20 13:15:13 - [In HRESULT format] (0)
2012-11-20 13:15:13 - "C:\Windows\system32\cscript.exe" "C:\Windows\system32\iisext.vbs" /enext "ASP.NET v4.0.30319"
2012-11-20 13:15:14 - Install process returned (1)
2012-11-20 13:15:14 - [In HRESULT format] (-2147024895)
2012-11-20 13:15:14 - Error when enabling ASP.NET v4.0.30319
2012-11-20 13:15:14 - Last return code (1)
2012-11-20 13:15:14 - Reading the following DWORD value/name...
2012-11-20 13:15:14 - Flags
2012-11-20 13:15:14 - from the following registry location...
2012-11-20 13:15:14 - SOFTWARE\Microsoft\Updates\UpdateExeVolatile
2012-11-20 13:15:14 - Reading the following string value/name...
2012-11-20 13:15:14 - PendingFileRenameOperations
2012-11-20 13:15:14 - from the following registry location...
2012-11-20 13:15:14 - SYSTEM\CurrentControlSet\Control\Session Manager
2012-11-20 13:15:14 - Reading the following registry location...
2012-11-20 13:15:14 - SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto
Update\RebootRequired
2012-11-20 13:15:14 - Error: The tool was unable to install Application Server
Role, Web Server (IIS) Role.
2012-11-20 13:15:14 - Last return code (1)
2012-11-20 13:15:14 - Options for further diagnostics: 1. Look up the return code
value 2. Download the prerequisite manually and verify size downloaded by the
prerequisite installer. 3. Install the prerequisite manually from the given
location without any command line options.
2012-11-20 13:15:14 - Cannot retry

Noooooooooooooooo!

The errors start at this line:
2012-11-20 13:15:13 - "C:\Windows\system32\cscript.exe" "C:\Windows\system32\iisext.vbs" /enext "ASP.NET v4.0.30319"

So I went in and had a look in the C:\Windows\system32\ folder and THERE WAS NO iisext.vbs file in there at all.

Prerequisite installer, why are you trying to us a file that isn't there?
More importantly - wtf is meant to put that file there? 

iisext.vbs is an IIS Web service extension script which configures and manages Web service extension.

To get this file in there, go to Server Manager and start the Add Roles and Features wizard.

You need to ensure you add:

.NET Framework 3.5 - I hit issues with adding this via the wizard and had to use this approach: http://sharepoint-sezai-moss-2007.blogspot.com.au/2012/12/install-net-framework-35-bug-on-windows.html

IIS 6.0 - Ensure IIS 6.0 Scripting Tools is checked.



Optionally I recommend adding the SMTP Server, if you're going to need to get incoming email working in your farm, you're gonna need this guy too. If you tick SMTP Server, you get a dialog that states it's dependency on everything IIS 6, including the IIS 6 Management Console that isn't ticked in the screenshot above.

After you add those features, rerun the prerequisite installer and ...

2012-11-20 14:04:48 - "C:\Windows\system32\cscript.exe" "C:\Windows\system32\iisext.vbs" /enext "ASP.NET v4.0.30319"
2012-11-20 14:04:48 - Install process returned (0)

Remember that - 
 Install process returned (0) is good
and
 Install process returned (1) is BAD

So now the application server and web server (IIS) roles will install successfully and the prerequisite installer can now continue and install everything else it needs to.

You probably won't hit this issue with installing on Windows Server 2008 R2, you get it with Windows Server 2012 as .NET Framework 3.5 and IIS 6 bits aren't on their by default...

[Update] Check out this KB http://support.microsoft.com/kb/2765260
Install Windows Features for SharePoint manually. To do this, run the following commands in an elevated Windows PowerShell Command Prompt window:


Import-Module Servermanager
Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45
Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor,Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering,Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server,AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation,AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model,WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation,Server-Media-Foundation,Xps-Viewer

Thursday, 6 December 2012

SharePoint Server 2013 RTM Apps - Sorry we can't connect to the SharePoint Store. Try again in a bit.

I configured SharePoint Apps on a new SharePoint Server 2013 RTM farm and it was all working fine, I was able to download and install some Apps and thought I would call it a day and head home feeling like I had accomplished something.

The next morning I continued with some testing and I tried to Add an App and received this nasty error...

Sorry, we can't seem to connect to the SharePoint Store. Try again in a bit.

Reboot didn't fix squat, tried on two servers in the farm with no luck.
So I had a closer look at the error using ULS Viewer, the handiest tool there is for resolving errors in SharePoint.


Here's a dump of some of the errors logged related to this issue:


Request to office.com with the following URL:?lc=en%2DUS&type=3&build=15%2E0%2E4420%2E1017&av=OSU150&origin=EC101785291&corr=%7Be6d1e39b%2D4844%2Da074%2D52ac%2D72347f78a65f%7D&clientip=127.0.0.1 caused a URL exception. Maybe marketplace settings are not setup. Exception details: System.UriFormatException: Invalid URI: The format of the URI could not be determined.   
 at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)   
 at System.Net.WebRequest.Create(String requestUriString)   
 at Microsoft.SharePoint.Marketplace.OfficeProxy.OfficeProxy.SendWebRequest(String url, Boolean autoRedirect, String userIP, String postBody, String contentType, Encoding encoding, String jobRunIdLogPrefix)

Response from office.com was null or its HTTP status code was not 'OK'.

An exception was thrown while running task 'GetOfficeMarkets'. Microsoft.SharePoint.SPException: Sorry, we can't seem to connect to the SharePoint Store. Try again in a bit.   
 at Microsoft.SharePoint.Marketplace.OfficeProxy.OfficeProxy.GetMarkets(String userDefaultBillingMarket, String userDefaultContentMarket, String userIP, List`1& markets, Boolean& validDefault)   
 at Microsoft.SharePoint.ApplicationPages.StorefrontBase.GetOfficeMarkets(HttpRequest request, List`1& markets, Boolean& validDefaults)   
 at Microsoft.SharePoint.ApplicationPages.StorefrontBase.TaskGetOfficeMarkets()   
 at Microsoft.SharePoint.ApplicationPages.StorefrontBase.TryRunTask(TryGetOutput taskMethod)

A certificate validation operation took 79647.0152 milliseconds and has exceeded the execution time threshold.  If this continues to occur, it may represent a configuration issue.  Please see http://go.microsoft.com/fwlink/?LinkId=246987 for more details.


:(
So many errors make me sad, especially when they don't go away after a reboot.

After some investigation, that last certification validation operation error then lead me to this:


Site slowness due to SharePoint STS Certificate CRL checking: http://support.microsoft.com/kb/2625048

and this post from Khalid Ameerodien:
http://khalidstech.blogspot.com.au/2012/11/certificate-validation-errors-in.html

In order to get Apps working on a web application you must create it using Claims Based Authentication, the default, preferred and recommended authentication mode in SharePoint Server 2013.
With Claims based Auth, the Security Token Service has a certificate that is used to sign certificate tokens, and SharePoint tries to periodically check it is trusted, but:

"By default, the root certificate in the chain is not added to the Trusted Root Certificate Authorities store of the SharePoint servers. Because of this, the CRL check for the certificate is performed over the internet. If the online CRL server cannot be reached from the SharePoint server for some reason, the operation times out after 15 seconds by default."

So the fix for this is to make SharePoint trust the certificate!
I trust you SharePoint (sometimes) why for you not trusting yourself 'eh?

You can fix SharePoint's internal trust issue by exporting SharePoint's Root Authority Certificate and importing it to your local computer Trusted Root Certification Authorities list.

To do so, follow these steps from the KB article.


1. Obtain the “SharePoint Root Authority” certificate as a physical (.cer) file 
This step involves getting the SharePoint Root Authority Certificate as a

a) Launch the SharePoint 2010 PowerShell window as Administrator
b) $rootCert = (Get-SPCertificateAuthority).RootCertificate
c) $rootCert.Export("Cert") | Set-Content C:\SharePointRootAuthority.cer -Encoding byte

Note: The .cer file exported in this step can be used on other servers in the farm without having to run the Powershell commands again.

2. Import the “SharePoint Root Authority” certificate to the Trusted Root Certification store
Now that we have the certificate file exported from SharePoint, we can add it to the server's Trusted Root Certification Authorities list of certificates.

a) Start > Run > MMC > Enter
b) File > Add/Remove Snap-in
c) Certificates > Add > Computer account > Next > Local computer > Finish > OK
d) Expand Certificates (Local Computer), expand Trusted Root Certification Authorities
e) Right-click Certificates > All tasks > Import
f) Next > Browse > navigate to and select C:\SharePointRootAuthority.cer > Open > Next > Next > Finish > OK




That's it - now go back and try to add your SharePoint App by accessing the App Store and...

It works!
Back to downloading and playing with some Apps.

Tuesday, 4 December 2012

Install .NET Framework 3.5 bug on Windows Server 2012


I recently worked through a new SharePoint Server 2013 RTM Farm setup which included setting up a separate SQL Server 2012 and SharePoint Server 2013 VM, with both using Windows Server 2012 as their OS.
For both SQL Server 2012 and SharePoint 2013 I hit issues due to not having .NET Framework 3.5 installed, which isn’t installed by default on Windows Server 2012. 

You add it as a Feature, so lets try and add it how you're meant to add Features to Windows Server 2012 (spoiler - doesn't work)

So launch the Server Manager and select Dashboard.



Click "Add roles and features".


Next >


Role-based or feature-based installation then Next >


Select your Server and then Next >


Tick ".NET Framework 3.5 Features" and Next >



Can’t do it through the Add Roles and Features Wizard, note the exclamation warning sign and this message: “Do you need to specify an alternate source path? One of more installation selections are missing source files on the destination"
 .NET Framework 3.5 Fails to install via the Add Roles and Features Wizard.

This looks like a bug – instead you need to install the .NET Framework 3.5 feature via a Command Prompt (!!!) Hope they fix this in a future build.

In our case, CD Drive with the Windows Server 2012 media is G:\ ensure the Windows Server 2012 disk is in and run the following command -

dism /online /enable-feature /featurename:NetFX3 /all /Source:g:\sources\sxs /LimitAccess

Start a new command prompt with ‘run as administrator’



.NET Framework 3.5 is now installed – Yeaaaaah!
Now you can go ahead and install SQL Server 2012 or SharePoint Server 2013 :)

Install Windows Server 2012


I recently had the pleasure of setting up a SharePoint Server 2013 RTM farm for a customer, this blog post provides an overview of installing Windows Server 2012, the starting point for installing SQL Server 2012, Office Web Apps 2013 and SharePoint Server 2013. The servers I am setting up are Virtual Machines.
Here's the high level process:
  1. Download install media
  2. Create a VM
  3. Insert media as a drive via VM settings.
  4. Boot it up and install Windows Server 2012.
  5. Assign a static IP Address
  6. Change Regional Settings/Locale/Timezone to Perth (or wherever you may reside)
  7. Change the Machine name and add it to the domain
  8. Enable Remote Desktop, add users to remote desktop users
  9. Add local administrators to the server
  10. Done – now install SQL Server 2012, SharePoint Server 2013 or Office Web Apps 2013.

 

So let's get cracking – firstly you need to download the installation media from either MSDN, TechNet or the organisations Microsoft Volume Licensing website.
Create a new VM and insert the media image as a disk, then boot it up.



 



English (United States) is the only Language to install available initialled, being based in Perth, Western Australia I'll need to remember to change time and currency format to English (Australia)

Click Next





 Click Install now



Select Windows Server 2012 Standard Evaluation (Server with a GUI), the best option to use for SQL, SharePoint and Office Web Apps.




Tick the license terms acceptance box then click next.




 Select Custom: Install Windows only (advanced)




We’ve got an 80GB drive to start with, add further drives later on depending on your requirements, it’s always good to add multiple drives for either SQL or SharePoint so you can store SQL data files and log files on different drives.
Click Next




 Wait until install is completed, this step took roughly 10mins to complete.







Specify the local administrator password.





Send a Ctrl+Alt+Delete to the console.




Sign in as local admin






Now Windows Server 2012 is setup and ready to use, lets assign a static IP and add it to the domain.
There are many ways to launch apps, the easiest is to hit the Windows key and start typing, the Start Screen will suggest apps for you.
Another option is to right click the popup start menu.



 Right click start menu and select control panel.


 Network and Internet > Network and Sharing Center




Change Adapter Settings



 Right click the network connection and select Properties


Edit properties of IPv4, alternatively you can go down the IPv6 configuration if that’s what your network uses.
Then specify IP Address, Subnet mask and Default gateway as well as Preferred DNS server.





Now navigate to the Server Manager, click Local Server, then the computer name and then click the Change button.



Now enter Computer name and Domain and click OK,
You will be prompted to enter a domain account that will allow you to add machines to the domain.




Click OK.
Now restart the VM.
Windows Server 2012 reboots are DAMN FAST! Noticeably faster than Windows Server 2008 R2.
After the machine has rebooted, login again with local admin, then launch Control Panel.



 Select Clock, Language, and Region



Select “Change the time zone”




Then “Change time zone…”



Select Perth, then OK and OK again



Now in Server Manager, click on Local Server and then the Disabled link next to Remote Desktop.



Add domain users you want to allow remote desktop ability too. Once remote desktop is available I like to stop using the VM console as it’s typically less responsive as an RDP session.
Next we will add some local administrators.




Select Computer Management from the Tools menu in Server Manager




Add local administrator domain accounts as required.


Next I like to crank down user account control settings.





And that's it, you now have a Windows Server 2012 VM, with a machine name and static IP, added to your domain, timezone configured, remote desktop enabled and local admins added.
This is a good starting point to start installing other server products.