我正在使用Visual Studio创建一个安装项目。我想在安装成功完成后重启系统。
我想要一次努力。在将其交付给客户端之前,我不想每次使用任何外部工具/实用程序修改设置。
我可以自行调整安装项目吗?
我该怎么做?
答案 0 :(得分:2)
答案 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的数字。