コード例 #1
0
        public virtual void InstallTools(Dictionary <string, string> packages)
        {
            // install
            foreach (var id in packages.Keys)
            {
                var toolPackage        = id;
                var toolPackageVersion = packages[id];

                MetaPackTrace.Verbose(string.Format("Resolving tool:[{0}] version:[{1}]", toolPackage, toolPackageVersion));
                IPackage localPackage = null;

                if (!string.IsNullOrEmpty(toolPackageVersion))
                {
                    localPackage = ToolPackageManager.LocalRepository.FindPackage(toolPackage, new SemanticVersion(toolPackageVersion));
                }
                else
                {
                    localPackage = ToolPackageManager.LocalRepository.FindPackage(toolPackage);
                }

                if (localPackage == null)
                {
                    MetaPackTrace.Verbose(string.Format("Tool package does not exist locally. Installing..."));

                    IntallToolPackage(toolPackage, toolPackageVersion);
                }
                else
                {
                    if (!ForceInstallPackages)
                    {
                        MetaPackTrace.Verbose(string.Format("Tool exists. No need for install"));
                    }
                    else
                    {
                        // force install, kinda debug thing
                        MetaPackTrace.Verbose(string.Format(".ForceInstallPackages is true. Uninstalling existing package."));

                        ToolPackageManager.UninstallPackage(localPackage, true);

                        MetaPackTrace.Verbose(string.Format("Installing..."));
                        IntallToolPackage(toolPackage, toolPackageVersion);
                    }
                }
            }
        }
コード例 #2
0
        private void IntallToolPackage(string toolPackage, string toolPackageVersion)
        {
            IPackage package;

            if (!string.IsNullOrEmpty(toolPackageVersion))
            {
                package = ToolPackageManager.SourceRepository.FindPackage(toolPackage, new SemanticVersion(toolPackageVersion));
            }
            else
            {
                package = ToolPackageManager.SourceRepository.FindPackage(toolPackage);
            }

            if (package == null)
            {
                throw new MetaPackException(string.Format("Cannot find package:[{0}] version:[{1}]", toolPackage, toolPackageVersion));
            }

            ToolPackageManager.InstallPackage(package, false, true, false);
        }