如何用程序运行CAB安装文件

    技术2022-05-12  6

    最近这个东西很多被问及,软件动态升级的时候可能可以用到,在这里做一下记录。

    就知道的方法有2个, 一个是通过ShellExecuteEx直接运行对应的CAB文件。一个是调用CreateProcess用wceload来调用这个CAB。 两个方法都可以,下面是写的测试程序中的代码:

     

    case ID_HELP_INSTALL1: { // Specify an action for the application to perform, flags and other parameters SHELLEXECUTEINFO info; info.cbSize = sizeof(info); info.fMask = SEE_MASK_FLAG_NO_UI; info.hwnd = NULL; info.lpVerb = _T("open"); info.lpFile = _T("//Program Files//RunCAB//SampleCAB1.CAB"); info.lpParameters = _T(""); info.lpDirectory = _T(""); info.nShow = SW_SHOW; info.hInstApp = g_hInst; // Call to perform an action ShellExecuteEx(&info); break; } case ID_HELP_INSTALL2: { LPTSTR szCmdline = _tcsdup( TEXT("/"//Program Files//RunCAB//SampleCAB2.CAB/"")); CreateProcess(_T("wceload.exe"),szCmdline,NULL,NULL,FALSE,INHERIT_CALLER_PRIORITY,NULL,NULL,NULL,NULL); break; }

     

    这个测试程序用不同的menuitem做了不同的尝试, 上述的两个实现都是可以工作的。需要注意的事情是上面的CreateProcess需要把含有空格路径参数用引号括起来。


    最新回复(0)