Windows installer 你能强迫MSI总是管理员吗?

Windows installer 你能强迫MSI总是管理员吗?,windows-installer,installation,Windows Installer,Installation,就我调查和询问过其他人的情况来看,一般的MSI在大多数时候都是以有限用户的身份运行的,尤其是在GUI阶段 但无论如何,应用程序在安装阶段都需要提升的提示符,我希望在GUI选择阶段执行的自定义操作期间拥有管理员权限。真的没有办法在一开始就强制UAC提示吗 此外,在Active Directory安装期间也需要执行一些自定义操作,如果MSI作为来宾或其他身份运行,则也无法执行这些操作。您可以从包含适当嵌入清单的启动MSI。在GUI阶段,它始终在非提升的用户上下文中运行。在延迟执行模式下,仅提升Ins

就我调查和询问过其他人的情况来看,一般的MSI在大多数时候都是以有限用户的身份运行的,尤其是在GUI阶段

但无论如何,应用程序在安装阶段都需要提升的提示符,我希望在GUI选择阶段执行的自定义操作期间拥有管理员权限。真的没有办法在一开始就强制UAC提示吗


此外,在Active Directory安装期间也需要执行一些自定义操作,如果MSI作为来宾或其他身份运行,则也无法执行这些操作。

您可以从包含适当嵌入清单的启动MSI。

在GUI阶段,它始终在非提升的用户上下文中运行。在延迟执行模式下,仅提升InstallExecuteSequence中的自定义操作

要解决此问题,您应该重新设计MSI或使用启动程序(setup.exe),该程序在启动时请求提升


在lauchcondition中使用该属性。

在Vista、Server 2008和Windows 7上,即使运行提升的安装程序,自定义操作仍可能失败。这是因为它们通过模拟提升进程的用户来运行


需要完全权限且不使用每用户信息的自定义操作应标记为在不模拟的情况下运行。通过这种方式,它们在本地系统帐户下运行,没有任何限制。

这是微软的超级蹩脚设计。如果没有用户单击setup.msi或active directory无人参与安装,我会说setup.exe是可以的。您可以从setup.exe向msi(比如RUNFROMSETUP)传递一个参数(公共属性),并在属性未传递时通知用户(使用LaunchCondition)。当通过AD无人值守安装进行安装时,您可以在命令行中传递参数(我相信MSI将始终通过SMS运行)。这样,用户在直接运行MSI时会收到一条消息,也可以在无人参与的情况下执行该消息。请确保在安装后,使用“msidbCustomActionTypeInScript”和“msidbCustomActionTypeNoImpersonate”标志在InstallExecuteSeSequence中运行这些消息。在Wix中,您可以将模拟标志设置为“否”。