У меня есть следующий фрагмент кода сервиса, чтобы установить группу 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 он заканчивает отображение диалога использования вместо выполняя установку.
Update
можно установить MSI с помощью проводника Windows, но не может из командной строки на всех. Кроме того, я не могу изменить файловые привилегии в файле msi, а установщик отображает «. Этот файл не имеет действительной цифровой подписи ...» предупреждение при вызове через проводник. (Я скопировал этот файл в общий ресурс на своей собственной машине и получаю доступ к нему в проводнике через \ localhost \ MyShare). Возможно, сейчас вопрос - Как выбрать переопределение этого предупреждения из командной строки.
Любые подсказки относительно того, куда я иду не так?