public void UninstallOffice(string installVer = "2016")
{
const string configurationXml = "<Configuration><Remove All=\"TRUE\"/><Display Level=\"Full\" /></Configuration>";
var tmpPath = Environment.ExpandEnvironmentVariables("%temp%");
var embededExeFiles = EmbeddedResources.GetEmbeddedItems(tmpPath, @"\.exe$");
//NOTE: Have this function determine if 2013 ProPlus or 2016 ProPlus is installed and then use the right ODT version
var installExe = tmpPath + @"\" + embededExeFiles.FirstOrDefault(f => f.ToLower().Contains("2016"));
if (installVer == "2013")
{
//If 2013 then get the 2013 ODT version
installExe = tmpPath + @"\" + embededExeFiles.FirstOrDefault(f => f.ToLower().Contains("2013"));
}
var xmlPath = tmpPath + @"\configuration.xml";
if (System.IO.File.Exists(xmlPath)) System.IO.File.Delete(xmlPath);
System.IO.File.WriteAllText(xmlPath, configurationXml);
var p = new Process
{
StartInfo = new ProcessStartInfo()
{
FileName = installExe,
Arguments = "/configure " + tmpPath + @"\configuration.xml",
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
},
};
p.Start();
p.WaitForExit();
var error = p.StandardError.ReadToEnd();
if (!string.IsNullOrEmpty(error)) throw (new Exception(error));
if (System.IO.File.Exists(xmlPath)) System.IO.File.Delete(xmlPath);
foreach (var exeFilePath in embededExeFiles)
{
try
{
if (System.IO.File.Exists(tmpPath + @"\" + exeFilePath))
{
System.IO.File.Delete(tmpPath + @"\" + exeFilePath);
}
}
catch { }
}
}