2010-08-24 2 views
2

У меня есть следующий фрагмент кода сервиса, чтобы установить группу 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). Возможно, сейчас вопрос - Как выбрать переопределение этого предупреждения из командной строки.

Любые подсказки относительно того, куда я иду не так?

ответ

1

Имя MSI принадлежит сразу после того, как/I, т.е.

string.format(@"/I {0} /l*v install.log /qnx REINSTALL=All REINSTALLMODE=amus", fileInfo.Name); 

Что касается предупреждения, AFAIK вы не можете переопределить его, но он уйдет, если вы цифровой подписи MSI с действительным сертификат.

0

Попробуйте запустить MSIExec из оболочки с повышенными привилегиями.

Смежные вопросы