Notices: This section not yet converted to new layout. Download stats are rolling back out.

This is not the latest version of Exceptionless self-host available.

Exceptionless self-host


This package skips automatic verification:

Needs IIS installed.

This package was approved by moderator ferventcoder on 2/11/2016.

Installs Exceptionless, including ElasticSearch, JDK8 and .NET 4.6. You will need to install IIS first and restart once the package install is complete.


Note: All argument values should be wrapped in a single quote if they contain anything except numbers/letters.

  • websitePort - The website port to use, default is 80.
  • websiteDomain - The domain that the site binds to, default is "localhost". Do not include "http://".


choco install Exceptionless -packageParameters "/websitePort:82 /websiteDomain:''"

To install Exceptionless self-host, run the following command from the command line or from PowerShell:

C:\> choco install exceptionless --version 3.2.2128.1

To upgrade Exceptionless self-host, run the following command from the command line or from PowerShell:

C:\> choco upgrade exceptionless --version 3.2.2128.1


  • tools\chocolateyinstall.ps1 Show
    # Test for the pre-requisite of IIS
    function Test-IisInstalled()
        $service = Get-WmiObject -Class Win32_Service -Filter "Name='w3svc'";
        if ($service)
            write-host $service.Status
            if ($service.Status -eq "OK")
                return $True;
        return $False;
    if ((Test-IisInstalled) -eq $False)
        throw "IIS is not installed, please install it before continuing."
    # Download urls and unzip locations
    $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    . "$toolsDir\common.ps1"
    $ErrorActionPreference = 'Stop';
    $packageName = "Exceptionless";
    $appPoolName = "Exceptionless";
    $websiteName = "Exceptionless";
    $fullVersion = "3.2.2128";
    $url = "$"
    $unzipDir = "$toolsDir\Exceptionless.$version"
    # Parse command line arguments - this function is required because of the context Chocolatey runs in
    $arguments = @{}
    $arguments["websitePort"] = 80;
    $arguments["websiteDomain"] = "localhost";
    $websitePort = $arguments["websitePort"];
    $websiteDomain = $arguments["websiteDomain"];
    # Install elasticsearch and the website
    Unzip-Exceptionless $url $unzipDir
    Update-ExceptionlessConfigs $unzipDir $websiteDomain $websitePort
    Remove-ExceptionlessWebsite $appPoolName $websiteName
    Add-ExceptionlessAppPool $appPoolName 
    Add-ExceptionlessWebsite $unzipDir $websiteName $websiteDomain $websitePort
    # Done
    $websiteUrl = "http://$websiteDomain" +":"+ $websitePort
    Write-Host "-----------------------------------------------------------------------------------------"
    Write-Host "Installation complete."
    Write-Host "You should now open a browser and signup at $websiteUrl" -ForegroundColor Green
    Write-Host "(You may need to restart first)."
    Write-Host "-----------------------------------------------------------------------------------------"
  • tools\chocolateyuninstall.ps1 Show
    $toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    . "$toolsDir\common.ps1"
    $appPoolName = "Exceptionless"
    $websiteName = "Exceptionless"
    Remove-ExceptionlessWebsite $appPoolName $websiteName
  • tools\common.ps1 Show
    # This module requires Powershell 4+ which is picked up by the choco Powershell dependency
    Import-Module WebAdministration
    function Parse-Parameters($arguments)
        $packageParameters = $env:chocolateyPackageParameters
        Write-Host "Package parameters: $packageParameters"
        if ($packageParameters)
              $match_pattern = "(?:\s*)(?<=[-|/])(?<name>\w*)[:|=]('((?<value>.*?)(?<!\\)')|(?<value>[\w]*))"
              if ($packageParameters -match $match_pattern )
                  $results = $packageParameters | Select-String $match_pattern -AllMatches
                  $results.matches | % {
                    $key = $_.Groups["name"].Value.Trim();
                    $value = $_.Groups["value"].Value.Trim();
                    write-host "$key : $value";
                    if ($arguments.ContainsKey($key))
                        $arguments[$key] = $value;
    function Configure-ElasticSearch()
        # Setup elasticsearch's config from exceptionless
        Write-Host "Configuring elasticsearch config file" -ForegroundColor Cyan
        $elasticSearchConfigPath = "$env:ChocolateyInstall\lib\elasticsearch\tools\exceptionless-elasticsearch-2.2.0\config\elasticsearch.yml";
        wget "" -OutFile "$elasticSearchConfigPath";
        # Reload JAVA_HOME variable
        Write-Host "Configuring elasticsearch as a service" -ForegroundColor Cyan
        $env:JAVA_HOME = [System.Environment]::GetEnvironmentVariable("JAVA_HOME","Machine");
        # Install elasticsearch as a service
        $elasticSearchPath = "$env:ChocolateyInstall\lib\elasticsearch\tools\exceptionless-elasticsearch-2.2.0\bin";
        cmd /c "set JAVA_HOME=$env:JAVA_HOME& $elasticSearchPath\service.bat install"
        cmd /c "$elasticSearchPath\service.bat start"
        # Set it to auto-start
        sc.exe config elasticsearch-service-x64 start=auto
        sc.exe start elasticsearch-service-x64
    function Delete-ElasticSearchService()
        sc.exe stop elasticsearch-service-x64
        sc.exe delete elasticsearch-service-x64    
    function Unzip-Exceptionless([string] $url, [string] $unzipDir)
        # Download and unzip the file
        $url64 = $url
        Install-ChocolateyZipPackage $packageName $url $unzipDir
    function Update-ExceptionlessConfigs([string] $unzipDir, [string] $websiteDomain, [int] $websitePort)
        $domainAndPort = $websiteDomain +":"+ $websitePort;
        # Update Exceptionless web.config
        Write-Host "Updating exceptionless web.config" -ForegroundColor Cyan
        $webConfig = "$unzipDir\wwwroot\web.config"
        $doc = (gc $webConfig) -as [xml]
        $doc.SelectSingleNode('//appSettings/add[@key="BaseURL"]/@value')."#text" = "http://$domainAndPort/#"
        $doc.SelectSingleNode('//appSettings/add[@key="WebsiteMode"]/@value')."#text" = "Production"
        # Update app.config.*.js
        Write-Host "Updating exceptionless $jsConfigFilePath" -ForegroundColor Cyan
        $jsConfigFile = (dir "$unzipDir\wwwroot\app.config.*.js")[0]
        $jsConfigFilePath = $jsConfigFile.FullName
        $content = [System.IO.File]::ReadAllText($jsConfigFilePath)
        $content = $content.Replace(".constant('BASE_URL', 'http://localhost:50000')",".constant('BASE_URL', 'http://$domainAndPort')")
        [System.IO.File]::WriteAllText($jsConfigFilePath, $content)
    function Remove-ExceptionlessWebsite([string] $appPoolName, [string] $websiteName)
        if (Test-WebAppPool $appPoolName)
            Write-Host "  Removing app pool $appPoolName"
            Remove-WebAppPool -Name $appPoolName -WarningAction Ignore
        if (Test-Website $websiteName)
            Write-Host "  Removing website $websiteName"
            Remove-Website -Name $websiteName -WarningAction Ignore
    function Test-WebAppPool($Name) {
        return Test-Path "IIS:\AppPools\$Name"
    function Test-Website($Name) {
        return Test-Path "IIS:\Sites\$Name"
    function Add-ExceptionlessAppPool([string] $appPoolName)
        Write-Host "  Adding app pool $appPoolName (v4, localservice)"
        New-WebAppPool -Name $appPoolName -Force | Out-Null
        Set-ItemProperty "IIS:\AppPools\$appPoolName" managedRuntimeVersion v4.0
        Set-ItemProperty "IIS:\AppPools\$appPoolName" managedPipelineMode Integrated
        Set-ItemProperty "IIS:\AppPools\$appPoolName" processModel -value @{userName="";password="";identitytype=1}
        Set-ItemProperty "IIS:\AppPools\$appPoolName" processModel.idleTimeout -value ([TimeSpan]::FromMinutes(0))
        Set-ItemProperty "IIS:\AppPools\$appPoolName" processModel.pingingEnabled -value true #disable for debuging
    function Add-ExceptionlessWebsite([string] $unzipDir, [string] $websiteName, [string] $websiteDomain, [int] $websitePort)
        $websitePath = "$unzipDir\wwwroot"
        Write-Host "  Adding website $websiteName (id:$websitePort, port: $websitePort, path: $websitePath)"
        New-Website -Name $websiteName -Id $websitePort -Port $websitePort -PhysicalPath $websitePath -ApplicationPool $appPoolName -Force  | Out-Null   

Virus Scan Results

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.


Package Maintainer(s)

Software Author(s)

  • Exceptionless


Version History

Version Downloads Last updated Status
Exceptionless self-host 3.2.2128.1 210 Wednesday, February 10, 2016 approved
Exceptionless self-host 3.2.2128 250 Wednesday, February 10, 2016 approved
Exceptionless self-host 3.1.1822.5 228 Wednesday, January 20, 2016 approved

Discussion for the Exceptionless self-host Package

Ground rules:

  • This discussion is only about Exceptionless self-host and the Exceptionless self-host package. If you have feedback for Chocolatey, please contact the google group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Exceptionless self-host, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.

comments powered by Disqus uses cookies to enhance the user experience of the site.