如何在安装完成之前让MSI在没有用户交互的情况下重启?

时间:2015-02-02 23:19:03

标签: windows windows-installer

我正在使用Visual Studio Installer Project构建MSI。我有一个要求是在安装完成之前自动重启系统。通过自动说',我的意思是没有客户互动,例如单击按钮以触发重新启动。此外,重启应该可以通过msi的/ norestart选项来抑制。

我尝试通过添加属性REBOOT = Force来编辑使用Orca的MSI。但是这会弹出一个是/否窗口供用户点击。只有在用户单击“是”后才会重新启动,这不是自动的。

此外,我尝试调用Win32 API InitiateSystemShutdownEx 来启动重新启动。但在这种情况下,我无法通过/ norestart选项禁用重启。

1 个答案:

答案 0 :(得分:1)

查看REBOOTPROMPT property

  

如果REBOOTPROMPT属性设置为Suppress(或只是S)任何重启   Windows Installer执行的操作自动发生   来自用户的互动。设置此属性不会启动   如果不需要重启,它只会抑制任何显示   提示重新启动用户。

BTW,Visual Studio安装项目的许多缺点之一是他们没有给你一个创作的地方。如果使用CI构建,您必须使用ORCA或某些脚本来构建hack MSI。这就像使用ILDASM调整DLL一样,因为VB.NET不支持某些东西。更优雅的解决方案是使用具有更好的Windows Installer XML支持的工具,例如Windows Installer XML。