我创建了一个MSI文件,然后使用setupbld.exe创建了setup.exe。我想在setup.exe图标上设置此屏蔽,因此当用户尝试运行此安装程序时,用户将立即获得具有User Account Control(UAC)提升的此屏幕。我该怎么办?
目前,我使用以下cmd行生成setup.exe:
setupbld.exe -out c:\Setup.exe -mpsu c:\outTEst\a.msi -setup setup.exe -title "setup"
现在,用户必须单击setup.exe并选择以管理员身份运行才能安装我的应用程序。
答案 0 :(得分:3)
Setupbld.exe不支持标记asAdministrator提升。如果您的.msi只能以“早期”提升运行,那么您的.msi中就会出现错误。通常,它是需要在延迟上下文中运行而不模拟的自定义操作。
答案 1 :(得分:1)
您可以在生成的Setup.exe中编辑清单,并将其requestedExecutionLevel
属性更改为requireAdministrator
。
然而,正如Bob在他的answer中所说,你应该更好地使用Deferred Execution Custom Actions位NoImpersonate
。延迟自定义操作只能访问有限数量的属性,有关详细信息,请参阅Obtaining Context Information for Deferred Execution Custom Actions。
答案 2 :(得分:1)
http://blog.torresdal.net/2008/10/06/
如果我理解正确的话,这个博客几乎就是你所说的。我正在使用我的msi管理员,以便我的自定义操作正常运行。但是,我也在写入和阅读注册表,并且由于某种原因从注册表中读取不起作用。日志文件说AppSearches正在返回签名3,我相信这意味着访问被拒绝。我还在研究为什么会这样。
最佳。
编辑:我认为我的注册管理机构问题与我的管理员权限无关,我知道我的设置为我提供了提升权限,因此请忽略有关注册管理机构问题的评论。