【发布时间】:2010-05-21 09:58:57
【问题描述】:
我正在使用 Visual Studio 创建一个安装项目。我想在安装成功后重新启动系统。
我想要一次努力。在将设置交付给客户之前,我不想每次都使用任何外部工具/实用程序来修改设置。
我可以调整设置项目本身吗?
我该怎么做?
【问题讨论】:
标签: .net visual-studio installation
我正在使用 Visual Studio 创建一个安装项目。我想在安装成功后重新启动系统。
我想要一次努力。在将设置交付给客户之前,我不想每次都使用任何外部工具/实用程序来修改设置。
我可以调整设置项目本身吗?
我该怎么做?
【问题讨论】:
标签: .net visual-studio installation
【讨论】:
试试这个:
在单独的解决方案中创建一个空的合并模块项目并构建它。这将在项目的 Debug 或 Release 文件夹中创建一个 msm 文件。
在 Orca 中编辑生成的 msm - 设置 REBOOT=Force 属性,如 here 所示。您只需执行一次。
在您的主解决方案中,将合并模块添加到您的设置项目并构建它。由于合并模块是单独构建的,它将保留 reboot 属性并将其合并到您的 MSI。
【讨论】:
请不要让我失望,但我不会回答你的具体问题,但这是在安装 msi 后重新启动 PC 的一种方法。
改用WiX,VS 内置设置更加灵活,并且有一个 VS 插件。
如果您使用 WiX,这是启动重启的代码。
<InstallExecuteSequence>
<ScheduleReboot After='InstallFinalize' />
</InstallExecuteSequence>
或者,您可以为您的 VS 设置项目创建一个转换,该转换仅包含用于启动重新启动的附加条目,然后在您构建项目时,您所需要做的就是应用转换,您可以将其以批处理文件的形式发送给客户或类似的。
ps 请记住,将 shell 命令作为自定义操作发出并不是最好的方法。这将导致机器重新启动并且不返回正确的exit code 3010,因此如果有人试图捕获退出代码或在命令行上执行 /norestart,shell 命令将忽略这一点。
编辑 创建 msi 文件后,使用 orca 打开它,然后将必要的更改添加到表中以 schedulereboot。将更改保存为转换,然后只要 msi 文件没有发生显着变化,您就可以在每次运行时将转换应用于 msi。
我个人不想这样做,因为这是一个额外的步骤,你应该能够在源代码中做到这一点。
要在 orca 中添加重启序列,请转到 InstallExecuteSequence 表并找到 InstallFinalize 条目。添加一个名为 ScheduleReboot 的新条目,并在序列列中输入一个比 InstallFinalize 阶段的序列大 1 的数字。
【讨论】: