| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- param($installPath, $toolsPath, $package, $project)
 
- # open json.net splash page on package install
 
- # don't open if json.net is installed as a dependency
 
- try
 
- {
 
-   $url = "http://james.newtonking.com/json"
 
-   $dte2 = Get-Interface $dte ([EnvDTE80.DTE2])
 
-   if ($dte2.ActiveWindow.Caption -eq "Package Manager Console")
 
-   {
 
-     # user is installing from VS NuGet console
 
-     # get reference to the window, the console host and the input history
 
-     # show webpage if "install-package newtonsoft.json" was last input
 
-     $consoleWindow = $(Get-VSComponentModel).GetService([NuGetConsole.IPowerConsoleWindow])
 
-     $props = $consoleWindow.GetType().GetProperties([System.Reflection.BindingFlags]::Instance -bor `
 
-       [System.Reflection.BindingFlags]::NonPublic)
 
-     $prop = $props | ? { $_.Name -eq "ActiveHostInfo" } | select -first 1
 
-     if ($prop -eq $null) { return }
 
-   
 
-     $hostInfo = $prop.GetValue($consoleWindow)
 
-     if ($hostInfo -eq $null) { return }
 
-     $history = $hostInfo.WpfConsole.InputHistory.History
 
-     $lastCommand = $history | select -last 1
 
-     if ($lastCommand)
 
-     {
 
-       $lastCommand = $lastCommand.Trim().ToLower()
 
-       if ($lastCommand.StartsWith("install-package") -and $lastCommand.Contains("newtonsoft.json"))
 
-       {
 
-         $dte2.ItemOperations.Navigate($url) | Out-Null
 
-       }
 
-     }
 
-   }
 
-   else
 
-   {
 
-     # user is installing from VS NuGet dialog
 
-     # get reference to the window, then smart output console provider
 
-     # show webpage if messages in buffered console contains "installing...newtonsoft.json" in last operation
 
-     $instanceField = [NuGet.Dialog.PackageManagerWindow].GetField("CurrentInstance", [System.Reflection.BindingFlags]::Static -bor `
 
-       [System.Reflection.BindingFlags]::NonPublic)
 
-     $consoleField = [NuGet.Dialog.PackageManagerWindow].GetField("_smartOutputConsoleProvider", [System.Reflection.BindingFlags]::Instance -bor `
 
-       [System.Reflection.BindingFlags]::NonPublic)
 
-     if ($instanceField -eq $null -or $consoleField -eq $null) { return }
 
-     $instance = $instanceField.GetValue($null)
 
-     if ($instance -eq $null) { return }
 
-     $consoleProvider = $consoleField.GetValue($instance)
 
-     if ($consoleProvider -eq $null) { return }
 
-     $console = $consoleProvider.CreateOutputConsole($false)
 
-     $messagesField = $console.GetType().GetField("_messages", [System.Reflection.BindingFlags]::Instance -bor `
 
-       [System.Reflection.BindingFlags]::NonPublic)
 
-     if ($messagesField -eq $null) { return }
 
-     $messages = $messagesField.GetValue($console)
 
-     if ($messages -eq $null) { return }
 
-     $operations = $messages -split "=============================="
 
-     $lastOperation = $operations | select -last 1
 
-     if ($lastOperation)
 
-     {
 
-       $lastOperation = $lastOperation.ToLower()
 
-       $lines = $lastOperation -split "`r`n"
 
-       $installMatch = $lines | ? { $_.StartsWith("------- installing...newtonsoft.json ") } | select -first 1
 
-       if ($installMatch)
 
-       {
 
-         $dte2.ItemOperations.Navigate($url) | Out-Null
 
-       }
 
-     }
 
-   }
 
- }
 
- catch
 
- {
 
-   # stop potential errors from bubbling up
 
-   # worst case the splash page won't open
 
- }
 
- # yolo
 
 
  |