我在安静地安装MSI时遇到了一些麻烦。我可以让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:
ShellExecute(NULL, argmnt, run, params, NULL, SW_SHOW);
有没有人有任何想法?
答案 0 :(得分:1)
Msi文件不是可执行文件,因此请尝试传递给您的运行参数“msiexec.exe”并使用/ qn(完全静默)或/ qb(仅限进度条)将参数路径传递到您的msi文件:< / p>
wcscpy_s(run, "msiexec.exe");
wcscpy_s(params, L"C:\\Users\\");
wcscpy_s(params, username);
wcscpy_s(params, L"\\AppData\\Local\\Temp\\index.msi /qn");
答案 1 :(得分:0)
正确的方法是给我们ShellExecuteEx()。在调用它之前,您需要准备SHELLEXECUTEINFO数据结构。 然后,可以将 lpParameters 成员用于“ / quiet” 标志。