Перезагрузите систему из проекта установки - PullRequest
4 голосов
/ 21 мая 2010

Я создаю проект установки с использованием Visual Studio.Я хочу перезагрузить систему после успешного завершения установки.

Я хочу сделать это один раз.Я не хочу каждый раз изменять настройку с помощью какого-либо внешнего инструмента / утилиты перед ее доставкой клиенту.

Можно ли настроить сам проект установки?

Как это можно сделать?*

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Попробуйте это:

Создайте пустой проект модуля слияния в отдельном решении и постройте его. Это создаст файл msm в папке Debug или Release проекта.

Отредактируйте результирующий msm в Orca - установите свойство REBOOT = Force, как показано здесь Вам нужно будет сделать это только один раз.

В вашем основном решении добавьте модуль слияния в ваш проект установки и постройте его. Поскольку модуль слияния был построен отдельно, он сохранит свойство перезагрузки и объединит его с вашим MSI.

2 голосов
/ 21 мая 2010

Вы можете использовать ORCA для этого.

Подробности см. В статье Microsoft HOW TO:

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

1 голос
/ 21 мая 2010

Пожалуйста, не ругайте меня, но я не собираюсь отвечать на ваш конкретный вопрос, однако это способ перезагрузить компьютер после установки 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...