【问题标题】:Wix burn installer no reboot on silent installWix 刻录安装程序在静默安装时无需重新启动
【发布时间】:2017-05-23 14:12:40
【问题描述】:

我有一个安装各种模块的 wix 包。其中一个模块可能会导致系统重新启动。现在我希望发生的方式是,如果它是 UI 安装,那么在捆绑包安装结束时,我希望出现提示,如果是静默安装,那么我想避免自动重启,因为用户可能不知道安装会导致重新启动。

我查看了各种线程和选项,发现我可以通过“/norestart”参数进行静默安装,这样可以避免自动重启。因此,如果用户没有传递“/ norestart”参数,我想使静默安装失败,并且仅在传递该参数时才允许。我希望“/norestart”会映射到 REBOOT 的特定值(https://msdn.microsoft.com/en-us/library/windows/desktop/aa371101(v=vs.85).aspx),但我观察到的是,无论我是否传递“/norestart”参数,日志中 REBOOT 的值始终为“ReallySuppress”,但在传递参数时不会自动重启,在未传递参数时会重启。我真的很困惑它是如何确定的以及我应该如何以编程方式确定它。

这是来自其中一个组件重新启动时的日志(当我没有传递“/norestart”参数时)

Command Line: ALLUSERS=1 ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=7 CWD=<...> REBOOT=ReallySuppress CURRENTDIRECTORY=<...> CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 CLIENTPROCESSID=2240

这是从它没有重新启动时开始的(当我传递“/norestart”参数时)

Command Line: ALLUSERS=1 ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=7 CWD=<...> REBOOT=ReallySuppress CURRENTDIRECTORY=<...> CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 CLIENTPROCESSID=1984

感谢任何帮助或指针。如果您希望我提供更多信息或有不清楚的地方,请告诉我。提前感谢您的宝贵时间。

参考: https://msdn.microsoft.com/en-us/library/windows/desktop/aa372024(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/aa371101(v=vs.85).aspx

【问题讨论】:

    标签: wix windows-installer burn reboot


    【解决方案1】:

    如您所见,MSI 程序包总是被禁止启动重新启动。

    您缺少的是引导程序应用程序(例如 WixStdBA 或自定义/托管 BA)控制重启。

    BA 检查每个 MSI 软件包的安装结果。如果任何 MSI 程序包需要重新启动,Bootstrapper 应用程序将启动重新启动(或不启动,如果用户不允许它或通过 /norestart 开关等)。

    /norestart 命令行开关仅防止引导程序应用程序在包/链的末尾启动重新启动。

    我敢肯定,如果您想基于缺少 /norestart 来阻止安装,则必须使用自定义引导程序应用程序。

    但如果您要使用自定义引导程序应用程序,您不妨更改默认行为(即将/norestart 设为默认行为)。

    【讨论】:

      【解决方案2】:

      REBOOT 属性的默认值不是ReallySuppress,所以发生了其他事情。如果不查看源、任何自定义操作或 MSI,就很难说出这是为什么。完整的详细日志可能会显示它已设置;它可能在 MSI 的属性表中;它可以从自定义操作代码中设置;命令行上还有什么?它需要一些侦探工作。

      另一个问题是完全静默安装不会要求重新启动,因为静默意味着它不能询问,所以有点不清楚其他属性的设置是什么,ScheduleReboot 可能性等等。我发现使用传统的命令行选项更容易,例如 /qb 等,因为它们往往更明确地说明它们的作用。如果您需要人们破译它,请在某处发布完整的完整详细日志。

      禁止重新启动通常不是一个好主意。需要它们的主要原因是文件需要以需要重新启动的方式替换。这意味着在下一次重新启动之前安装是不完整的,并且如果它使用旧文件而不是尚未到位的新文件,则尝试运行已安装的应用程序可能会导致问题。

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 2020-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多