Fix XP auto updates

This commit is contained in:
Andy Vandijck 2025-06-29 15:45:49 +02:00
parent 3e0ba6d5c1
commit 0f863e45a3
3 changed files with 11 additions and 13 deletions

View File

@ -40,27 +40,25 @@ WinSparkleDllWrapper::WinSparkleDllWrapper()
temp_file.Write((void *)res_data, res_size);
temp_file.Close();
winsparkle_dll = new wxDynamicLibrary(temp_file_name, wxDL_NOW | wxDL_VERBATIM);
winsparkle_dll = LoadLibraryW(temp_file_name.wc_str());
if (winsparkle_dll != nullptr) {
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"));
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>(winsparkle_dll->GetProcAddress(winsparkle_dll, "win_sparkle_cleanup"));
}
}
WinSparkleDllWrapper::~WinSparkleDllWrapper()
{
HMODULE hmod = winsparkle_dll->Detach();
if (hmod != nullptr) {
while(::FreeLibrary(hmod)) {
wxMilliSleep(50);
if (winsparkle_dll != nullptr) {
while(::FreeLibrary(winsparkle_dll)) {
wxMilliSleep(200);
}
}
delete winsparkle_dll;
if (!temp_file_name) {
return; // No need to delete the file if it was never created.

View File

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

@ -1 +1 @@
Subproject commit d2e68f1641010efb05985e1992bf4c76abaf9947
Subproject commit 855244e2525ccdaff9d0cf534cfa95ef7b549df7