// Run all custom build phases
    public virtual void RunProcess()
    {
        // Phase 1: Setup Enviornment
        try
        {
            StateSetupEnv();
            customBuildSetup.Setup();
        }
        catch (Exception e)
        {
            HandleExceptions(e);
            return;
        }

        // Phase 2: GUI (Chose custom build process)
        try
        {
            StateBuildIdle();
            CustomBuildWindow.CreateCustomBuildWindow(stage,
                                                      customBuildWindow,
                                                      scenesSelector,
                                                      buildStagesToRun
                                                      );
            buildStagesToRun.AddListener(
                delegate(BuildStage lastStage)
            {
                lastBuildStage = lastStage;
                scenesPath     = scenesSelector.ScenesToString();
                RunInstalationProcess();
            }
                );
        }
        catch (Exception e)
        {
            HandleExceptions(e);
            return;
        }
    }