部署时 WIX MSI 应用程序未在用户帐户下启动应用程序
Posted
技术标签:
【中文标题】部署时 WIX MSI 应用程序未在用户帐户下启动应用程序【英文标题】:WIX MSI App not launching app under the user account when deployed 【发布时间】:2018-07-30 14:12:49 【问题描述】:我有这个应用程序,它是一个使用 WIX 工具集的 MSI 应用程序。我遇到了一个问题,当使用某些第三方软件进行部署时,例如 Windows Server 2012 R2 上的 COMODO 一个 ADDT 工具,应用程序在安装后无法启动。 WIX 配置配置为在通过 CustomAction 安装后启动可执行文件。
我知道“Impersonate=yes”,但是,显然在部署 MSI 时,使用了 SYSTEM 用户帐户,这会阻止“Impersonate=yes”正常工作。
这是应用程序的启动方式:
<Property Id="WixShellExecTarget" Value="[#appEXE]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<InstallExecuteSequence>
<Custom Action="LaunchApplication" After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
因此问题是,当 MSI 从 SYSTEM 用户帐户运行时,是否可以作为登录用户启动“CustomAction”?
【问题讨论】:
【参考方案1】:impersonate 属性只会对延迟的自定义操作产生影响。 Impersonate Yes 表示以启动安装程序的用户身份运行,No 表示以 SYSTEM 身份运行。
计划立即执行的自定义操作(在 InstallInitialize..InstallFinalize 块之外)始终以启动安装程序的用户身份运行。
虽然我不熟悉 ADDT 工具,但我可以说其他软件分发工具(例如 Microsoft SCCM Server)通常会将安装程序作为 SYSTEM 启动,因此这些最终都不是那么重要。冒充与否,您将以 SYSTEM 身份运行。
在这些情况下,在安装结束时启动应用程序是没有意义的。您不在用户桌面环境中,无论如何也不可能有任何 UI。
【讨论】:
以上是关于部署时 WIX MSI 应用程序未在用户帐户下启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章