/// <summary> /// Extrait les fichiers manifests contenues dans le package /// </summary> private void ExtractManifests() { _manifests = new ManifestCollection(); if (!File.Exists(FullName)) { return; } // Extraction dans un répertoire temporaire string temporaryFolder = Path.GetTempPath(); temporaryFolder = Path.Combine(temporaryFolder, "$$Temp"); if (Directory.Exists(temporaryFolder)) { Utils.RemoveDirectory(temporaryFolder); } Directory.CreateDirectory(temporaryFolder); // Extraction du manifest RepositoryZipFile zip = new RepositoryZipFile(FullName, false); try { zip.ExtractFileWithExtension(temporaryFolder, ManifestExtension); FindManifests(temporaryFolder); } finally { if (Directory.Exists(temporaryFolder)) { Utils.RemoveDirectory(temporaryFolder); } } }
/// <summary> /// Nom du template du projet /// </summary> /// <param name="layer">The layer.</param> /// <returns></returns> /// <remarks> /// Le template est soit un template standard de VS, soit un template fournit dans la stratégie. /// </remarks> public string GetProjectTemplate(SoftwareLayer layer) { string template = MapPath(_projectTemplate); if (File.Exists(template)) { // Template fournit avec la stratégie. // On le décompresse dans un dossier temporaire string folder = Utils.GetTemporaryFolder(); // On extrait le ichier de template (.vstemplate) RepositoryZipFile zipFile = new RepositoryZipFile(template); zipFile.ExtractAll(folder); List <string> files = Utils.SearchFile(folder, "*.vstemplate"); // Si on le trouve, c'est bon if (files.Count > 0) { return(files[0]); // On supprimera le répertoire temporaire aprés } // On a rien trouvé Utils.RemoveDirectory(folder); } return(template); }
/// <summary> /// Extraction des fichiers du package et chargement des assemblies /// </summary> public void Extract() { Utils.RemoveDirectory(PackageFolder); if (Directory.Exists(PackageFolder) && Directory.GetFiles(PackageFolder, ".dll").Length > 0) { IIDEHelper ide = ServiceLocator.Instance.IDEHelper; if (ide != null) { ide.ShowMessage( String.Format("Change detected in strategies package {0} - You must restart Visual Studio", _name)); } } Directory.CreateDirectory(PackageFolder); RepositoryZipFile zip = new RepositoryZipFile(FullName, true); zip.ExtractAll(PackageFolder); }