【发布时间】:2016-09-20 08:13:27
【问题描述】:
我创建了一个自定义操作:
<CustomAction Id='AddEventLog' BinaryKey='CustomActionEventLog.dll' DllEntry='AddEventLog' Return="check" Execute="immediate"/>
安装顺序
<Custom Action="AddEventLog" Before="InstallFinalize" />
我的安装程序确实弹出并说它需要管理员权限才能运行。我同意。
InstallPrivileges='elevated' InstallScope='perMachine' AdminImage='yes'
但是,当它运行自定义操作时,它不起作用,因为它没有以管理员身份运行。
我什至尝试在我的自定义操作项目 dll 上将以下内容添加到 app.manifest。它没有帮助。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
我已经搜索了我能找到的关于这个主题的所有教程和论坛帖子。注释已经起作用了。
如果有人对此有更好的标签,请随时添加它们,我整天都在为此苦苦挣扎。
更新说明:
虽然我的 customAction 确实适用于 EventLog,但我没有使用 http://schemas.microsoft.com/wix/UtilExtension Util:EventSource。这是一个普遍的问题,您甚至可以强制 customAction 以管理员身份运行吗?
【问题讨论】:
-
您的自定义操作有什么作用?可能有一些 Wix 扩展可以用来回避您的问题(即stackoverflow.com/questions/58538/…)。
-
添加和删除新的事件日志和事件源。对于 System.Diagnostics.EventLog,我无法找到现有的扩展。
-
好的,虽然这不能直接回答您发布的问题,但我认为您正在寻找 util:EventSource (wixtoolset.org/documentation/manual/v3/xsd/util/…),您需要为框架提供正确的 EventLogMessages.dll您的目标版本,如何使用 NetFx 扩展的说明在这里 (stackoverflow.com/questions/12433883/…)
-
幸运的是,它没有直接回答我的问题。只要用户从以管理员身份登录的 cmd 提示符执行 msi,我的自定义操作就可以工作,如果它是普通用户,即使安装程序提示访问,它也不起作用。同样,我没有使用 Util.EventSource 我正在使用需要具有管理员权限的自定义开发的自定义操作。有没有办法将权限发送到自定义操作,或者它可能与我在 installFinalize 之前运行它的事实有关。
标签: permissions wix