技术开发 频道

如何通过CSP编程卸载Windows Mobile应用程序

 【IT168技术文档】

 摘要

 和Windows PC一样,Windows Mobile中也提供了删除应用程序的控制面板项,但是有时候我们需要在程序中去卸载另外的程序,或者卸载应用程序本身,这样的情况在企业级应用里十分常见。这时需要用到系统配置服务文件CSP(Configuration Service Providers)。本文介绍了如何使用CSP在程序中卸载Windows Mobile上安装的应用程序。

 最简单的解决方案

 如果不使用CSP,可以在程序中调出系统自带的删除程序的控制面板项,如图1

 图1

 这种方式比较简单,下面的代码实现了这个功能:

 

  ProcessStartInfo startInfo = new ProcessStartInfo();

 startInfo.FileName = @"\Windows\ctlpnl.exe";

 startInfo.Arguments = "cplmain.cpl,10";

 Process.Start(startInfo);

 关于如何调用系统自带的控制面板可参考这篇文章:

 http://www.cnblogs.com/fox23/archive/2008/11/14/showing-windows-mobile-control-panel-programmatically.html

 CSP简介

 虽然上面这种丢给用户一个标准界面的方法很简单,但它不能在程序中直接控制删除特定的程序。如果你是公司的IT管理员,我想你应该不会让这种情况发生,这时就需要用到CSP了。那什么是CSP呢?CSP(Configuration Service Providers)是一组通过XML来查询和修改系统设置的接口。这里的XML文件我们把它叫做OMA Client Provisioning (WAP-based) XML File。Windows Mobile上面目前对CSP的支持情况可查阅本文:

 

  http://msdn.microsoft.com/en-us/library/bb737536.aspx

 Windows Mobile为投递类似WAP-PUSH的CSP XML文件提供了编程接口:

 HRESULT DMProcessConfigXML(

 LPCWSTR pszWXMLin,

 DWORD dwFlags,

 LPWSTR* ppszwXMLout

 );

 该函数定义在头文件Cfgmgrapi.h中。

 下面的例子演示了如何通过CSP添加一个IE收藏夹项:

 

 //定义XML provision file

 LPCWSTR g_wszFavoriteXml =

 L"<wap-provisioningdoc> "

 L"   <characteristic type=\"BrowserFavorite\"> "

 L"      <characteristic type=\"CNBlog\"> "

 L"         <parm name=\"URL\" value=\"http://www.cnblogs.com//> "

 L"      </characteristic> "

 L"   </characteristic>"

 L"</wap-provisioningdoc>";

 HRESULT AddFavorite()

 {

 HRESULT hr         = E_FAIL;

 LPWSTR wszOutput   = NULL;

 hr = DMProcessConfigXML(g_wszFavoriteXml, CFGFLAG_PROCESS, &wszOutput);

 // 删除这里没用到的返回值,它仍是一个XML串

 delete [] wszOutput;

 return hr;

 }

 在Windows Mobile 5以后的设备中也提供了这个方法的托管封装,即ConfigurationManage类的ProcessConfiguration静态方法。

0
相关文章