我有以下片的服務代碼來安裝一組複製到一個給定的目錄MSI文件:一個進程內調用MSIEXEC失敗
private void InvokeInstallersIn(string path)
{
var di = new DirectoryInfo(path);
foreach (FileInfo fileInfo in di.GetFiles("*.msi"))
{
try
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"msiexec.exe"; // Specify exe name.
start.UseShellExecute = true;
start.RedirectStandardOutput = false;
start.WorkingDirectory = path;
var arguments = @"/I /l*v install.log /qn " +
fileInfo.Name + " REINSTALL=All REINSTALLMODE=amus";
start.Arguments = arguments;
Logger.Info("Process: msiexec.exe {0}", arguments);
Process process = Process.Start(start);
process.WaitForExit(30000);
}
catch (System.Exception e)
{
Logger.ErrorEx(e, "Error installing '{0}'", fileInfo.Name);
}
}
}
每當調用MSIEXEC它結束了顯示用法對話,而不是執行安裝。
更新
我可以通過Windows資源管理器安裝MSI,但不能在命令行的。此外,我無法更改msi文件上的文件權限,安裝程序在通過資源管理器調用時顯示「此文件沒有有效的數字簽名...」警告。 (我將這個文件複製到我自己的機器上的一個共享中,並通過\ localhost \ MyShare在資源管理器中訪問它)。也許現在的問題是 - 如何選擇從命令行覆蓋此警告。
任何線索,我要去哪裏錯了?