public UAReturn InstallPackageFromCRAN(string packagename)
{
UAReturn result = new UAReturn() { Success = false };
string command = string.Empty;
string retmsg = string.Empty;
string[] pkgs = packagename.Split(',');
string packagenames = GetCommaSeparatedWithSingleQuotes(pkgs);
if (packagenames == null)//bad string
{
result.CommandString = packagename;
retmsg = " Mulitple packages must be comma separated and no quotes should be used.";
}
else
{
foreach (string pkgnam in pkgs)//uninstall package(s)
{
//UAReturn result = new UAReturn() { Success = false };
if (_dispatcher.IsLoaded(pkgnam)) // if package is already loaded. Unload and uninstall it
{
UnLoadPackage(pkgnam);
UninstallPackage(pkgnam);
}
}
string CranUrl = "http://cran.us.r-project.org";
//string command = "utils:::menuInstallPkgs()";
command = string.Format("install.packages(c({0}))", packagenames);
//string command = string.Format("install.packages('{0}', repos='{1}')", packagename, CranUrl);
retmsg = _dispatcher.EvaluateToString(command);
}
_journal.WriteLine(command);
result.CommandString = command;
result.Error = retmsg;
if (retmsg.Contains("Check Command.") || retmsg.ToLower().Contains("error") || retmsg.ToLower().Contains("warning"))
result.Success = false;
else
result.Success = true;
//LoadPackage(packagename); // Normally, when we install package, it should also be loaded. Can also be done outside.
return result;
}