Windows mobile下如何程序控制CAB的安装

最近在负责一个App Store客户端的开发,其中一个特性就是App Store Client要负责Native App和Widget的管理。对于Widget的管理来说,因为widget是进程内运行,安装、运行都是受App Store Client控制,Native App的安装过程是系统执行的,不受App Store Client进程控制,当App Store Client下载了一个Native App后,如何自动触发安装过程,如何在Native App安装完毕后,即时在App Store Client的桌面上创建出相应的图标出来。

1. 如何在程序中安装Cab包

     在Windows和Windows Mobile下,ShellExecute(Ex)函数支持打开文件,文件夹等操作,他的参数是SHELLEXECUTEINFO结构体,我们关注lpFile和lpParameters两个参数即可。看看下面的例子,大家也就明白了,如果还不明白可以参考MSDN文档。

 

 

     SHELLEXECUTEINFO ShellInfo;
     memset(&ShellInfo, 0,  sizeof (ShellInfo));
     ShellInfo.cbSize =  sizeof (ShellInfo);
     ShellInfo.hwnd = NULL;
     ShellInfo.lpVerb = _T(" open ");
     ShellInfo. lpFile  = _T(" //program files//versions//Cwidget.cab ");
     ShellInfo.nShow = SW_HIDE;
     ShellInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
     ShellInfo. lpParameters  = _T (" //Windows//wceload.exe " ); 
 
//安装进程启动失败,做失败处理
     if(!ShellExecuteEx(&ShellInfo))
     {
         int error = GetLastError();
        ProcessFailEvent();
         return;
     }
    
2.如何检测安装什么时候结束?
    ShellExecuteEX创建了独立的进程,在SHELLEXECUTEINFO结构体中有一个成员变量就是hProcess,用来指示新创建的进程。我们可以通过WaitForSingleObject函数来等待安装的操作,当安装结束后,事件触发,我们就可以继续处理其他的事情了,比如更新我们的桌面、启动应用。

     WaitForSingleObject(ShellInfo.hProcess,INFINITE);
     
      //我们可以去增加新的图标的处理了
     //ProcessPostInstallEvent();
     MessageBox(_T("Install OK"),_T("Information"),MB_OK);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值