如何使用C ++ Windows SDK SDK从Windows Store下载和安装更新?

时间:2019-07-04 14:34:31

标签: windows c++-cx

我正在尝试编写代码,该代码是Windows store中可用的检查更新,然后从那里下载。我正在使用c ++,因此我想使用此页面https://docs.microsoft.com/ru-ru/windows/uwp/packaging/self-install-package-updates中的代码,尤其是方法

  

公共异步任务DownloadAndInstallAllUpdatesAsync()

在那里进行了描述,但是我未能将其转换为C ++。我做了这样的事情:

.h
    Windows::Services::Store::StoreContext^ context = nullptr;
    Concurrency::task<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate ^> ^> updatesTask;
    void DownloadAndInstallAllUpdatesAsync();



.cpp
void myApp::DownloadAndInstallAllUpdatesAsync()
{
    if (context == nullptr)
        context = StoreContext::GetDefault();

    // Get the updates that are available.
    updatesTask = create_task(context->GetAppAndOptionalStorePackageUpdatesAsync());

    std::this_thread::sleep_for(std::chrono::seconds(2));

    updatesTask.then([this](IVectorView<StorePackageUpdate^>^ const &update) {
        if (update->Size > 0) {

            // Download and install the updates.
            IAsyncOperationWithProgress<StorePackageUpdateResult^, StorePackageUpdateStatus>^ downloadOperation =
                context->RequestDownloadAndInstallStorePackageUpdatesAsync(update);
        }
    });
}

但是我在使用此代码时遇到了两个麻烦:

  • 线程没有运行 sleep 两秒钟,我并不总是从异步调用 context-> GetAppAndOptionalStorePackageUpdatesAsync();
  • 在调用 context-> RequestDownloadAndInstallStorePackageUpdatesAsync(update); 之后,出现一个弹出窗口,询问我是要下载更新还是要拒绝此操作,无论选择哪个答案,我都选择了我的应用程序挂...

预先感谢您的帮助

0 个答案:

没有答案