是否可以从MSI安全删除ScheduleReboot?

时间:2018-10-31 15:41:58

标签: windows-installer install installshield reboot silent

我正在使用基本MSI项目方案进行项目。此项目附带一个名为“ ScheduleReboot”的自定义操作。用户必须在完成安装之前响应此提示。如果安装没有用户界面,系统将在最后自动重新启动。我遇到的问题是安装程序会自动重新启动

我的问题是,我可以安全地删除ScheduleReboot,以便安装程序在静默安装期间不会重新启动。这有什么影响?我可以加回去吗?

1 个答案:

答案 0 :(得分:0)

更新:请注意,很多不必要的重启要求可能是由以下原因引起的:

  1. 服务安装,在尝试覆盖更高版本的二进制文件之前,它们没有正确停止现有的服务安装。将服务停止添加到安装顺序中以防止出现此问题。
  2. 如果您使用REINSTALLMODE=amus或类似的方法对文件进行不必要的强制覆盖,则可能会加剧服务覆盖问题和触发重新引导提示的所有其他使用中的文件问题。这将尝试强制覆盖相同版本的文件-这会增加重新启动提示的数量。
  3. 您无法在应用程序中实施措施以利用Windows的 RestartManager功能Windows Installer-Avoid FileinUse dialog box when Installing a package。本质上,此功能允许应用程序以可预测的方式关闭和重新打开,从而消除了重新启动的需求。

ScheduleReboot,标准操作 ScheduleReboot 不是自定义操作,而是标准操作。这意味着它内置于Windows Installer本身,而不是由 Installshield ,您自己或任何构建安装程序的人定制的。我不喜欢这个ScheduleReboot动作,因为如果您对它的条件设置不正确,确实会触发不必要的重启,如我在这里解释的:Reboot on install, Don't reboot on uninstall(建议阅读)。

MSI SDK文档 :此标准操作的文档位于:ScheduleReboot Action。如您所见,关键部分是:“ If the installer determines that a restart is necessary it automatically prompts the user to restart at the end of the installation, whether or not there are any ForceReboot or ScheduleReboot actions in the sequence. For example, the installer automatically prompts for a restart if it needs to replace any files that are in use during installation.

结论 :换句话说,您可以安全地从设置中删除 ScheduleReboot 标准操作,但是设置仍然可以重新启动,即使没有它。但是,正如我在您提出的另一个问题中回答的那样,您可以在命令行上设置 REBOOT=ReallySuppress 标志,以防止所有“ 正常重启机制”重启您的电脑我能想到的然后可以重新启动PC的唯一另一件事就是设计为这样做的自定义操作-通常由您自己进行(除非您正在修改其他人的程序包,并且那里有未知的自定义操作)。

我认为在某些情况下,操作系统可能会触发强制重启,但我不记得此时的情况。对于正常部署,它们应该不重要-请注意该问题。 And on that topic(我链接到此是因为我想说我不会使用这里提到的任何疯狂方法)。


msiexec.exe :用于禁止正常重启提示的命令行:

msiexec.exe /i "setup.msi" /QN /L*V "msilog.log" REBOOT=ReallySuppress

请注意,只有 REBOOT 的首字母。属性是相关的,因此您也可以写 REBOOT=R