/// <summary> /// Creates the metadata.txt file for a list of updates to export. /// Copies update IDs and XML data to this file /// </summary> /// <param name="updatesToExport">The updates to export</param> /// <param name="metadataTextFile">Destination metadata file</param> private void WriteMetadataFile(List <Update> updatesToExport, string metadataTextFile) { // Each line in the metadata text file contains multiple lines of the following format: // <update GUID>,<update revision>,<xml size>,<xml>\r\n // There is one line for each update exported // Open the metadata file for writing using (var metadataFile = File.CreateText(metadataTextFile)) { var allUpdates = new List <Update>(MetadataSource.GetCategories()); allUpdates.AddRange(updatesToExport); var progress = new OperationProgress() { CurrentOperation = OperationType.ExportUpdateXmlBlobProgress, Maximum = allUpdates.Count, Current = 0 }; foreach (var update in allUpdates) { using (var metadataStream = MetadataSource.GetUpdateMetadataStream(update.Identity)) { using (var metadataReader = new StreamReader(metadataStream)) { var xmlData = metadataReader.ReadToEnd(); // Write one line with GUID, revision, XML length, XML data metadataFile.WriteLine("{0},{1:x8},{2:x8},{3}", update.Identity.Raw.UpdateID, update.Identity.Raw.RevisionNumber, xmlData.Length, xmlData); } } progress.Current += 1; ExportProgress?.Invoke(this, progress); } } }
/// <summary> /// Exports the specified updates from a local update metadata source to a format compatible with WSUS 2016 /// </summary> /// <param name="updatesToExport">The updates to export. All categories from the source are also exported</param> /// <param name="exportFilePath">The export destination file (CAB)</param> public void Export(List <Update> updatesToExport, string exportFilePath) { var exportDirectory = Directory.GetParent(exportFilePath); if (!exportDirectory.Exists) { Directory.CreateDirectory(exportDirectory.FullName); } // Pack all XML blobs for updates to be exported into a flat text file var progress = new OperationProgress() { CurrentOperation = OperationType.ExportUpdateXmlBlobStart }; ExportProgress?.Invoke(this, progress); var metadataFile = Path.Combine(exportDirectory.FullName, "metadata.txt"); WriteMetadataFile(updatesToExport, metadataFile); progress.CurrentOperation = OperationType.ExportUpdateXmlBlobEnd; ExportProgress?.Invoke(this, progress); // Write metadata for all exported updates, languages and files progress.CurrentOperation = OperationType.ExportMetadataStart; ExportProgress?.Invoke(this, progress); var packageXmlFile = Path.Combine(exportDirectory.FullName, "package.xml"); WritePackagesXml(updatesToExport, packageXmlFile); progress.CurrentOperation = OperationType.ExportMetadataEnd; ExportProgress?.Invoke(this, progress); // Add the above 2 files to a CAB archive progress.CurrentOperation = OperationType.CompressExportFileStart; ExportProgress?.Invoke(this, progress); var result = CabinetUtility.CompressFiles(new List <string>() { metadataFile, packageXmlFile }, exportFilePath); progress.CurrentOperation = OperationType.CompressExportFileEnd; ExportProgress?.Invoke(this, progress); // Delete temporary files if (File.Exists(metadataFile)) { File.Delete(metadataFile); } if (File.Exists(packageXmlFile)) { File.Delete(packageXmlFile); } }
/// <summary> /// Confirme l'export de la base. /// Si le fichier est déjà existant, on demande la confirmation avant de l'écraser. /// </summary> /// <param name="Sender">Non utilisé.</param> /// <param name="Event">Les données de l'événement de clique.</param> private void ExportCsvButton_Click(object Sender, EventArgs Event) { var Path = FileChoosedBox.Text; // Si le fichier existe, on demande la confirmation à l'utilisateur avant d'éventuellement l'écraser. if (File.Exists(Path)) { var ConfirmResult = MessageBox.Show( "Un fichier de ce nom existe déjà à cet emplacement, cette opération va l'écraser, " + "voulez-vous continuer ?", "Confirmation", MessageBoxButtons.YesNo); // Si l'utilisateur ne veut pas écraser le fichier existant, on annule. if (ConfirmResult != DialogResult.Yes) { return; } } // On affiche la progression de l'export. using (var Writer = new StreamWriter(FileChoosedBox.Text, false, Encoding.Default)) { Writer.WriteLine("Description;Ref;Marque;Famille;Sous-Famille;Prix H.T."); // On met la barre de chargement à 0 en mode pas à pas ExportProgress.Style = ProgressBarStyle.Continuous; ExportProgress.Maximum = ArticleDao.Count(); ExportProgress.Minimum = 0; ExportProgress.Value = 0; var All = ArticleDao.GetAll(); foreach (var Articles in ArticleDao.GetAll()) { Writer.WriteLine( $"{Articles.Description};{Articles.RefArticle};{Articles.Marque.Nom};" + $"{Articles.SubFamily.Family.Name};{Articles.SubFamily.Name};{Articles.Price}"); // Progression de la barre de chargement ExportProgress.Value += 1; } } ExportProgress.Refresh(); // On confirme à l'utilisateur que l'export est terminé. MessageBox.Show("Export terminé !", "Information", MessageBoxButtons.OK); }
public ExportCommands(string progressTitle) { config = ExportConfig.Load(); if (EditorPrefs.HasKey("FFWD XNA dir " + PlayerSettings.productName)) { xnaBaseDir = EditorPrefs.GetString("FFWD XNA dir " + PlayerSettings.productName); if (String.IsNullOrEmpty(xnaBaseDir)) { xnaBaseDir = "..\\XNA"; } } if (EditorPrefs.HasKey("FFWD active group")) { activeGroup = EditorPrefs.GetInt("FFWD active group"); } string configPath = Path.Combine(Application.dataPath, config.configSource); if (File.Exists(configPath)) { resolver = TypeResolver.ReadConfiguration(configPath); } if (resolver == null) { Debug.LogWarning("We have no TypeResolver so we will not export any components"); } assets = new AssetHelper(); assets.TextureDir = Path.Combine(xnaBaseDir, config.xnaAssets.TextureDir); assets.ScriptDir = Path.Combine(xnaBaseDir, config.xnaAssets.ScriptDir); assets.MeshDir = Path.Combine(xnaBaseDir, config.xnaAssets.MeshDir); assets.AudioDir = Path.Combine(xnaBaseDir, config.xnaAssets.AudioDir); assets.XmlDir = Path.Combine(xnaBaseDir, config.exportDir); progress = new ExportProgress() { Title = progressTitle }; }
private void HandleExportProgress(ExportProgress exportProgress) { string status = exportProgress.IsWriterDisposing ? "Сохранение файла." : null; UpdateProgressStatus(status, exportProgress.ItemsExported, exportProgress.FilesCreated); }
protected void OnExportProgress(ExportProgressArgs ea) { ExportProgress?.Invoke(this, ea); }
protected virtual void OnRowsCopied(DataExportArgs e) { ExportProgress?.Invoke(this, e); }
private void HandleExportProgress(ExportProgress exportProgress) { string status = exportProgress.IsWriterDisposing ? Localization.SavingFile : null; UpdateProgressStatus(status, exportProgress.ItemsExported, exportProgress.FilesCreated); }
private void Exporter_ExportProgress(object sender, OperationProgress e) { ExportProgress?.Invoke(this, e); }