Using managed APIs you can easilly do this, within custom installer class, here goes the code:
Add reference: Microsoft.Web.Administration.dll, found at IIS directory %windir%\system32\inetsrv\.
ServerManager mgr = new ServerManager();
Microsoft.Web.Administration.Application
applicationElement;
applicationElement = mgr.Sites["AddedViaApi"].Applications.CreateElement();
VirtualDirectory vDir =
app.VirtualDirectories.CreateElement();
vDir.Path =
"/";
vDir.PhysicalPath = "E:\\inetpub\\WebsiteCustomError";
//Adding virtual directory in
Application
applicationElement.VirtualDirectories.Add(vdir);
applicationElement.Path = "/trial";
applicationElement.Path = "<your path>" ;
applicationElement.ApplicationPoolName = "DefaultAppPool";
//Adding Application Element in site to
create application
mgr.Sites["AddedViaApi"].Applications.Add(applicationElement);
mgr.CommitChanges();
~ Ankit