Shell执行中的静默MSI执行
Quiet MSI Exec from Shell Execute
我在"悄悄"安装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(NULL, argmnt, run, params, NULL, SW_SHOW);
有人有什么想法吗?
Msi文件不是可执行文件,因此请尝试将运行参数"msiexec.exe"和指向带有/qn(完全静音)或/qb(仅带进度条)的Msi文件的params参数路径传递给
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");
正确的方法是使用ShellExecuteEx()。在调用它之前,您需要准备SHELLEXECUTEINFO数据结构。然后,您可以将lpParameters成员用于"/quiet"标志。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 将执行、作业和WinAPI相乘
- 对字符数组中的元素执行逐位操作
- 从Qt应用程序执行MSI文件
- Shell执行中的静默MSI执行