electron-userland / electron-builder

A complete solution to package and build a ready for distribution Electron app with “auto update” support out of the box

Home Page:https://www.electron.build

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

msiWrapped installer target causes seemingly unnecessary UAC prompt

robatwilliams opened this issue · comments

  • Electron-Builder Version: 24.13.3
  • Node Version: v20.5.1
  • Electron Version: 30.0.5
  • Electron Type (current, beta, nightly): current
  • Target: msiWrapped

I understand the msiWrapped target wraps an NSIS installer inside an MSI.

The produced MSI causes a Windows UAC prompt when opened, which doesn't seem justified. I believe it should only be necessary later if the user chooses to install for all users.

I notice in the eventual NSIS dialog that the "all users" option doesn't require UAC elevation, presumably because it's already running elevated.

I tried setting msiWrapped.impersonate: true to cause the WiX action to run as the local user, however the UAC prompt remains. Verified what appears in the project.wxs file:

<CustomAction Id="RunInstaller" Return="check" Execute="deferred"
      HideTarget="no" Impersonate="yes" BinaryKey="WrappedExe" ExeCommand="" />

After setting this option, I further noticed that the "all users" install option in the eventual NSIS dialog is now an elevation (shield icon) button, but when clicked pops up an error dialog "This file does not have an app associated with it for performing this action. Please install an app or, if one is already installed, create an association in the Default Apps Settings page." - the title of the dialog box is "C:\Windows\Installer\MSIE1C4.tmp" which is the NSIS installer just with a different file extension.

When that temporarily unpacked NSIS installer is renamed to .exe and run separately, it doesn't cause an UAC prompt. So it appears that the MSI wrapper is causing the prompt.