为什么我的 MSI 提示管理员权限? [英] Why does my MSI prompt for administrator rights?

查看:75
本文介绍了为什么我的 MSI 提示管理员权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试让我们的 MSI 为非管理员用户工作.

I'm trying get our MSI working for non-admin users.

我正在使用 WixUI_Advanced,但即使我选择仅为您安装",我仍然收到管理员提示:

I'm using WixUI_Advanced, but I'm still getting an admin prompt even when I select "Install just for you":

查看 MSI 日志我可以看到需要提升,但我不知道为什么:

Looking at the MSI logs I can see that elevation is required, but I don't know why:

MSI (s) (68:54) [10:45:25:359]: Product not registered: beginning first-time install
MSI (s) (68:54) [10:45:25:359]: PROPERTY CHANGE: Deleting ALLUSERS property. Its current value is '1'.
MSI (s) (68:54) [10:45:25:359]: Product {32799511-D146-40F4-ACA7-5A76E6E38854} is not managed.
MSI (s) (68:54) [10:45:25:359]: Machine policy value 'AlwaysInstallElevated' is 0
MSI (s) (68:54) [10:45:25:359]: User policy value 'AlwaysInstallElevated' is 0
MSI (s) (68:54) [10:45:25:359]: MSI_LUA: Elevation required to install product, will prompt for credentials

知道为什么提示我输入管理员权限吗?

Any idea why I'm getting prompted for admin rights?

编辑

我创建了一个空的 Wix 项目,使用了 WixUI_Advanced UI,但我遇到了同样的问题:/

I created an empty Wix project, used the WixUI_Advanced UI, and I'm getting the same issue :/

推荐答案

管理员权限提示:在下面的 WiX 示例中,每台机器安装将请求和要求提升,但<强>每用户安装.

Admin Rights Prompt: In the WiX sample below, elevation will be requested and required for per-machine installation, but not for per-user installation.

<小时>

注意:我个人不喜欢每个用户的设置.我发现它们是我主观认为的边缘反模式.它与较差的可维护性(升级、修补等)和许多其他细节有关,例如可疑的文件夹重定向和其他一些令人震惊"的因素.高级安装人员还很好地总结了许多限制:高级安装程序:每用户设置限制.

WiX 问题 5481:我添加了一个答案,但删除了它.它没有正常工作.我查看了 WiX 问题数据库,这是一个已知问题:https://github.com/wixtoolset/issues/issues/5481.NicMay 的最后一条评论看起来很有趣.我在下面做了一个快速模型,结合了他/她的建议并进行了一些修改.

WiX Issue 5481: I added an answer, but deleted it. It didn't work properly. I had a look in the WiX Issues database and this is a known issue: https://github.com/wixtoolset/issues/issues/5481. The last comment from NicMay looked interesting. I made a quick mock-up below incorporating his / her suggestions with some modifications.

免责声明:以下示例存在许多缺陷,仅用作可运行示例".由于我使用的快捷方式快速解决方案,MSI 验证存在问题(使用快捷方式查看文件的安装位置,右键单击并转到 "Properties").自定义安装对话框中的 创建新文件夹" 按钮也有错误.我仍然会发布它,看看它是否对您有帮助:

Disclaimer: The below sample has a number of defects, and is only intended as a "runnable sample". There are issues with MSI validation due to the shortcut quick-solution I used (use the shortcut to see where the file installed, right click and go "Properties"). The "Create New Folder" button in the custom installation dialog also has a bug. I will still post it to see if it helps you:

注意!:创建新的 WiX 项目,添加对 WixUIExtension.dll 的引用,然后关注评论.运行安装程序并单击高级" 以选择按用户或按机器安装.

NB!: Create new WiX project, add reference to WixUIExtension.dll, then follow comments. Run setup and click "Advanced" to select per-user or per-machine install.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

<!--CHANGE #1: Add an UpgradeCode GUID below -->

  <Product Id="*" Name="PerUserOrPerMachine" Language="1033" Version="1.0.0.0"
           Manufacturer="Hobbit" UpgradeCode="PUT-GUID-HERE">    
    <Package InstallerVersion="200" Compressed="yes" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes" />
    <Feature Id="ProductFeature" Title="PerUserOrPerMachine" Level="1" />      

<!--CHANGE #2: Here we channel "hacker" NicMay with his / her dialog event tweaks mentioned in the WiX issue 5481 -->

    <UI>
      <UIRef Id="WixUI_Advanced" />
      <Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="1" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Property="MSIINSTALLPERUSER" Value="{}" Order="2">WixAppFolder = "WixPerMachineFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Event="DoAction" Value="WixSetDefaultPerMachineFolder" Order="3">WixAppFolder = "WixPerMachineFolder"</Publish>
      <Publish Dialog="InstallScopeDlg" Control="Next" Event="DoAction" Value="WixSetDefaultPerUserFolder" Order="3">WixAppFolder = "WixPerUserFolder"</Publish>
    </UI>

    <Property Id="ApplicationFolderName" Value="PerUserPerMachine" />
    <Property Id="WixAppFolder" Value="WixPerMachineFolder" />

<!--CHANGE #3: Add components and files as appropriate -->

    <Directory Id="TARGETDIR" Name="SourceDir">

<!--CHANGE #4: Make sure DesktopFolder is defined -->

      <Directory Id="DesktopFolder" />
      <Directory Id="ProgramFilesFolder">

<!--CHANGE #5: Crucial: Make sure Directory Id is APPLICATIONFOLDER (referenced elsewhere) -->

        <Directory Id="APPLICATIONFOLDER" Name="PerUserOrPerMachine">
          <Component Feature="ProductFeature" Guid="{5A74A1EE-0AD3-4C48-9E6B-4E4E3712A8BB}">

<!--CHANGE #6: Hard coded path below for simplicity, change path or replace construct -->

            <File Source="D:\My Test Files\MyTestApplication.exe">
              <Shortcut Id="AppDesktopShortcut" Name="PerUserOrPerMachine" Directory="DesktopFolder"  />
            </File>

            <RegistryValue Root="HKCU" Key="Software\My Company\My Product" Name="installed" Type="integer" Value="1" KeyPath="yes" />
          </Component>

        </Directory>
      </Directory>
    </Directory>

  </Product>

</Wix>

<小时>

链接:

  • WiX Simple Setup Per User Installer(示例每用户设置 - 不应直接安装到用户配置文件文件夹,而是将安装设置为 ProgramFiles,然后允许 MSI 执行文件夹重定向).
  • WiX Simple Setup Per User Installer (sample per-user setup - should not install directly to user profile folders, but set install to ProgramFiles and then allow MSI to do folder redirection).

这篇关于为什么我的 MSI 提示管理员权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆