【问题标题】:Why does my MSI prompt for administrator rights?为什么我的 MSI 提示输入管理员权限?
【发布时间】:2019-06-02 07:10:18
【问题描述】:

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

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

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

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

知道为什么我会收到管理员权限提示吗?


编辑

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

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    管理员权限提示:在下面的 WiX 示例中,per-machine 安装将请求并要求提升,但对于 按用户安装。


    提示:我个人不喜欢按用户设置。在我的主观意见中,我发现它们是临界的反模式。它与较差的可维护性(升级、修补等)和许多其他细节有关,例如可疑的文件夹重定向和其他一些“令人震惊”的因素。高级安装人员也很好地总结了一些限制:Advanced Installer: per-user setup limitations。


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

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

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

    <?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 进行文件夹重定向)。

    【讨论】:

    • 不要抱太大希望,总会有意想不到的问题。祝你好运。请记住,按用户设置存在许多问题。
    • 像魅力一样工作,非常感谢 :) 啊,是的,限制。我们的客户希望每个用户安装,所以这就是我们必须要做的:/ 我们将看看我们当前的 MSI 是否打破了这些限制。
    • 您必须在浏览自定义安装部分对话框中尝试该按钮,它无法正常工作(我记得)。您可以将其隐藏并让人们输入路径-也许?我不知道。应该可以正确修复。
    • 我们想要的唯一高级 UI 是在机器范围和每个用户安装之间进行选择。我将隐藏其他所有内容,所以我们应该没事吧?
    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2014-12-24
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多