MFC ShellExecuteEx 不能调用 msi文件,该怎么处理
MFC ShellExecuteEx 不能调用 msi文件
上代码:
这段代码是是能够成功的安装快播的,但是就是运行中间的那个 msi的时候,程序弹出一个对话框,里面是各种文字(安装的说明啊啥的),但是点击下面的确定后,没有任何反应。
为毛不能 .exe 就能安装, .msi就不能安装呢??
那怎么才能安装 .msi文件呢?
------解决方案--------------------
“MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。”
------解决方案--------------------
使用msiexec来安装msi文件。直接在命令行里运行msiexec,会有使用说明。
------解决方案--------------------
就是说,你传的参数不对,所以他弹出一个框告诉你应该传什么参数
如果你传对了,就能跑起来了
------解决方案--------------------
用system试试。
上代码:
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T("快播_5.19.211.EXE");
// ShExecInfo.lpFile = _T("mysql-installer-community-5.6.10.1.msi");
ShExecInfo.lpParameters = _T("-f train");
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
BeginWaitCursor();
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
EndWaitCursor();
这段代码是是能够成功的安装快播的,但是就是运行中间的那个 msi的时候,程序弹出一个对话框,里面是各种文字(安装的说明啊啥的),但是点击下面的确定后,没有任何反应。
为毛不能 .exe 就能安装, .msi就不能安装呢??
那怎么才能安装 .msi文件呢?
------解决方案--------------------
“MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。”
------解决方案--------------------
使用msiexec来安装msi文件。直接在命令行里运行msiexec,会有使用说明。
------解决方案--------------------
就是说,你传的参数不对,所以他弹出一个框告诉你应该传什么参数
如果你传对了,就能跑起来了
------解决方案--------------------
用system试试。