public async Task Install(string packageName, string installArguments, Action <string> logOutput, Action <string> logWarning, Action <string> logError, Action <ProgressRecord> logProgress) { var parameters = new Dictionary <string, object> { { "command", "install" }, { "packageNames", packageName }, { "source", GetSource() }, { "verbosity", true }, #if (DEBUG) { "pre", true }, #endif { "force", true } }; if (installArguments != null) { parameters["installArguments"] = installArguments; } var chocolateyPs1Path = Path.Combine(chocolateyInstaller.GetInstallPath(), @"chocolateyinstall\chocolatey.ps1"); Action <string> wrappedLogOutput = s => { if (s.ToLower().Contains("reboot is required")) { logError(s); return; } if (s.ToLower().Contains("the remote name could not be resolved:")) { logError(s); return; } if (s.ToLower().Contains("unable to find package")) { logError(s); return; } logOutput(s); }; await powerShellRunner.Run(chocolateyPs1Path, parameters, wrappedLogOutput, logWarning, logError, logProgress); CopyLogFiles(packageName); }
public void GetInstallPath() { var chocolateyInstaller = new ChocolateyInstaller(new ProcessRunner(), new PowerShellRunner()); Assert.AreEqual(@"C:\Chocolatey", chocolateyInstaller.GetInstallPath()); }