private void RunPostInitializeStepsIfNeeded() { string startupPostStepPackageFile = Path.Combine(_packageSource, InstallPackage.STARTUP_POST_STEP_PACKAGE_FILENAME); //remove post step flag file if it exists if (File.Exists(startupPostStepPackageFile)) { try { using (new SecurityDisabler()) { //Load the post step details XmlSerializer serializer = new XmlSerializer(typeof(PostStepDetails)); using (TextReader writer = new StreamReader(startupPostStepPackageFile)) { PostStepDetails details = serializer.Deserialize(writer) as PostStepDetails; if (details != null) { InstallLogger installLogger = new InstallLogger(new RootLogger(Level.ALL)); try { InstallPackage.ExecutePostSteps(installLogger, details, true); InstallPackage.NotifiyPackageComplete(InstallPackage.SUCCESS, details); } catch (Exception ex) { Log.Fatal("An error occured when running post steps", ex, this); InstallPackage.NotifiyPackageComplete(InstallPackage.FAIL, details); } finally { installLogger.WriteMessages(Path.Combine(details.HistoryPath, "Install.log")); } } } } } finally { //cleanup the post step File.Delete(startupPostStepPackageFile); } } }