예제 #1
0
        public void Add(IApplicationCollection applications)
        {
            foreach (AdditionalApplicationModel model in settings.AdditionalApplications)
            {
                IApplicationBuilder builder = applications.Add(
                    model.Name,
                    model.Path,
                    null,
                    model.Arguments,
                    model.IsAdministratorRequired,
                    IconExtractor.Get(model.Path),
                    model.HotKey,
                    false
                    );

                foreach (AdditionalApplicationModel commandModel in model.Commands)
                {
                    builder.AddCommand(
                        commandModel.Name,
                        commandModel.Path,
                        null,
                        commandModel.Arguments,
                        commandModel.IsAdministratorRequired,
                        commandModel.HotKey
                        );
                }
            }
        }
예제 #2
0
        public void RestoreConnections(IApplicationCollection applications, IConnectionSettingsCollection settings)
        {
            if (settings.RunLocal)
            {
                applications.ConnectLocal(true);
            }
            List <Exception> exceptions = null;

            foreach (IConnectionSettings hostSettings in settings)
            {
                Communication.Managed.ConnectionSettings connectionSettings = hostSettings.GetConnectionSettings();
                try
                {
                    applications.Connect(connectionSettings);
                }
                catch (Exception exception)
                {
                    if (exceptions == null)
                    {
                        exceptions = new List <Exception>();
                    }
                    exceptions.Add(exception);
                }
            }
            if (exceptions != null)
            {
                throw new AggregateException(exceptions);
            }
        }
 public void Add(IApplicationCollection applications)
 {
     foreach (IApplicationLoader loader in storage)
     {
         loader.Add(applications);
     }
 }
예제 #4
0
        public void Add(IApplicationCollection applications)
        {
            IDirectoryNameSearch search = new LocalSearchProvider(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));

            Add2015AndOlder(search, applications);
            Add2017AndNewer(search, applications);
        }
 public ApplicationFilteredCollection(Settings settings, IApplicationCollection applications)
 {
     Ensure.NotNull(settings, "settings");
     Ensure.NotNull(applications, "applications");
     this.settings     = settings;
     this.applications = applications;
 }
예제 #6
0
        private void Add2015AndOlder(IDirectoryNameSearch search, IApplicationCollection applications)
        {
            IEnumerable <IDirectory> directories = search.FindDirectories(TextSearch.CreatePrefixed("Microsoft Visual Studio"));

            foreach (IDirectory directory in directories)
            {
                TryAdd(applications, directory);
            }
        }
        public void Add(IApplicationCollection applications)
        {
            string rawValue = Settings.Default.AdditionalApplications;
            if (!String.IsNullOrEmpty(rawValue))
            {
                AdditionalApplicationCollection collection = Converts
                    .To<string, AdditionalApplicationCollection>(rawValue);

                foreach (AdditionalApplicationModel model in collection.Items)
                    applications.Add(model.Name, model.Path, model.Arguments, IconExtractor.Get(model.Path), false);
            }
        }
예제 #8
0
        private void TryAdd(IApplicationCollection applications, string filePath)
        {
            if (File.Exists(filePath))
            {
                FileVersionInfo version = FileVersionInfo.GetVersionInfo(filePath);

                applications.Add(
                    String.Format("Visual Studio {0}.{1}", version.FileMajorPart, version.FileMinorPart),
                    new Version(version.FileMajorPart, version.FileMinorPart),
                    filePath,
                    null,
                    IconExtractor.Get(filePath),
                    Key.None,
                    true
                    );
            }
        }
        public void Add(IApplicationCollection applications)
        {
            string rawValue = Settings.Default.AdditionalApplications;

            if (!String.IsNullOrEmpty(rawValue))
            {
                AdditionalApplicationCollection collection = Converts
                                                             .To <string, AdditionalApplicationCollection>(rawValue);

                foreach (AdditionalApplicationModel model in collection.Items)
                {
                    IApplicationBuilder builder = applications.Add(model.Name, model.Path, model.Arguments, IconExtractor.Get(model.Path), model.HotKey, false);
                    foreach (AdditionalApplicationModel commandModel in model.Commands)
                    {
                        builder.AddCommand(commandModel.Name, commandModel.Path, commandModel.Arguments, commandModel.HotKey);
                    }
                }
            }
        }
        public void Add(IApplicationCollection applications)
        {
            IDirectoryNameSearch search = new LocalSearchProvider(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));

            IDirectory directory = search
                                   .FindDirectories(TextSearch.CreateMatched("Microsoft VS Code"))
                                   .FirstOrDefault();

            if (directory == null)
            {
                return;
            }

            //IFile file = directory
            //    .WithFileNameSearch()
            //    .FindFiles(TextSearch.CreateMatched("Code", false), TextSearch.CreateMatched(".exe"))
            //    .FirstOrDefault();

            IFile file = directory
                         .WithFileEnumerator()
                         .FirstOrDefault(f => f.Name == "Code" && f.Extension == "exe");

            if (file == null)
            {
                return;
            }

            string          filePath = file.WithAbsolutePath().AbsolutePath;
            FileVersionInfo version  = FileVersionInfo.GetVersionInfo(filePath);

            applications.Add(
                String.Format("VS Code {0}.{1}.{2}", version.FileMajorPart, version.FileMinorPart, version.FileBuildPart),
                new Version(version.FileMajorPart, version.FileMinorPart),
                filePath,
                "{DirectoryPath}",
                IconExtractor.Get(filePath),
                Key.None,
                true
                );
        }
예제 #11
0
        private void Add2017AndNewer(IDirectoryNameSearch search, IApplicationCollection applications)
        {
            IDirectory root = search
                              .FindDirectories(TextSearch.CreateMatched("Microsoft Visual Studio"))
                              .FirstOrDefault();

            if (root == null)
            {
                return;
            }

            foreach (IDirectory version in root.WithDirectoryEnumerator())
            {
                if (version.Name.Length == 4)
                {
                    foreach (IDirectory edition in version.WithDirectoryEnumerator())
                    {
                        TryAdd(applications, edition);
                    }
                }
            }
        }
        private void TryAdd(IApplicationCollection applications, string filePath)
        {
            if (File.Exists(filePath))
            {
                FileVersionInfo version = FileVersionInfo.GetVersionInfo(filePath);

                IApplicationBuilder builder = applications.Add(
                    String.Format("Visual Studio {0}", VersionFormatter.Format(version)),
                    new Version(version.FileMajorPart, version.FileMinorPart, version.FileBuildPart),
                    filePath,
                    null,
                    null,
                    false,
                    IconExtractor.Get(filePath),
                    Key.None,
                    true
                    );

                AddAdministratorCommand(builder, filePath);
                AddExperimentalCommand(builder, filePath);
            }
        }
        public void Add(IApplicationCollection applications)
        {
            IDirectoryNameSearch search = new LocalSearchProvider(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
            IEnumerable<IDirectory> directories = search.FindDirectories(TextSearch.CreatePrefixed("Microsoft Visual Studio"));

            foreach (IDirectory directory in directories)
            {
                string filePath = Path.Combine(directory.WithAbsolutePath().AbsolutePath, @"Common7\IDE\devenv.exe");
                if (File.Exists(filePath))
                {
                    FileVersionInfo version = FileVersionInfo.GetVersionInfo(filePath);

                    applications.Add(
                        String.Format("Visual Studio {0}.{1}", version.FileMajorPart, version.FileMinorPart),
                        new Version(version.FileMajorPart, version.FileMinorPart),
                        filePath,
                        null,
                        IconExtractor.Get(filePath),
                        true
                    );
                }
            }
        }
예제 #14
0
        public void Add(IApplicationCollection applications)
        {
            foreach (var(name, filePath, version) in Enumerate())
            {
                IApplicationBuilder builder = applications.Add(
                    String.Format(
                        "{0} {1}",
                        name,
                        VersionFormatter.Format(version)
                        ),
                    version,
                    filePath,
                    null,
                    null,
                    false,
                    IconExtractor.Get(filePath),
                    Key.None,
                    true
                    );

                VsVersionLoader.AddAdministratorCommand(builder, filePath);
                VsVersionLoader.AddExperimentalCommand(builder, filePath);
            }
        }
예제 #15
0
        private void TryAdd(IApplicationCollection applications, IDirectory directory)
        {
            string filePath = Path.Combine(directory.WithAbsolutePath().AbsolutePath, @"Common7\IDE\devenv.exe");

            TryAdd(applications, filePath);
        }
예제 #16
0
 public void SaveConnections(IApplicationCollection applications, IConnectionSettingsCollection settings)
 {
 }
예제 #17
0
        public void Add(IApplicationCollection applications)
        {
            List <(string suffix, IFile file)> files = new List <(string suffix, IFile file)>();

            foreach (var search in EnumerateProgramFolders())
            {
                IDirectory directory = search
                                       .directory
                                       .FindDirectories(TextSearch.CreateMatched("Microsoft VS Code"))
                                       .FirstOrDefault();

                if (directory == null)
                {
                    continue;
                }

                IFile file = directory
                             .WithFileEnumerator()
                             .FirstOrDefault(f => f.Name == "Code" && f.Extension == "exe");

                if (file == null)
                {
                    continue;
                }

                files.Add((search.suffix, file));
            }

            if (files.Count == 0)
            {
                return;
            }

            foreach (var search in files)
            {
                string          filePath = search.file.WithAbsolutePath().AbsolutePath;
                FileVersionInfo version  = FileVersionInfo.GetVersionInfo(filePath);

                IApplicationBuilder builder = applications.Add(
                    String.Format(
                        "VS Code{0} {1}",
                        files.Count == 1
                            ? String.Empty
                            : " " + search.suffix,
                        VersionFormatter.Format(version)
                        ),
                    new Version(version.FileMajorPart, version.FileMinorPart),
                    filePath,
                    null,
                    "{DirectoryPath}",
                    false,
                    IconExtractor.Get(filePath),
                    Key.None,
                    true
                    );

                builder.AddCommand(
                    "Run as Administrator",
                    filePath,
                    null,
                    null,
                    true,
                    Key.A
                    );
            }
        }