我已经使用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文件后如何强制重启?
编辑:
“常规用户”不会使用该系统,因此,我不认为从蓝色重启是不希望的行为-从蓝色重启正是我所需要的。
答案 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> (显而易见,但仍然如此)-好像有人拿走了您的物理桌面并将其清理干净,并把文件放在地板上和垃圾箱中(现在在政治上正确地称为“回收站” “)。
还有更多:
最重要的是:您的软件可能会被淘汰掉 这样的“行为”公司。危险重启。确实可以。就像“ ...如果他们这样做,他们还会做我们不能忍受的”一样。
文明重启 :我不确定这里的所有方面,但是对于不重启就无法运行的软件,我建议使用类似的方法:
missed chat messages
-Windows Installer引擎-从理论上讲,您可以禁止MSI安排的所有重新启动操作-仍然存在hack)。
web pages without state management
)。我不建议他们这样做,因为这可能会导致其他意想不到的问题-技术黑客总是会这样做。总是有副作用。正确的方法是消除软件包中的重启黑客。是不是或Windows的更新确实可以抑制此类意外事件。答案 1 :(得分:0)
改为使用/forcerestart
。 Burn遵循的是Standard Installer Command-Line Options。