I have a piece of NET 4.0 C# code that does not seem to work
The code is just supposed to extract the contents of an MSI. The following code compiles w/o errors but when running the application, an error displays “file specified cannot be found”
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "msiexec ";
startInfo.Arguments = "/a \""+ textBox1.Text + "\" /qb TARGETDIR=\""+textBox1.Text +".EXT\"";
//output of message box looks like this, which is right syntax but application gets an error.
from messageBox = msiexec /a "C:\Temp\MyApplication.msi" /qb TARGETDIR="c:\temp\myapplication.msi.EXT"
The application still complaints that file cannot be found.
If a copy and paste the output of the messagebox into a batch file and then run the file, it works fine. why is the code above not working?
I can also create the file and run it as follows.
if (File.Exists("C:\\temp\\_321.bat"))
File.Delete("C:\\temp\\_321.bat");
FileStream logFile = new FileStream("C:\\Temp\\_321.bat", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(logFile);
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "msiexec ";
sw.Write(sw.NewLine);
startInfo.Arguments = "/a \"" + textBox1.Text + "\" /qb TARGETDIR=\""+ textBox1.Text +".EXT\"";
sw.Write(startInfo.FileName+startInfo.Arguments);
sw.Close();
logFile.Close();
System.Diagnostics.Process.Start("c:\\temp\\_321.bat");
this also works fine. Can someone advice as to what am I doing wrong in the first code. I think is cleaner and don’t want to use a batch file. Many thanks