【问题标题】:Wix installer: The application is launched in SYSTEM userWix 安装程序:应用程序在 SYSTEM 用户中启动
【发布时间】:2014-07-03 15:39:36
【问题描述】:

我在 WIX 中有一个安装程序。我曾尝试将其部署到网络中的一组目标计算机上,但遇到了以下问题。部署成功,但安装程序在安装完成后使用以下代码启动应用程序时出现问题:

    <CustomAction Id="RunMainApp" Directory="SUBDIR" ExeCommand="[SUBDIR]clicksharelauncher.exe" Execute="deferred" Return="asyncNoWait"/>

    <InstallExecuteSequence>
    <Custom Action="RunMainApp" Before="InstallFinalize"><![CDATA[UILevel=5 OR LAUNCH_APP~="YES" AND NOT Installed]]></Custom> 
    </InstallExecuteSequence>

当应用程序启动时,我意识到它是以 SYSTEM 用户启动的。因此,我从应用程序中收到一条错误消息,指出该应用程序无法在 SYSTEM 用户中运行。谁能告诉我有没有办法解决它?

【问题讨论】:

    标签: wix windows-installer wix3.5 wix3 wix3.6


    【解决方案1】:

    发生这种情况是因为安装的 InstallExecute 阶段以 SYSTEM 帐户运行,并且您在该阶段启动了应用程序。

    您需要通过将 Impersonate="yes" 添加到自定义操作元素来获取自定义操作来模拟执行安装的用户。

    可以在此处的“模拟”部分下找到更多详细信息:

    http://wixtoolset.org/documentation/manual/v3/xsd/wix/customaction.html

    以下链接提供了有关如何在 UI 中添加应用程序启动的详细信息:

    http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html

    【讨论】:

    • 这可能没有帮助。如果他“部署到网络上的一组计算机”(想想 SCCM),他可能会将安装程序作为 SYSTEM 调用,因此他使用的序列、阶段或模拟上下文无关紧要,因为它都是 SYSTEM。我想知道他为什么要调用 EXE ......它的作用。正确的答案很可能是不调用EXE。
    • 嗨。实际上,我对所有内容都进行了编码,就好像用户正在从他自己的帐户安装应用程序一样。因此,我没有这样的问题。这个想法是应用程序应该在安装后启动。我们更进一步,尝试将其部署到一组计算机上,遇到了这样的问题。因此,我将添加模拟,因为它应该作为默认实现存在。但是,我想问您如何在安装过程中检测到此问题,并且在安装完成后不启动应用程序。谢谢。
    • 好点克里斯托弗 - 我的回答会假设它是一个运行安装的真实用户帐户。
    • 如何检查是否是真实用户帐户?
    • 检测不到?
    猜你喜欢
    • 2013-06-02
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多