summaryrefslogtreecommitdiff
path: root/indra/newview/llvelopack.cpp
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2026-09-22 14:47:19 +0800
committerErik Kundiman <erik@megapahit.org>2026-09-22 14:47:19 +0800
commit8557e9659ca5b71aabcbb21758be03a959c2098d (patch)
treee9c2cb659b646169e8d0c502b0ff873fec05ac02 /indra/newview/llvelopack.cpp
parent235a9d87ecf0447bd4aca3287548c715f1ada2ad (diff)
parentf767219366b8dbaeea95a22bd9953a587f473298 (diff)
Merge tag 'Second_Life_Release#f7672193-26.4' into 26.4
Diffstat (limited to 'indra/newview/llvelopack.cpp')
-rw-r--r--indra/newview/llvelopack.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/indra/newview/llvelopack.cpp b/indra/newview/llvelopack.cpp
index 927a5bbc2c..eb849ab52d 100644
--- a/indra/newview/llvelopack.cpp
+++ b/indra/newview/llvelopack.cpp
@@ -46,6 +46,7 @@
#if LL_WINDOWS
#include "llappviewerwin32.h"
#include <windows.h>
+#include <shellapi.h>
#include <shlobj.h>
#include <shobjidl.h>
#include <shlwapi.h>
@@ -984,6 +985,19 @@ static void on_log_message(void* user_data, const char* level, const char* messa
OutputDebugStringA("\n");
}
+static void set_runtime_app_user_model_id()
+{
+ // Ensure taskbar grouping uses a stable ID independent of exe path
+ // (wrapper exe vs current\ exe).
+ const std::wstring app_user_model_id = get_app_user_model_id();
+ HRESULT appid_hr = SetCurrentProcessExplicitAppUserModelID(app_user_model_id.c_str());
+ if (FAILED(appid_hr))
+ {
+ LL_WARNS("Velopack") << "SetCurrentProcessExplicitAppUserModelID failed: 0x"
+ << std::hex << appid_hr << LL_ENDL;
+ }
+}
+
#elif LL_DARWIN
// macOS-specific hooks
@@ -1178,6 +1192,11 @@ static void ensure_update_manager(bool allow_downgrade)
bool velopack_initialize()
{
+#if LL_WINDOWS
+ // Needs to be called on each run for consistent taskbar behavior.
+ set_runtime_app_user_model_id();
+#endif
+
vpkc_set_logger(on_log_message, nullptr);
vpkc_app_set_auto_apply_on_startup(false);