admin管理员组文章数量:1516870
在编写应用程序宿主程序(支持自动部署与自动升级)时,需要在安装过程中安装vc runtime以及python环境,所以调用想调用 ""\"c:/windows/system32/msiexec.exe\" /i E:/Software/python-3.3.0.msi"".总是弹出“无法打开此安装程序包。请确认该程序包存在,并且您有权访问它,或者与应用程序供应商联系,以确认这是一个有效的 Windows Installer 程序包。”,经过两天的测试,终于摸索出以下规律.调用流程如下:
char szCommandLine[MAX_PATH] = "\"c:/windows/system32/msiexec.exe\" /i E:/Software/python-3.3.0.msi";
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
if(CreateProcess(NULL,szCommandLine,NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
1、char szCommandLine[MAX_PATH] = "\"c:/windows/system32/msiexec.exe\" /i E:/Software/python-3.3.0.msi" : 出错
3、
char szCommandLine[MAX_PATH] = "\"c:/windows/system32/msiexec.exe\" /i E:\\Software\\python-3.3.0.msi" : 正确
4、
char szCommandLine[MAX_PATH] = "\"c:/windows/system32\\msiexec.exe\" /i E:\\Software\\python-3.3.0.msi" : 正确
5、
char szCommandLine[MAX_PATH] = "\"c:/windows\\system32\\msiexec.exe\" /i E:\\Software\\python-3.3.0.msi" : 正确
6、
char szCommandLine[MAX_PATH] = "\"c:\\windows\\system32\\msiexec.exe\" /i E:\\Software\\python-3.3.0.msi" : 正确
结论:
对于"msiexec"而言,解析安装包目录时,驱动符号后面的目录分隔符必须是'\\'而不能是'/'。也再一次印证了原先的感概:微软,我心中永远
的
痛
- 错与不错看心情,导与不导看运气,有时是向导,有时是误导。
版权声明:本文标题:Msiexec困境破解指南:确保包存在与访问权限! 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1771141593a3262208.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论