Fix winsparkle

Fix winsparkle
This commit is contained in:
Andy Vandijck 2025-06-28 21:12:32 +02:00
parent b82e7a3b66
commit 90980741e2
2 changed files with 10 additions and 9 deletions

View File

@ -40,22 +40,23 @@ WinSparkleDllWrapper::WinSparkleDllWrapper()
temp_file.Write((void *)res_data, res_size);
temp_file.Close();
winsparkle_dll = LoadLibraryW(temp_file_name.wc_str());
winsparkle_dll = new wxDynamicLibrary(temp_file_name, wxDL_NOW | wxDL_VERBATIM);
if (winsparkle_dll != nullptr) {
winsparkle_init = reinterpret_cast<func_win_sparkle_init>(GetProcAddress(winsparkle_dll, "win_sparkle_init"));
winsparkle_check_update_with_ui = reinterpret_cast<func_win_sparkle_check_update_with_ui>(GetProcAddress(winsparkle_dll, "win_sparkle_check_update_with_ui"));
winsparkle_set_appcast_url = reinterpret_cast<func_win_sparkle_set_appcast_url>(GetProcAddress(winsparkle_dll, "win_sparkle_set_appcast_url"));
winsparkle_set_app_details = reinterpret_cast<func_win_sparkle_set_app_details>(GetProcAddress(winsparkle_dll, "win_sparkle_set_app_details"));
winsparkle_cleanup = reinterpret_cast<func_win_sparkle_cleanup>(GetProcAddress(winsparkle_dll, "win_sparkle_cleanup"));
winsparkle_init = reinterpret_cast<func_win_sparkle_init>(winsparkle_dll->GetSymbol("win_sparkle_init"));
winsparkle_check_update_with_ui = reinterpret_cast<func_win_sparkle_check_update_with_ui>(winsparkle_dll->GetSymbol("win_sparkle_check_update_with_ui"));
winsparkle_set_appcast_url = reinterpret_cast<func_win_sparkle_set_appcast_url>(winsparkle_dll->GetSymbol("win_sparkle_set_appcast_url"));
winsparkle_set_app_details = reinterpret_cast<func_win_sparkle_set_app_details>(winsparkle_dll->GetSymbol("win_sparkle_set_app_details"));
winsparkle_cleanup = reinterpret_cast<func_win_sparkle_cleanup>(winsparkle_dll->GetSymbol("win_sparkle_cleanup"));
}
}
WinSparkleDllWrapper::~WinSparkleDllWrapper()
{
if (winsparkle_dll != nullptr) {
while(::FreeLibrary(winsparkle_dll)) {
HMODULE hmod = winsparkle_dll->Detach();
if (hmod != nullptr) {
while(::FreeLibrary(hmod)) {
wxMilliSleep(50);
}
}

View File

@ -20,7 +20,7 @@ private:
WinSparkleDllWrapper();
~WinSparkleDllWrapper();
HMODULE winsparkle_dll;
wxDynamicLibrary *winsparkle_dll;
func_win_sparkle_init winsparkle_init = nullptr;
func_win_sparkle_check_update_with_ui winsparkle_check_update_with_ui = nullptr;