Every software developer or system administrator has run into the problem of an application that has been thoroughly tested, but it won’t start on a particular machine. In my experience the most common cause is that the application expects to bind to a network port that is already in use (my vote for #2 would be license problems). If you know the port number on which your application listens, or if it provides halfway decent error logging, it’s easy to check whether the port is already in use.
Here’s an example from real life. I don’t have IIS installed on my laptop; if I need it, I’ll start a virtual machine. However, sometimes, for simple things that need a static webserver or if I intend to play with some PHP, I’ll start an instance of Apache using XAMPP. Recently, I began having a problem where it would not start. Even before checking the logs, I figured that something else was listening on port 80. Running netstat on the command line and piping it to findstr confirmed my suspicion.
It happens that I know the port numbers of most commonly used ports. If you don’t, or if you just don’t like having the port number resolved to a name, you can uncheck the “Resolve Addresses” option under the Options menu. That will also disable resolution of IP addresses to hostnames.
With my newfound knowledge in hand, I turned off Skype and restarted XAMPP. As an aside, if you start Skype when something is already bound to port 80 or port 443 (https), it will start up successfully without binding to them. I haven’t done any research on this yet, but I would assume that the port 80 and port 443 bindings are to facilitate using Skype behind a firewall. If you want to disable that behavior, there is a checkbox for doing so in Skype’s options menu under Advanced > Connections.
In a future post, I'll describe how to do the same process under Linux or Solaris.