How can I automate the site setup process during installation? I have this client requirement:


  While installing Drupal, user needs to do most of the configuration
  himself.
  
  
  Select the logo.
  Select the theme.
  Select the type of website he wants like blog, website, forum, eCommerce and when he does it, it should come along with its own configurations.
  


I know I need to use an installation profile. Is there any other way to do it? If an installation profile is the only way, then how can I meet all these requirements?
I recommend you take a look at NodeStream for examples. With a combination of install profile and Features, you do a great deal of setup during the actual install. You could either build on top of that, which is what we do at work, or you could use it for examples.