From 9f7d540722740625b2b85c2ec65888fca538ee36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chac=C3=B3n?= Date: Mon, 27 Sep 2021 13:09:30 -0700 Subject: [PATCH] Changes for sample COM caller project (#1514) Some miscellaneous improvements for the sample COM caller project: * Added some help labels and status messages to the UI * Changed toggle button for using WinGetDev to a toggle switch * Rearranged UI elements in screen to separate elements visually and prevent them from jumping around when resizing * Set window size to get rid of all the unneeded whitespace * Set some global UI styles to reduce styling on individual controls * Deleted some unused code and renamed some things to be more consistent * Added needed capability to app manifest * Added copyright headers to files --- .github/actions/spelling/allow.txt | 1 + .../AppInstallerCaller/App.cpp | 4 +- .../AppInstallerCaller/App.h | 4 +- .../AppInstallerCaller/App.xaml | 4 +- .../AppInstallerCaller.vcxproj.filters | 13 +- .../InstallingPackageView.cpp | 2 + .../InstallingPackageView.h | 2 + .../AppInstallerCaller/MainPage.cpp | 130 ++++++++---------- .../AppInstallerCaller/MainPage.h | 27 ++-- .../AppInstallerCaller/MainPage.idl | 2 + .../AppInstallerCaller/MainPage.xaml | 101 +++++++++----- .../AppInstallerCaller/Package.appxmanifest | 7 +- .../AppInstallerCaller/pch.cpp | 4 +- .../AppInstallerCaller/pch.h | 4 +- 14 files changed, 174 insertions(+), 131 deletions(-) diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt index e064075c22..79ba88574a 100644 --- a/.github/actions/spelling/allow.txt +++ b/.github/actions/spelling/allow.txt @@ -475,6 +475,7 @@ stringstream strstr strtoll subcontext +subheader SUBLANG subresource subselect diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.cpp b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.cpp index ca2de8649c..c94152951b 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.cpp +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.cpp @@ -1,4 +1,6 @@ -#include "pch.h" +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#include "pch.h" #include "App.h" #include "MainPage.h" diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.h b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.h index b624c20bbc..af50141a07 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.h +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.h @@ -1,4 +1,6 @@ -#pragma once +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#pragma once #include "App.xaml.g.h" namespace winrt::AppInstallerCaller::implementation diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.xaml b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.xaml index 5f0630756b..8cef30bb57 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.xaml +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/App.xaml @@ -1,4 +1,6 @@ - + Assets - + Assets - + Assets Assets - + Assets - + Assets @@ -51,4 +51,9 @@ + + + {adeebf4e-70b7-41ae-936b-ded00e6e6777} + + \ No newline at end of file diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.cpp b/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.cpp index 135d64f3de..303fc5ff3a 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.cpp +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.cpp @@ -1,3 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. #include "pch.h" #include "InstallingPackageView.h" #include "InstallingPackageView.g.cpp" diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.h b/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.h index 597a13ee72..1e024c9652 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.h +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/InstallingPackageView.h @@ -1,3 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. #pragma once #include "InstallingPackageView.g.h" diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.cpp b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.cpp index ef7601ac97..b62c21fb23 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.cpp +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.cpp @@ -131,8 +131,8 @@ namespace winrt::AppInstallerCaller::implementation } IAsyncAction UpdateUIProgress( - InstallProgress progress, - winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, + InstallProgress progress, + winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, winrt::Windows::UI::Xaml::Controls::TextBlock statusText) { co_await winrt::resume_foreground(progressBar.Dispatcher()); @@ -166,10 +166,10 @@ namespace winrt::AppInstallerCaller::implementation // This method is called from a background thread. IAsyncAction UpdateUIForInstall( - IAsyncOperationWithProgress installPackageOperation, + IAsyncOperationWithProgress installPackageOperation, winrt::Windows::UI::Xaml::Controls::Button installButton, winrt::Windows::UI::Xaml::Controls::Button cancelButton, - winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, + winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, winrt::Windows::UI::Xaml::Controls::TextBlock statusText) { installPackageOperation.Progress([=]( @@ -177,8 +177,7 @@ namespace winrt::AppInstallerCaller::implementation InstallProgress const& progress) { UpdateUIProgress(progress, progressBar, statusText).get(); - }); - + }); winrt::hresult installOperationHr = S_OK; std::wstring errorMessage{ L"Unknown Error" }; @@ -242,19 +241,21 @@ namespace winrt::AppInstallerCaller::implementation PackageManager packageManager = CreatePackageManager(); auto catalogs{ packageManager.GetPackageCatalogs() }; - auto catalog{ packageManager.GetPredefinedPackageCatalog(PredefinedPackageCatalog::MicrosoftStore) }; + auto storeCatalog{ packageManager.GetPredefinedPackageCatalog(PredefinedPackageCatalog::MicrosoftStore) }; + co_await winrt::resume_foreground(button.Dispatcher()); + m_packageCatalogs.Clear(); - for (uint32_t i = 0; i < catalogs.Size(); i++) + for (auto const catalog : catalogs) { - m_packageCatalogs.Append(catalogs.GetAt(i)); + m_packageCatalogs.Append(catalog); } - m_packageCatalogs.Append(catalog); + m_packageCatalogs.Append(storeCatalog); co_return; - } - - IAsyncAction MainPage::GetInstalledPackages(winrt::Windows::UI::Xaml::Controls::Button button) + } + + IAsyncAction MainPage::GetInstalledPackages(winrt::Windows::UI::Xaml::Controls::TextBlock statusText) { int32_t selectedIndex = catalogsListBox().SelectedIndex(); co_await winrt::resume_background(); @@ -282,6 +283,8 @@ namespace winrt::AppInstallerCaller::implementation if (!installedCatalog) { // Connect Error. + co_await winrt::resume_foreground(statusText.Dispatcher()); + statusText.Text(L"Failed to connect to catalog."); co_return; } @@ -290,21 +293,22 @@ namespace winrt::AppInstallerCaller::implementation FindPackagesResult findResult{ TryFindPackageInCatalogAsync(installedCatalog, m_installAppId).get() }; auto matches = findResult.Matches(); - co_await winrt::resume_foreground(button.Dispatcher()); + co_await winrt::resume_foreground(statusText.Dispatcher()); m_installedPackages.Clear(); - for (uint32_t i = 0; i < matches.Size(); ++i) + for (auto const match : matches) { // Filter to only packages that match the selectedCatalogRef - auto version = matches.GetAt(i).CatalogPackage().DefaultInstallVersion(); + auto version = match.CatalogPackage().DefaultInstallVersion(); if (selectedIndex < 0 || (version && version.PackageCatalog().Info().Id() == m_packageCatalogs.GetAt(selectedIndex).Info().Id())) { - m_installedPackages.Append(matches.GetAt(i).CatalogPackage()); + m_installedPackages.Append(match.CatalogPackage()); } } + statusText.Text(L""); co_return; } - IAsyncAction MainPage::GetInstallingPackages(winrt::Windows::UI::Xaml::Controls::Button button) + IAsyncAction MainPage::GetInstallingPackages(winrt::Windows::UI::Xaml::Controls::TextBlock statusText) { int32_t selectedIndex = catalogsListBox().SelectedIndex(); co_await winrt::resume_background(); @@ -316,6 +320,8 @@ namespace winrt::AppInstallerCaller::implementation if (selectedIndex < 0) { // Installing package querying is only really useful if you know what Catalog you're interested in. + co_await winrt::resume_foreground(statusText.Dispatcher()); + statusText.Text(L"No catalog selected."); co_return; } @@ -326,6 +332,8 @@ namespace winrt::AppInstallerCaller::implementation PackageCatalog selectedRemoteCatalog = remoteConnectResult.PackageCatalog(); if (!selectedRemoteCatalog) { + co_await winrt::resume_foreground(statusText.Dispatcher()); + statusText.Text(L"Failed to connect to catalog."); co_return; } @@ -333,6 +341,8 @@ namespace winrt::AppInstallerCaller::implementation PackageCatalog installingCatalog = connectResult.PackageCatalog(); if (!installingCatalog) { + co_await winrt::resume_foreground(statusText.Dispatcher()); + statusText.Text(L"Failed to connect to catalog."); co_return; } @@ -341,22 +351,23 @@ namespace winrt::AppInstallerCaller::implementation FindPackagesResult findResult{ TryFindPackageInCatalogAsync(selectedRemoteCatalog, m_installAppId).get() }; auto matches = findResult.Matches(); - co_await winrt::resume_foreground(button.Dispatcher()); - + co_await winrt::resume_foreground(statusText.Dispatcher()); + m_installingPackageViews.Clear(); - for (uint32_t i = 0; i < matches.Size(); ++i) + for (auto const match : matches) { winrt::AppInstallerCaller::InstallingPackageView installingView; - installingView.Package(matches.GetAt(i).CatalogPackage()); + installingView.Package(match.CatalogPackage()); auto installOperation = packageManager.GetInstallProgress(installingView.Package(), selectedRemoteCatalog.Info()); if (installOperation) { - installingView.Dispatcher(button.Dispatcher()); + installingView.Dispatcher(statusText.Dispatcher()); installingView.AsyncOperation(installOperation); m_installingPackageViews.Append(installingView); } } + statusText.Text(L""); co_return; } @@ -400,15 +411,15 @@ namespace winrt::AppInstallerCaller::implementation } IAsyncAction MainPage::FindPackage( - winrt::Windows::UI::Xaml::Controls::Button button, + winrt::Windows::UI::Xaml::Controls::Button installButton, winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, winrt::Windows::UI::Xaml::Controls::TextBlock statusText) { int32_t selectedIndex = catalogsListBox().SelectedIndex(); if (selectedIndex < 0) { - co_await winrt::resume_foreground(button.Dispatcher()); - button.IsEnabled(false); + co_await winrt::resume_foreground(installButton.Dispatcher()); + installButton.IsEnabled(false); statusText.Text(L"No catalog selected to search."); co_return; } @@ -426,55 +437,41 @@ namespace winrt::AppInstallerCaller::implementation PackageCatalog compositeCatalog = connectResult.PackageCatalog(); if (!compositeCatalog) { - co_await winrt::resume_foreground(button.Dispatcher()); - button.IsEnabled(false); - statusText.Text(L"Failed to Connect to Catalog."); + co_await winrt::resume_foreground(installButton.Dispatcher()); + installButton.IsEnabled(false); + statusText.Text(L"Failed to connect to catalog."); co_return; } + // Do the search. FindPackagesResult findPackagesResult{ TryFindPackageInCatalogAsync(compositeCatalog, m_installAppId).get() }; winrt::IVectorView matches = findPackagesResult.Matches(); if (matches.Size() > 0) { - auto version = matches.GetAt(0).CatalogPackage().InstalledVersion(); - if (version != nullptr) + auto installedVersion = matches.GetAt(0).CatalogPackage().InstalledVersion(); + if (installedVersion != nullptr) { - co_await winrt::resume_foreground(button.Dispatcher()); - button.IsEnabled(false); - statusText.Text(version.ProductCodes().GetAt(0)); + co_await winrt::resume_foreground(installButton.Dispatcher()); + installButton.IsEnabled(false); + statusText.Text(L"Already installed. Product code: " + installedVersion.ProductCodes().GetAt(0)); } else { - co_await winrt::resume_foreground(button.Dispatcher()); - button.IsEnabled(true); + co_await winrt::resume_foreground(installButton.Dispatcher()); + installButton.IsEnabled(true); statusText.Text(L"Found the package to install."); } } else { - co_await winrt::resume_foreground(button.Dispatcher()); - button.IsEnabled(false); - statusText.Text(L"Did not find package"); + co_await winrt::resume_foreground(installButton.Dispatcher()); + installButton.IsEnabled(false); + statusText.Text(L"Did not find package."); } co_return; } - IAsyncOperation MainPage::FindPackageAsync() - { - co_await winrt::resume_background(); - - PackageManager packageManager = CreatePackageManager(); - PackageCatalogReference catalogRef{ packageManager.GetPredefinedPackageCatalog(PredefinedPackageCatalog::OpenWindowsCatalog) }; - PackageCatalog catalog = catalogRef.ConnectAsync().get().PackageCatalog(); - if (!catalog) - { - //Connect error. - co_return nullptr; - } - co_return FindPackageInCatalogAsync(catalog, m_installAppId).get(); - } - void MainPage::SearchButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { m_installAppId = catalogIdTextBox().Text(); @@ -498,37 +495,26 @@ namespace winrt::AppInstallerCaller::implementation m_installPackageOperation.Cancel(); } } - void MainPage::RefreshButtonClickHandler(IInspectable const&, RoutedEventArgs const&) + void MainPage::RefreshInstalledButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { - GetInstalledPackages(installButton()); + GetInstalledPackages(installedStatusText()); } void MainPage::ClearInstalledButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { m_installedPackages.Clear(); } - void MainPage::InstallingRefreshButtonClickHandler(IInspectable const&, RoutedEventArgs const&) + void MainPage::RefreshInstallingButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { - GetInstallingPackages(installButton()); + GetInstallingPackages(installingStatusText()); } void MainPage::ClearInstallingButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { m_installingPackageViews.Clear(); } - IAsyncAction MainPage::StartServer() - { - co_await winrt::resume_background(); - PackageManager packageManager = CreatePackageManager(); - } - void MainPage::StartServerButtonClickHandler(IInspectable const&, RoutedEventArgs const&) - { - StartServer(); - } - void MainPage::ToggleDevButtonClicked(IInspectable const&, RoutedEventArgs const&) + + void MainPage::ToggleDevSwitchToggled(IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&) { - if (toggleDevButton().IsChecked()) - { - m_useDev = toggleDevButton().IsChecked().Value(); - } + m_useDev = toggleDevSwitch().IsOn(); } void MainPage::FindSourcesButtonClickHandler(IInspectable const&, RoutedEventArgs const&) { diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.h b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.h index 4a9362699f..622752d909 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.h +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.h @@ -1,4 +1,6 @@ -#pragma once +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#pragma once #include "InstallingPackageView.h" #include @@ -15,38 +17,29 @@ namespace winrt::AppInstallerCaller::implementation Windows::Foundation::Collections::IObservableVector InstalledApps(); Windows::Foundation::Collections::IObservableVector InstallingPackages(); - void InitializeUI(); - void ToggleDevButtonClicked(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); + void ToggleDevSwitchToggled(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void FindSourcesButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); - void StartServerButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void InstallButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void CancelButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void SearchButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); - void RefreshButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); + void RefreshInstalledButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void ClearInstalledButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); - void InstallingRefreshButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); + void RefreshInstallingButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); void ClearInstallingButtonClickHandler(Windows::Foundation::IInspectable const& sender, Windows::UI::Xaml::RoutedEventArgs const& args); Windows::Foundation::IAsyncAction GetSources(winrt::Windows::UI::Xaml::Controls::Button button); - Windows::Foundation::IAsyncAction GetInstalledPackages(winrt::Windows::UI::Xaml::Controls::Button button); - Windows::Foundation::IAsyncAction GetInstallingPackages(winrt::Windows::UI::Xaml::Controls::Button button); + Windows::Foundation::IAsyncAction GetInstalledPackages(winrt::Windows::UI::Xaml::Controls::TextBlock statusText); + Windows::Foundation::IAsyncAction GetInstallingPackages(winrt::Windows::UI::Xaml::Controls::TextBlock statusText); - Windows::Foundation::IAsyncAction InitializeInstallUI( - std::wstring installAppId, - winrt::Windows::UI::Xaml::Controls::Button installButton, - winrt::Windows::UI::Xaml::Controls::Button cancelButton, - winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, - winrt::Windows::UI::Xaml::Controls::TextBlock statusText); Windows::Foundation::IAsyncAction StartInstall( winrt::Windows::UI::Xaml::Controls::Button installButton, winrt::Windows::UI::Xaml::Controls::Button cancelButton, winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, winrt::Windows::UI::Xaml::Controls::TextBlock statusText); Windows::Foundation::IAsyncAction FindPackage( - winrt::Windows::UI::Xaml::Controls::Button button, + winrt::Windows::UI::Xaml::Controls::Button installButton, winrt::Windows::UI::Xaml::Controls::ProgressBar progressBar, winrt::Windows::UI::Xaml::Controls::TextBlock statusText); - Windows::Foundation::IAsyncOperation FindPackageAsync(); private: Deployment::PackageManager CreatePackageManager(); @@ -59,7 +52,6 @@ namespace winrt::AppInstallerCaller::implementation Windows::Foundation::IAsyncOperation FindPackageInCatalogAsync(Deployment::PackageCatalog catalog, std::wstring packageId); Windows::Foundation::IAsyncOperationWithProgress InstallPackage(Deployment::CatalogPackage package); Windows::Foundation::IAsyncOperation FindSourceAsync(std::wstring packageSource); - Windows::Foundation::IAsyncAction StartServer(); Windows::Foundation::Collections::IObservableVector m_packageCatalogs; Windows::Foundation::Collections::IObservableVector m_installedPackages; @@ -68,7 +60,6 @@ namespace winrt::AppInstallerCaller::implementation std::wstring m_installAppId; Deployment::PackageManager m_packageManager{ nullptr }; bool m_useDev = false; - }; } diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.idl b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.idl index 03ce70670b..5135b5031a 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.idl +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.idl @@ -1,3 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. namespace AppInstallerCaller { [default_interface] diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.xaml b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.xaml index f1cd5e2377..c6222c2e96 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.xaml +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/MainPage.xaml @@ -1,4 +1,6 @@ - + - - - Select catalogs to search - Use WinGetDev - - + + + + + + + + + + + + + + + + + + + Use WinGetDev + + + Select catalog + + + Select catalog to search + - + - - - - - - + + + Install app + + + + + + + - + - - + + + - + + + Installed apps + List installed apps from selected catalog - Installed apps - - + + - + + - - + + + + Installing apps + List apps being installed from selected catalog - Installing apps - - + + - + + - + - + - + diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/Package.appxmanifest b/tools/SampleWinGetUWPCaller/AppInstallerCaller/Package.appxmanifest index 23b203888b..a4f2653665 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/Package.appxmanifest +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/Package.appxmanifest @@ -1,5 +1,9 @@  - + @@ -22,5 +26,6 @@ + \ No newline at end of file diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.cpp b/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.cpp index bcb5590be1..e4b1bd6915 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.cpp +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.cpp @@ -1 +1,3 @@ -#include "pch.h" +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#include "pch.h" diff --git a/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.h b/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.h index 0f3197cb64..228d3d263b 100644 --- a/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.h +++ b/tools/SampleWinGetUWPCaller/AppInstallerCaller/pch.h @@ -1,4 +1,6 @@ -#pragma once +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +#pragma once #include #include #include