从c#代码运行安装程序我可以成功安装.exe文件并卸载exe和msi文件......但是每当启动一个msi进行安装时它只是坐在那里,从不做任何事情......
start = new ProcessStartInfo("msiexec.exe", "/i \"" + tempDir + "/" + s.executable + "\"");
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
Process.Start(start).WaitForExit();
任何人都可以发现我的错误。我知道等待退出将无休止地等待,这很好,因为将有10-12个安装同步,但它从未实际安装.....
答案 0 :(得分:1)
我看了一下msiexec.exe文件。它似乎只适用于* .msi文件。我用msi文件尝试了你的代码,效果很好。
您的代码存在小问题。目录路径应该是相反的方式。
start = new ProcessStartInfo("msiexec.exe", "/i \"" + tempDir + "\\" + s.executable + "\"")
答案 1 :(得分:0)
您必须在几个问题上调整命令行才能达到最佳效果,并且主要是为了支持。
我认为使用not / qn但禁止打开窗口可能是问题的根源。
确保您的程序已经启动了管理员权限,否则您将在Vista,Win7 ff下遇到更复杂的UAC情况。并且你真的需要对话框以允许UAC对话框。如果您的程序已经启动了管理员权限,您可以使用“/ qn”并进行其他简化的方案,我建议初学者使用MSI。
使用记录。
在Windows中使用反斜杠更安全,但有时也可能使用斜杠。 =>我建议像这样生成一个命令行。
string msicmd; msicmd =“msiexec.exe / i \”“+ tempDir + @”\“+ msifile + @”\“/ qb / L * v \”tempDir \ mylogfile \“”);
//显示此命令行的跟踪以便在出现错误时对其进行调试: - )
...