我们可以隐藏由于以下代码填充的窗口,
IntPtr updatedHandle = new IntPtr();
UInt32 openVal = MsiInteract.MsiOpenPackage("C:\\MSIGet.MSI", out updatedHandle); //get handle for the MSI
我有一个C#应用程序,它从.MSI文件中读取了上面代码中使用的一些信息。哪个对我有用,但是在 MsiOpenPackage 函数调用中填充了一个窗口。因为这个函数处于循环中,所以当多个窗口打开时,它对我来说很苛刻。请给我任何方法来隐藏“准备到安装“功能调用窗口 MsiOpenPackage 。
答案 0 :(得分:1)
要取消打开包时显示的用户界面,您需要拨打MsiSetInternalUI,或者,如果您想要显示其他内容,请MsiSetExternalUI。但是,如果您所做的只是阅读Property table或Summary Information Stream中的信息,则只需拨打MsiOpenDatabase而不是MsiOpenPackage,因为这不会开始安装会话,因此不会显示UI。
答案 1 :(得分:0)
使用安静的安装程序您可以避免任何窗口打开以进行用户确认或对话。
string installer = _installer;
System.Diagnostics.Process FProcess = new System.Diagnostics.Process();
FProcess.StartInfo.FileName = "MsiExec.exe";
FProcess.StartInfo.Arguments = "/quiet /i " + installer;
FProcess.StartInfo.UseShellExecute = false;
FProcess.Start();
FProcess.WaitForExit();