Windows mobile下如何程序控制CAB的安装
2009-09-10 20:31
369 查看
最近在负责一个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);
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);
相关文章推荐
- 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程
- windows mobile 6 如何自动安装多个cab包---纠结
- 如何用程序运行CAB安装文件
- 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程
- Windows Mobile 程序如何打包(制作安装程序)
- WinCE CAB Manager制作的安装包提示"您已经安装的程序可能无法正常显示,因为它是专门用于上一版本Windows Mobile 软件的"
- 如何通过组策略控制安装chrome扩展程序?
- Windows Mobile 程序如何打包(制作安装程序)
- 如何制作WinCE程序安装包(cab压缩包)
- 如何在 SQL Server 2005 中为安装程序增加计数器注册表项值
- iOS,如何卸载模拟器上安装的程序
- 如何更改桌面、程序默认安装路径
- 如何在Chrome浏览器安装chrome应用商店外的第三方扩展程序
- 如何用VS2005制作Web安装程序
- [转]如何用VS2005制作Web安装程序
- 在没有内置Google Map add-on的Android真机上如何安装地图程序呢?
- 如何在 SQL Server 2005 中为安装程序增加计数器注册表项值
- 在Linux下如何通过源码安装程序
- 64bit centos 如何通过yum安装32bit的程序
- 如何解决ASP.NET程序安装到繁体系统上的乱码问题