fix(updater): force asInvoker for updater on windows

- use `__COMPAT_LAYER` env var in windows to bypass Installer Detection and run as a normal user anyway
  - set up updater directly after main windows is created
  - check update locks before main window

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
Rachel Powers
2023-06-30 03:00:26 -07:00
parent 00f75e2d54
commit a01a48793c
3 changed files with 44 additions and 18 deletions

View File

@ -96,6 +96,10 @@ void PrismExternalUpdater::checkForUpdates()
auto exe_name = QStringLiteral("%1_updater").arg(BuildConfig.LAUNCHER_APP_BINARY_NAME);
#if defined Q_OS_WIN32
exe_name.append(".exe");
auto env = QProcessEnvironment::systemEnvironment();
env.insert("__COMPAT_LAYER", "RUNASINVOKER");
proc.setProcessEnvironment(env);
#endif
QStringList args = { "--check-only", "--dir", priv->dataDir.absolutePath(), "--debug" };
@ -328,6 +332,10 @@ void PrismExternalUpdater::performUpdate(const QString& version_tag)
auto exe_name = QStringLiteral("%1_updater").arg(BuildConfig.LAUNCHER_APP_BINARY_NAME);
#if defined Q_OS_WIN32
exe_name.append(".exe");
auto env = QProcessEnvironment::systemEnvironment();
env.insert("__COMPAT_LAYER", "RUNASINVOKER");
proc.setProcessEnvironment(env);
#endif
QStringList args = { "--dir", priv->dataDir.absolutePath(), "--install-version", version_tag };