从安装项目重新启动系统

时间:2010-05-21 09:58:58

标签: .net visual-studio installer installation

我正在使用Visual Studio创建一个安装项目。我想在安装成功完成后重启系统。

我想要一次努力。在将其交付给客户端之前,我不想每次使用任何外部工具/实用程序修改设置。

我可以自行调整安装项目吗?

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用ORCA执行此操作。

有关详细信息,请参阅此Microsoft HOW TO文章:

http://support.microsoft.com/kb/827020

答案 1 :(得分:2)

试试这个:

在单独的解决方案中创建一个空的合并模块项目并构建它。这将在项目的Debug或Release文件夹中创建一个msm文件。

在Orca中编辑生成的msm - 设置REBOOT = Force属性,如图所示here。你只需要这样做一次。

在主解决方案中,将合并模块添加到您的安装项目并构建它。由于合并模块是单独构建的,因此它将保留reboot属性并将其合并到MSI中。

答案 2 :(得分:1)

请不要让我失望,但我不会回答您的具体问题,但这是一种在msi安装后重启PC的方法。

使用WiX代替,VS内置设置更加灵活,VS有一个插件。

如果你使用WiX,这是启动重启的代码。

<InstallExecuteSequence>
  <ScheduleReboot After='InstallFinalize' />
</InstallExecuteSequence>

或者,您可以为VS安装项目创建一个转换,其中只包含用于启动重新启动的其他条目,然后您构建项目时,只需应用转换,您可以将其发送给批处理文件中的客户或类似的。

ps请记住,将shell命令作为自定义操作发出并不是最好的方法。这将导致计算机重新启动而不返回正确的exit code 3010,因此如果有人试图捕获退出代码或在命令行上执行/ norestart,则shell命令将忽略此。​​

修改 创建msi文件后,使用orca将其打开,然后将必要的更改添加到schedulereboot中。将更改保存为转换,只要msi文件没有显着变化,您就可以在每次运行时将转换应用到msi。

Personaly我不想这样做,因为这是一个额外的步骤,你应该能够在源头做到这一点。

要在orca中添加重新启动序列,请转到InstallExecuteSequence表并找到InstallFinalize条目。添加一个名为ScheduleReboot的新条目,并在序列列中输入一个比InstallFinalize阶段的序列大1的数字。