MSI不在C#内运行

时间:2010-01-05 13:51:57

标签: c# windows-installer

我正在尝试使用Proces.Start方法从C#运行MSI文件。 MSI文件很好,因为我可以正常运行,但是当我尝试在某些C#代码中运行MSI文件时,我收到以下错误。

  

“此安装包不能   被打开了。验证包   存在,并且您可以访问它,或者   联系应用程序供应商   验证这是一个有效的窗口   安装程序包“

以下是我用来运行MSI文件的代码......

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

p.WaitForExit();   

如何解决此问题?


好的,我现在明白了。我刚刚更改它以运行使用MSI文件生成的setup.exe文件,而不是运行MSI文件......

3 个答案:

答案 0 :(得分:15)

msi文件无法自行运行。如果双击它们,Windows将启动

msiexec /i PathToYour.msi

您是否尝试过明确地这样做?

示例:(由@Webleeuw提供)

Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();

答案 1 :(得分:9)

除了质疑海报对本杰明回答的评论:

Process p = new Process();
p.StartInfo.FileName = "msiexec";
p.StartInfo.Arguments = "/i PathToYour.msi";
p.Start();

答案 2 :(得分:8)

也可以直接使用关联的应用程序执行.msi文件。将UseShellExecute设置为true时会发生这种情况:

Process.Start(new ProcessStartInfo() 
{ 
    FileName = @"c:\somepath\mySetup.msi", 
    UseShellExecute = true 
});