安装完成后如何强制重启? WiX中的刻录/引导程序

时间:2019-04-03 09:00:12

标签: wix bootstrapper burn

我已经使用WIX创建了一个包。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="ClientSoft" Version="1.0.0.0" Manufacturer="Tests" UpgradeCode="GUID">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

        <Chain>
            <MsiPackage SourceFile="file1.msi" Visible="yes"/>
            <MsiPackage SourceFile="file2.msi" Visible="yes"/>
        </Chain>
    </Bundle>
</Wix>

我仅安装MSI文件。该捆绑包将使用-silent选项执行。

我想在捆绑安装完成后强制重启(无提示)。

添加-forcereboot无效。

在安装所有MSI文件后如何强制重启?

编辑:

“常规用户”不会使用该系统,因此,我不认为从蓝色重启是不希望的行为-从蓝色重启正是我所需要的。

2 个答案:

答案 0 :(得分:1)

刻录重新启动通知 :据我所知,如果任何嵌入式MSI文件安排了重新启动,Burn将在安装后显示重新启动提示(可以通过安排 {ScheduleReboot ForceReboot 的标准操作-如果安装过程中无法替换文件,Windows Installer会自行安排重新启动)。

我相信Burn捆绑包将抑制重启,直到安装完成为止-依靠它们用于调用每个MSI的命令行,但是我不确定100%。 ForceReboot可能会有特殊的问题。 只需使用ScheduleReboot condition it well - as explained here

此外,如果重新启动正在进行,整个捆绑软件似乎拒绝卸载。不知道当捆绑软件以静默方式运行时会发生什么,它似乎会导致重启失败。测试还不够彻底。

正在进行一些测试。首先需要做其他事情。


  

Rant :我为下面的人写了一个完整的重启程序:-)。要点:不要意外或自发重启。它是   业力不好(小鸡也不会挖)。

     

不幸的是,Windows Installer本身会在以下情况下自发重启   除非您在 REBOOT=ReallySuppress 上指定,否则以静默模式运行   命令行-如果确实有重新启动。


不要 :进行自发的,未经通知的重启实际上在技术上很容易(自定义操作或以静默模式运行的MSI设置了 {{1 }} -甚至 ForceReboot ,而无需在命令行上设置 ScheduleReboot -详细described here)。但是,从逻辑上和实际的角度来说,这样重启是不明智的。实际上非常如此。

重新启动的道德规范 :重新启动知识型员工的PC是非常严重的事情,我发现人们花更少的钱才出去。 这没什么好担心的: :数十个Visual Studio窗口,成堆的半写电子邮件,记事本中的注释以及瘟疫本身: {{1 }} REBOOT=ReallySuppress 等...除了丢失数据(这仍然会发生,尽管大多数应用程序在关闭前会保存)之外, 人们会丢失上下文< / em> (显而易见,但仍然如此)-好像有人拿走了您的物理桌面并将其清理干净,并把文件放在地板上和垃圾箱中(现在在政治上正确地称为“回收站” “)。

还有更多:

  • 如果您重新启动并且有很多用户登录怎么办?
  • 有些人可能会很粗心,无法将其安装在需要仔细管理重启的服务器上(例如:需要按照特定的顺序引导多台服务器以进行审核和用于各种目的-是的,它确实发生了,并且充满了麻烦不太好说)。
  • 上帝禁止您在整个公司都已登录的情况下突然重启终端服务器(甚至不确定是否可以这样做)。
  • 该列表可能非常技术性-最奇怪的事情发生了。
  • 如果您通过自定义操作强制立即自发重启,而MSI是Burn捆绑包中依次运行的众多设备之一,该怎么办?不确定Burn将如何处理?它可能具有处理它的功能。
  

最重要的是:您的软件可能会被淘汰掉   这样的“行为”公司。危险重启。确实可以。就像“ ...如果他们这样做,他们还会做我们不能忍受的”一样。


文明重启 :我不确定这里的所有方面,但是对于不重启就无法运行的软件,我建议使用类似的方法:

  1. 预告片 :宣布之前,安装开始后会真正重启 安装后需要。允许提前退出。帮助所有人。
  2. ReallySuppress :请不要不尊重MSI文件的命令行设置为REBOOT=ReallySuppress,以禁止所有重新引导(这是< strong> missed chat messages -Windows Installer引擎-从理论上讲,您可以禁止MSI安排的所有重新启动操作-仍然存在hack)。
    • 我们需要在企业中开展这项工作,并消除重新启动时随心所欲的自由部署方法。
    • 必须处理Freebasing软件包的可怜的系统管理员会采取绝望的措施来防止自发重新启动:Is there a really-really-really-don't-reboot parameter for msiexec?
    • 管理员真的会采取极端措施来防止重新启动( web pages without state management )。我不建议他们这样做,因为这可能会导致其他意想不到的问题-技术黑客总是会这样做。总是有副作用。正确的方法是消除软件包中的重启黑客。是不是或Windows的更新确实可以抑制此类意外事件。
  3. 标准方法 :安装后,Windows Installer本身将显示一个对话框以重新启动。允许使用此标准方法。如前所述:尊重重新启动抑制,以进行无提示安装。请注意,即使您需要 在您的计算机中添加明确的 ScheduleReboot 命令,Windows Installer也会显示一个重新启动对话框-如果需要替换文件, MSI文件。 自动魔术师
  4. 没有汤 :您可以在重新启动之前使应用程序拒绝启动。这样做的方法很多,例如可能只是扫描需要替换的文件,例如,在允许启动之前。为潜在的启动错误打开,因此请保持简单。我宁愿不添加任何按钮来启动应用程序中的重新启动,我只是声明需要重新启动并退出-如果确实必要。少给质量检查人员测试吗?

答案 1 :(得分:0)

改为使用/forcerestart。 Burn遵循的是Standard Installer Command-Line Options