MSI не запускается изнутри C # - PullRequest
7 голосов
/ 05 января 2010

Я пытаюсь запустить файл MSI из C #, используя метод Proces.Start. Файл MSI в порядке, потому что я могу запустить его нормально, но когда я пытаюсь запустить файл MSI в коде C #, я получаю следующую ошибку.

"Этот установочный пакет не может быть открытым. Убедитесь, что пакет существует, и что вы можете получить к нему доступ, или обратитесь к поставщику приложения, чтобы убедитесь, что это действительные окна установочный пакет "

Ниже приведен код, который я использую для запуска файла MSI ...

Process p = Process.StartApplication.StartupPath  "/Packages/Name.msi");

p.WaitForExit();   

Как я могу решить эту проблему?


Хорошо, теперь я понял. Я просто изменил его, чтобы запустить файл setup.exe, сгенерированный с файлом MSI, вместо запуска файла MSI ...

Ответы [ 3 ]

15 голосов
/ 05 января 2010

MSI-файлы не могут работать самостоятельно. Если вы дважды щелкните по ним, Windows запустится

msiexec /i PathToYour.msi

Вы пытались сделать это явно?

Пример: (Предоставлено @Webleeuw)

Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();
9 голосов
/ 05 января 2010

Дополнение к вопросу автора комментария к ответу Вениамина:

Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();
8 голосов
/ 05 января 2010

Также возможно выполнение MSI-файла напрямую с соответствующим приложением. Это происходит, когда вы устанавливаете UseShellExecute в true:

Process.Start(new ProcessStartInfo() 
{ 
    FileName = @"c:\somepath\mySetup.msi", 
    UseShellExecute = true 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...