我正在尝试使用Proces.Start方法从C#运行MSI文件。 MSI文件很好,因为我可以正常运行,但是当我尝试在某些C#代码中运行MSI文件时,我收到以下错误。
“此安装包不能 被打开了。验证包 存在,并且您可以访问它,或者 联系应用程序供应商 验证这是一个有效的窗口 安装程序包“
以下是我用来运行MSI文件的代码......
Process p = Process.StartApplication.StartupPath "/Packages/Name.msi");
p.WaitForExit();
如何解决此问题?
答案 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
});