Solution :
Please be sure that your ProjectInstaller class should be public. To be very precise I added the event handlers to my ProjectInstaller.Designer.cs, as shown below :
this.serviceProcessInstaller1.BeforeInstall += new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);
I think during your automatical process of creating the handler function in the ProjectInstaller.cs it might have changed my class definition from
public class ProjectInstaller : System.Configuration.Install.Installer
to the
partial class ProjectInstaller : System.Configuration.Install.Installer
so replacing your public keyword with the partial. That is why, in order to fix the issue it must be done as
public partial class ProjectInstaller : System.Configuration.Install.Installer
Also note that I use the Visual Studio 2013 Community edition.