问题
I created an MSI with WIX that needs elevated permissions to work correctly. In the MSI Project, I specified this via
<Package [...] InstallPrivileges="elevated" />
Now I included this MSI in a custom bootsrapper project, based on WixWPF Bootstrapper. As I understand it, the bootstrapper itself should not alter the machine state and thus should not require elevated privileges.
I would now expect the Bootstrapper to automatically launch the integrated MSI with elevated priviliges, prompting the user with a UAC dialog, if necessary. But it does not. Instead, the installation just fails. It works however, when I run the bootstrapper executable explicitly as administrator.
How do I make the bootstrapper ask for elevated permissions when installing the MSI?
回答1:
Since the INSTALLSCOPE attribute for the MSI was not set, it defaulted to Per-User install and the bootstrapper application considered that it does not need any ADMIN/Elevated rights to run it.
Now in your case, you are the author of the MSI and it was easy enough for you to add the InstallScope to the package element.
InstallScope="perMachine"
If you are not the author of the MSI, still bootstrapper provides a property which you can use to force the per-machine for the MSI/EXE.
- MSIPackage - ForcePerMachine
- EXEPackage - PerMachine
So why does Bootstrapper think that Per-Machine install needs elevated privileges and Per-User doesnt? Simple enough, per-user installation the registry value is written under HKEY_CURRENT_USER and for Per-machine installation the registry value is written under HKEY_LOCAL_MACHINE. Only Admin users can read/write to HKLM.
来源:https://stackoverflow.com/questions/26613030/wix-burn-bootstrapper-not-asking-for-admin-rights-for-my-msi