Example #1
0
        /// <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);
        }
Example #3
0
        /// <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);
        }