以编程方式运行msi时msi退出代码1625的问题

时间:2011-01-07 21:19:55

标签: windows-installer windows-server-2008 msiexec

退出代码1625是“系统策略禁止此安装。请与您的系统管理员联系。”

我正在做的就是这样说:

Process installProcess = Process.Start(msiPath, "/quiet");

如果我手动打开它,我可以运行msi。这是在Windows Server 2008上...

这样做的目的是使用最新版本自动更新我的.net表单程序。任何人都知道导致这种情况的设置是什么?我的意思是,客户端将使用vista / 7 / xp,但我仍然需要知道哪种安全设置会破坏我的计划。

1 个答案:

答案 0 :(得分:2)

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = "/i " +  "\""+Directory.GetCurrentDirectory()+"\\"+msiPath +"\"" +" /q";
startInfo.FileName = "msiexec.exe";
startInfo.Verb = "runas";


Process installProcess = Process.Start(startInfo);

以这种方式调用msi就可以了。

我认为原来是某种UAC问题。 runas动词以某种方式提升了程序的权限。即使我的UAC提示在服务器2008上被禁用,我仍然必须这样做才能解决它...奇怪吧?