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); } } } }
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); }