mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
bootstrapper: handle the unhandled
This commit is contained in:
committed by
Andrey Nekrasov
parent
305a04ce69
commit
c2d6f740a1
@@ -91,7 +91,8 @@ std::unordered_set<CmdArgs> parseCmdArgs(const int nCmdArgs, LPWSTR* argList)
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|
||||||
|
int bootstrapper()
|
||||||
{
|
{
|
||||||
using namespace localized_strings;
|
using namespace localized_strings;
|
||||||
winrt::init_apartment();
|
winrt::init_apartment();
|
||||||
@@ -215,7 +216,7 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
progressParams.progress = min(0.99f, progressParams.progress + 0.001f);
|
progressParams.progress = std::min(0.99f, progressParams.progress + 0.001f);
|
||||||
notifications::update_progress_bar_toast(TOAST_TAG, progressParams);
|
notifications::update_progress_bar_toast(TOAST_TAG, progressParams);
|
||||||
}
|
}
|
||||||
} }.detach();
|
} }.detach();
|
||||||
@@ -257,6 +258,9 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|||||||
{
|
{
|
||||||
updateProgressBar(.5f, INSTALLING_DOTNET);
|
updateProgressBar(.5f, INSTALLING_DOTNET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
if (installDotnet &&
|
if (installDotnet &&
|
||||||
!updating::dotnet_is_installed() &&
|
!updating::dotnet_is_installed() &&
|
||||||
!updating::install_dotnet(cmdArgs.contains(CmdArgs::silent)) &&
|
!updating::install_dotnet(cmdArgs.contains(CmdArgs::silent)) &&
|
||||||
@@ -264,6 +268,11 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|||||||
{
|
{
|
||||||
notifications::show_toast(DOTNET_INSTALL_ERROR, TOAST_TITLE);
|
notifications::show_toast(DOTNET_INSTALL_ERROR, TOAST_TITLE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
MessageBoxW(nullptr, L".NET Core installation", L"Unknown exception encountered!", MB_OK | MB_ICONERROR);
|
||||||
|
}
|
||||||
|
|
||||||
updateProgressBar(.75f, INSTALLING_NEW_VERSION);
|
updateProgressBar(.75f, INSTALLING_NEW_VERSION);
|
||||||
|
|
||||||
@@ -294,3 +303,27 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return bootstrapper();
|
||||||
|
}
|
||||||
|
catch (const std::exception& ex)
|
||||||
|
{
|
||||||
|
MessageBoxA(nullptr, ex.what(), "Unhandled stdexception encountered!", MB_OK | MB_ICONERROR);
|
||||||
|
}
|
||||||
|
catch (winrt::hresult_error const& ex)
|
||||||
|
{
|
||||||
|
winrt::hstring message = ex.message();
|
||||||
|
MessageBoxW(nullptr, message.c_str(), L"Unhandled winrt exception encountered!", MB_OK | MB_ICONERROR);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
auto lastErrorMessage = get_last_error_message(GetLastError());
|
||||||
|
std::wstring message = lastErrorMessage ? std::move(*lastErrorMessage) : L"";
|
||||||
|
MessageBoxW(nullptr, message.c_str(), L"Unknown exception encountered!", MB_OK | MB_ICONERROR);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define NOMINMAX
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
|
|||||||
@@ -403,8 +403,13 @@ void notifications::show_toast_with_activations(std::wstring message,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
notifier.Show(notification);
|
notifier.Show(notification);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void notifications::update_progress_bar_toast(std::wstring_view tag, progress_bar_params params)
|
void notifications::update_progress_bar_toast(std::wstring_view tag, progress_bar_params params)
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ inline std::vector<wil::unique_process_handle> getProcessHandlesByName(const std
|
|||||||
|
|
||||||
handleAccess |= PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ;
|
handleAccess |= PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ;
|
||||||
for (const DWORD processId : processIds)
|
for (const DWORD processId : processIds)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
wil::unique_process_handle hProcess{ OpenProcess(handleAccess, FALSE, processId) };
|
wil::unique_process_handle hProcess{ OpenProcess(handleAccess, FALSE, processId) };
|
||||||
wchar_t name[MAX_PATH + 1];
|
wchar_t name[MAX_PATH + 1];
|
||||||
@@ -38,5 +40,9 @@ inline std::vector<wil::unique_process_handle> getProcessHandlesByName(const std
|
|||||||
result.push_back(std::move(hProcess));
|
result.push_back(std::move(hProcess));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user