Я пытаюсь выполнить файл MSI от C# с помощью Proce. Запустите метод. Файл MSI прекрасен, потому что я могу выполнять это обычно, но когда я пытаюсь выполнить файл MSI в рамках некоторого кода C#, я получаю следующую ошибку.
"Этот пакет установки не мог быть открыт. Проверьте, что пакет существует, и что можно получить доступ к нему или связаться с поставщиком приложений, чтобы проверить, что это - допустимый пакет установщика Windows"
Ниже код, который я использую для выполнения файла MSI...
Process p = Process.StartApplication.StartupPath "/Packages/Name.msi");
p.WaitForExit();
Как я могу решить эту проблему?
Хорошо, я получил его теперь. Я просто изменил его для выполнения файла setup.exe, который сгенерирован с файлом MSI вместо выполнения файла MSI...
msi файлы не могут запускаться сами по себе. Если дважды щелкнуть на них, Windows запустит
msiexec /i PathToYour.msi
Вы пытались сделать это явно?
Пример: (любезно @Webleeuw)
Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();
Добавление к плакату вопроса комментарий к ответу Бенджамина:
Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();
Также возможно выполнение .msi файла непосредственно с ассоциированным приложением. Это происходит при установке UseShellExecute
в true
:
Process.Start(new ProcessStartInfo()
{
FileName = @"c:\somepath\mySetup.msi",
UseShellExecute = true
});