使用c#安装msi工作不正常

使用c#安装msi工作不正常,c#,process,installation,windows-installer,C#,Process,Installation,Windows Installer,我正在尝试一个接一个地安装3个msi驱动程序。 它们都在同一个文件夹中,我对它们使用相同的属性/ 我以前已经做过了,效果很好,但现在我不知道会出什么问题 string attributesToDownload = "REINSTALL=ALL /qb- /norestart"; Process proc = Process.Start("msiexec.exe", string.Format("/i \"{0}\" {1}", driverPath, attributesToDownload))

我正在尝试一个接一个地安装3个msi驱动程序。 它们都在同一个文件夹中,我对它们使用相同的属性/

我以前已经做过了,效果很好,但现在我不知道会出什么问题

string attributesToDownload = "REINSTALL=ALL /qb- /norestart";
Process proc = Process.Start("msiexec.exe", string.Format("/i \"{0}\" {1}", driverPath, attributesToDownload));
proc.WaitForExit();
return proc.ExitCode;
奇怪的是: 对于第一个驱动程序,我的ExitCode是1603。 对于第二个驱动程序,ExitCode为0,但未真正安装驱动程序。 对于第三个,一切正常

当我尝试直接从cmd安装第一个和第二个驱动程序时,它成功地安装了相同的属性。 “msiexec/i driverPath REINSTALL=ALL/qb-/norestart”


等待一些想法……

我想。。。。如果没有REINSTALL=ALL,唯一的方法(我发现)是卸载当前版本,而不是安装新版本。如果您正在执行REINSTALL=ALL以使其正常工作,则您正在更新系统上安装的现有产品。没关系,也许你想修补现有的产品,但你似乎没有意识到你不能安装同一个产品两次——新的产品需要修补或更新,就像重新安装=全部或主要升级一样。如果你想卸载旧的,那么你需要一个大的升级!!!无需卸载旧版本,因为主要升级会自动卸载旧版本

如果您是创建这些安装的人,请首先记录它们(
/l*v path\to\verbose.log
)。如果您没有创建这些安装,这个问题可能更适合超级用户。