public bool SaveProjectFile(out string errorMessage) { errorMessage = ""; WritingToUserFolder = true; //try //{ if (string.IsNullOrEmpty(CurrentProject.ProjectFile) || !Directory.Exists(Path.GetDirectoryName(CurrentProject.ProjectFile))) { throw new InvalidOperationException("Project Filename hasn't been set or the directory doesn't exist."); //toolStripMenuItemFileSaveAs_Click(null, null); } string tempFolder = PathHelper.GetUniqueTempDir("ArchAngel"); if (Directory.Exists(tempFolder)) { Utility.DeleteDirectoryBrute(tempFolder); } if (ArchAngel.Interfaces.SharedData.CurrentProject.TemplateProject == null) { ArchAngel.Interfaces.SharedData.CurrentProject.TemplateProject = ArchAngel.Common.UserTemplateHelper.GetDefaultTemplate(); } CurrentProject.ProjectSettings.UserTemplateName = CurrentProject.TemplateProject.Name; string versionFile = Path.Combine(tempFolder, "version.txt"); Directory.CreateDirectory(tempFolder); ExtraSaveSteps(tempFolder); File.WriteAllText(versionFile, FileVersionLatest.ToString()); CurrentProject.SaveAppConfig(tempFolder); var providerFolders = SaveProviders(tempFolder); //string zipFile = Path.Combine(Path.GetDirectoryName(CurrentProject.ProjectFile), Path.GetFileNameWithoutExtension(CurrentProject.ProjectFile) + ".aaproj"); //try //{ // //Slyce.Common.Utility.DeleteFileBrute(zipFile); // Utility.ZipFile(tempFolder, zipFile); //} //catch (Exception) //{ // if (File.Exists(zipFile) && (File.GetAttributes(zipFile) & FileAttributes.ReadOnly) != 0) // { // // We don't need to show a message to the user here, because ZipFile() already does that. // //MessageBox.Show("Cannot save because project file is readonly: " + zipFile, "Cannot Save - ReadOnly", MessageBoxButtons.OK, MessageBoxIcon.Warning); // return false; // } // throw; //} // Delete the temp folder //Slyce.Common.Utility.DeleteDirectoryBrute(tempFolder); // ## New Project Save Method ## // string outputDirectory = Path.Combine(Path.GetDirectoryName(CurrentProject.ProjectFile), ProviderHelper.GetProjectFilesDirectoryName(CurrentProject.ProjectFile)); for (int i = 0; i < 3; i++) { try { Utility.CopyDirectory(tempFolder, outputDirectory, true); } catch (Exception ex) { if (i == 2) { errorMessage = "Save failed: " + ex.Message; return(false); } else { System.Threading.Thread.Sleep(100); } } } string newFilename = Path.ChangeExtension(CurrentProject.ProjectFile, ".wbproj"); string projectFileText = CreateProjectDescriptorFile(newFilename, providerFolders); File.WriteAllText(newFilename, projectFileText); CurrentProject.ProjectFile = newFilename; OnSaveSuccess(); // ## New Project Save Method ## // SharedData.RegistryUpdateValue("DefaultConfig", CurrentProject.ProjectFile); IsDirty = false; RaiseSaveEvent(); // To show user something has happened //System.Threading.Thread.Sleep(500); return(true); //} //catch (Exception ex) //{ // ErrorReportingService.ReportUnhandledException(ex); // return false; //} }