Пожалуйста, не ругайте меня, но я не собираюсь отвечать на ваш конкретный вопрос, однако это способ перезагрузить компьютер после установки msi.
Вместо этого используйте WiX , он намного более гибок во встроенной настройке VS и есть плагин для VS.
Если вы используете WiX, это код, который инициирует перезагрузку.
<InstallExecuteSequence>
<ScheduleReboot After='InstallFinalize' />
</InstallExecuteSequence>
В качестве альтернативы вы могли бы создать преобразование для вашего проекта установки VS, которое содержит только дополнительные записи для запуска перезагрузки, а затем в любое время, когда вы строите свой проект, все, что вам нужно сделать, это применить преобразование, вы можете отправить его клиентам в пакетном файле. или аналогичный.
ps имейте в виду, что ввод команды оболочки в качестве настраиваемого действия - не лучший способ сделать это. Это приведет к перезагрузке компьютера и не вернет правильный код выхода 3010 , поэтому, если кто-то пытается перехватить код выхода или выполнить / norestart в командной строке, команда оболочки проигнорирует это.
EDIT
После того, как вы создали MSI-файл, откройте его с помощью orca , а затем добавьте необходимые изменения в таблицы для расписания перезагрузки. Сохраните изменения как преобразование, пока файл msi не изменяется кардинально, вы можете просто применить преобразование к msi при каждом запуске.
Лично я не хотел бы делать это, так как это дополнительный шаг, и вы должны быть в состоянии сделать это в источнике.
Чтобы добавить последовательность перезагрузки в orca, перейдите в таблицу InstallExecuteSequence и найдите запись InstallFinalize. Добавьте новую запись с именем ScheduleReboot и введите число в столбце последовательности, которое на 1 больше, чем последовательность на этапе InstallFinalize.