我写了一个处理注册表的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”
Property Id =“ALLUSERS”Value =“1”
或
Property Id =“ALLUSERS”Value =“2”
答案 0 :(得分:0)
尝试以下方法:
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
否则,您可以将安装程序包装在wix托管引导程序应用程序中,但需要更多工作。然后将设置添加到清单文件中。
答案 1 :(得分:0)
该自定义操作被延迟,这意味着它必须在InstallExecuteSequence中运行,如果您有每台计算机的InstallScope和提升的权限,则应该使用系统帐户升级并运行该操作。
不要混淆ALLUSERS属性,因为WiX只做正确的事情。每台机器的InstallScope和提升的权限将使其工作。如果你不小心将它变成了每用户安装,那么它就不会被提升而且会失败。
您应该在UI序列之后看到UAC提升对话框。如果您没有看到此对话框,则不会提升安装。同样,这可能与您更改ALLUSERS有关。如果您在静默模式下安装它,那么它也将失败,因为静音确实意味着无声,并且它不会显示高程对话框,并且您的CA不会升级。
您失败的自定义操作可能不是您发布的操作,这是延迟的,因此在提升提示之后。如果您在UI序列中有自定义操作,那么它将不会被提升(除非您从提升的提示符运行MSI),这可以解释您所看到的问题。