用BITS来升级你的应用程序

ZDNet软件频道 时间:2003-08-15 作者:ZDNet China |  我要评论()
本文关键词:
Windows XP及其后续版本提供了一种叫着BITS的新服务,它允许用户在后台下载或者上传大文件,当传输结束时,用户会得到相应通知。我们甚至还可以利用BITS服务来自动完成应用程序的升级。
本文译自Builder.com,未经许可请勿转载你的客户会不会因为程序经常需要上网升级而感到疯狂?Windows XP及其后续版本提供了一种叫着BITS的新服务,它允许用户在后台下载或者上传大文件,当传输结束时,用户会得到相应通知。我们甚至还可以利用BITS服务来自动完成应用程序的升级。

使用BITS的第一步就是把任务注册到队列之中。

//不要忘记要包括Bits.h文件
//忽略错误校验

HRESULT hr = 0;
IBackgroundCopyManager* TransManager = NULL;
IBackgroundCopyJob *pCopyJob = NULL;
GUID ID;

//这里是你的线程模型
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

//设置impersonation 等级为RPC_C_IMP_LEVEL_IMPERSONATE
hr = CoInitializeSecurity(NULL, -1, NULL, NULL,
                                                  RPC_C_AUTHN_LEVEL_CONNECT,
                                                  RPC_C_IMP_LEVEL_IMPERSONATE,
                                                  NULL, EOAC_NONE, 0);

//创建一个IbackgroundCopyManager实例。
hr = CoCreateInstance(__uuidof(BackgroundCopyManager), NULL,
                                         CLSCTX_LOCAL_SERVER,
                                        __uuidof(IBackgroundCopyManager),
                                        (void**) &TransManager);


hr = TransManager->CreateJob(L"DemoJob",
                                                         BG_JOB_TYPE_DOWNLOAD,
                                                         &ID, &pCopyJob);

//向该任务添加一个文件。
hr = pCopyJob->AddFile(L"http://MyServer/Path/MyFile.Ext",
 L"c:PathMyFile.Ext");

BITS功能的一个主要限制就是服务器的内容不能是动态的。例如,你不能向这样指定一个URL:http://www.myserver.com/Update.asp?CurrentVersion=1.0;服务器要么向你提供正确的版本要么通知你你的版本足够新。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134