【问题标题】:Cannot run msi as administartor无法以管理员身份运行 msi
【发布时间】:2016-06-07 10:32:23
【问题描述】:

我写了一个处理注册表的 msi。所以,我必须以管理员身份运行 msi。

当我直接点击并启动 Msi 时,我得到以下错误来修改 ini 文件“访问路径被拒绝”

如果我从命令提示符启动 msi,它工作正常(以管理员身份右键单击。)

我尝试了以下所有建议,但没有一个有效。请协助如何以管理员身份运行 msi。

Package Id="*" InstallerVersion="200" Compressed="yes" Platform="$(var.Platform)" InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine"

CustomAction Id="UpgradeSelectedVersion" BinaryKey="CustomAction" DllEntry="UpgradeSelectedVersion" Execute="deferred" Impersonate="no"

属性 ID="ALLUSERS" 值 ="1"

属性 ID="ALLUSERS" 值 ="2"

【问题讨论】:

    标签: wix


    【解决方案1】:

    该自定义操作被延迟,这意味着它必须在 InstallExecuteSequence 中运行,如果您拥有每台计算机的 InstallScope 和提升的权限,则应该提升并使用系统帐户运行。

    1. 不要乱用 ALLUSERS 属性,因为 WiX 只是做正确的事。 InstallScope 每台机器和提升的权限将使其工作。如果您不小心将其与 ALLUSERS 混为一谈,将其变成了每个用户的安装,那么它将不会被提升并且会失败。

    2. 您应该会在 UI 序列之后看到一个 UAC 提升对话框。如果您没有看到此对话框,则不会提升安装。同样,这可能与您更改 ALLUSERS 有关。如果您在静默模式下安装它,那么它也会失败,因为静默确实意味着静默,并且它不会显示提升对话框,您的 CA 也不会运行提升。

    3. 您失败的自定义操作可能不是您发布的操作,该操作被推迟,因此在提升提示之后。如果您在 UI 序列中有自定义操作,那么它不会被提升(除非您从提升的提示符运行 MSI),这样可以解释您看到的问题。

    【讨论】:

    • 我删除了 ALLUSERS 属性,但它仍然没有在管理员权限下运行。我也没有看到 UAC 提升对话框。
    【解决方案2】:

    尝试以下方法:

    <Property Id="MSIUSEREALADMINDETECTION" Value="1" />
    

    否则,您可以将安装程序包装在 wix 管理的引导程序应用程序中,不过需要做更多工作。然后将设置添加到清单文件中。

    【讨论】:

    • 我试过这个属性,它仍然没有在管理员下运行。 WIX msi 不是由 WIx 引导程序应用程序管理的,我对此一无所知。您能否推荐一些引导程序应用程序的示例,因为到目前为止我还没有找到好的示例。谢谢
    猜你喜欢
    • 2015-01-22
    • 2017-05-19
    • 1970-01-01
    • 2019-05-17
    • 2012-11-22
    • 2021-02-12
    • 2016-09-20
    • 2010-11-26
    • 2012-05-28
    相关资源
    最近更新 更多