我试图制作一个帮助我在其他PC上安装软件的应用程序,我使用的是这段代码,但不幸的是不能正常工作:
string filename = "Java\\jre-6u24-windows-i586.exe";
Process p = new Process();
p.StartInfo.FileName = "msiexec.exe";
p.StartInfo.Arguments = "/i \"" + filename + "\" /qn";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
if (p.ExitCode != 0)
{
MessageBox.Show("ERROR: " + output);
}
错误:T
答案 0 :(得分:1)
msiexec.exe
是安装 * .msi-Files!
您的re-6u24-windows-i586.exe
是独立的可执行文件
哪个必须分配给p.StartInfo.FileName
属性!
p.StartInfo.Arguments
必须包含此特定安装程序的args! /qn
是MSI包的参数!
答案 1 :(得分:0)
要找出问题所在,您需要获得流程的输出:
string filename ="Java\\jre-6u24-windows-i586.exe";
Process p = new Process();
p.StartInfo.FileName = "msiexec.exe";
p.StartInfo.Arguments = "/i \""+filename+"\" /qn";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
if(p.ExitCode != 0)
{
MessageBox.Show("ERROR: " + output);
}
您收到的错误代码意味着
ERROR_INSTALL_PACKAGE_INVALID(1620)此安装包不可能 打开。请与应用程序供应商联系以验证这是否是有效的Windows 安装程序包。
所以我猜这不是一个msi包。也许你需要直接调用exe,而不使用msiexec?