C++ 来自Shell Execute的静默MSI Exec

C++ 来自Shell Execute的静默MSI Exec,c++,windows,shellexecute,windows-installer,C++,Windows,Shellexecute,Windows Installer,我有一些麻烦让微星安装“安静”。我可以让MSI正常运行,如下所示: TCHAR argmnt[] = TEXT("open"); TCHAR username[UNLEN + 1]; DWORD size = UNLEN + 1; GetUserName((TCHAR*)username, &size); wchar_t run[256]; wcscpy_s(run, L"C:\\Users\\"); wcscat_s(run, username); wcscat_s(run, L"\\

我有一些麻烦让微星安装“安静”。我可以让MSI正常运行,如下所示:

TCHAR argmnt[] = TEXT("open");
TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);
wchar_t run[256];
wcscpy_s(run, L"C:\\Users\\");
wcscat_s(run, username);
wcscat_s(run, L"\\AppData\\Local\\Temp\\index.msi");
ShellExecute(NULL, argmnt, run, NULL, NULL, SW_SHOW);
但如果我在最后一行添加“/quiet”,如下所示:

wcscat_s(run, L"\\AppData\\Local\\Temp\\index.msi /quiet");
它根本不会安装MSI。我尝试添加一个带有如下参数的TCHAR变量:

TCHAR params[] = TEXT("/quiet");
ShellExecute(NULL, argmnt, run, params, NULL, SW_SHOW);
使用更新的Shell,执行如下操作:

TCHAR params[] = TEXT("/quiet");
ShellExecute(NULL, argmnt, run, params, NULL, SW_SHOW);

有人有什么想法吗?

Msi文件不是可执行文件,因此请尝试使用/qn(完全静默)或/qb(仅使用进度条)将运行参数“msiexec.exe”和参数路径传递到Msi文件:

正确的方法是对我们()。在调用之前,先准备好数据结构。
然后您可以使用lpParameters成员作为“/quiet”标志。

您是否尝试了'argmnt'@LuckyChingi中的quite开关是的,这也不起作用。对不起!第四个选项是参数-HINSTANCE ShellExecute(在_optHwnd HWND、在_optLPCTSTR lpOperation、在_optLPCTSTR lpFile、在_optLPCTSTR lpParameters、在_optLPCTSTR lpDirectory、在INT nShowCmd中);这就是为什么我试图把它放在那里,但仍然没有运气