【问题标题】:Is launch Condition shown in silent mode?启动条件是否以静默模式显示?
【发布时间】:2021-10-27 21:09:17
【问题描述】:

使用 WixSharp 构建安装程序,

在静默模式下运行时是否显示LaunchCondition? (例如“msiexec /i /qn /quiet”)

【问题讨论】:

    标签: wix wixsharp


    【解决方案1】:

    MSI GUI:MSI 有许多 UILevels - 可见 GUI (more on this here) 度数。在静默模式下运行设置时,启动条件中的任何错误都将显示在 MSI 日志中,而不是对话框中。

    这是有道理的,因为您必须避免在可能没有人关闭它们时出现对话框(例如在自动包部署系统中)。

    基本上,您可以使用基本 GUI /qb 或简化的 GUI /qr 或完全静默运行 /qn。当您静默运行时,不应显示任何对话框,您应查阅日志文件以获取结果:

    静默 MSI 安装

    msiexec /i MySetup.msi /qn /L test.log
    

    测试项目https://github.com/glytzhkof/WiXLaunchConditionTestMYVALUE 在属性表中定义 - 将其更改为 0 或 1)。

    这是一个示例日志输出:

    === Logging started: 28.10.2021  13:07:12 ===
    Action start 13:07:12: INSTALL.
    Action start 13:07:12: FindRelatedProducts.
    Action ended 13:07:12: FindRelatedProducts. Return value 1.
    Action start 13:07:12: LaunchConditions.
    MSI (s) (F4:DC) [13:07:12:491]: Product: WiXLaunchConditionTest -- Value for MYFLAG must be 1 (true) or 0 (false)
    
    Value for MYFLAG must be 1 (true) or 0 (false)
    Action ended 13:07:12: LaunchConditions. Return value 3.
    Action ended 13:07:12: INSTALL. Return value 3.
    MSI (s) (F4:DC) [13:07:12:493]: Product: WiXLaunchConditionTest -- Installation failed.
    
    MSI (s) (F4:DC) [13:07:12:493]: Windows Installer installerte produktet. Produktnavn: WiXLaunchConditionTest. Produktversjon: 1.0.0.0. Produktspråk: 1033. Produsent: -. Installasjonens resultatstatus: 1603.
    
    === Logging stopped: 28.10.2021  13:07:12 ===
    

    管理员权限:应该注意,MSI 应该从具有管理员权限的 cmd.exe 运行 - 否则您将无法获得来自静默安装程序的消息,由于缺少管理员权限,安装失败(失败是由于缺少管理员权限,而不是因为启动条件)。

    此注册表脚本在 Windows 资源管理器中添加上下文菜单,可以在具有或不具有管理员权限的任何文件夹中打开 cmd.exehttps://github.com/glytzhkof/all/blob/master/HKCU_Run-CMD-Shell-Extension.reg。只需合并注册表文件,然后右键单击 Windows 资源管理器中任何文件夹中的空白区域。查看对话框底部的命令:

    【讨论】:

    • 感谢您的回答!即使用户在静默模式下运行,我也需要在消息框中显示错误消息,这可能吗?
    • 是的,您可以使用自定义操作来执行此操作,但这不是 MSI 的设计。当您完全静默运行设置时,它应该在日志文件中“报告发现” - 这是技术的设计,应该注意。如果您使用基本的/qb 或简化的 GUI /qr(而不是完全静默的/qn)运行 MSI,则会出现一个对话框。
    • MSI 有许多 UILevels - 可见度 GUI (more on this here)。 Here is an answer on how this affects uninstall in unexpected ways。小心弄乱这是我的建议。 MSI 是一种奇怪的技术——当你做出意想不到的事情时,它会反击。 (War stories - 您可能想要浏览的非常混乱的内容)。
    • 我应该补充一点,您的对话框可能会“出现”在分发系统中,这些分发系统旨在将 MSI 静默安装到可能的数千台计算机上。这就是公司进行部署的方式。这将使分发挂起,因为那里没有人可以解雇modal dialog。打包团队会删除您的对话框自定义操作 - 如果他们在其中看到它,但他们也可能忘记这样做,从而使您的设置在分发中出现故障。如果您添加此对话框,请做好记录。不要添加它:-)。
    • 谢谢你,我给你的答案投了票:)
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2020-03-05
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多