2008-08-28 2 views
3

Это «табу», чтобы программно создавать точки восстановления системы? Я бы сделал это, прежде чем выполнять обновление программного обеспечения. Если есть лучший способ создать точку восстановления только с файлами и данными моего программного обеспечения, пожалуйста, дайте мне знать.Создание точек восстановления системы - мысли?

Я хотел бы получить средство, с помощью которого я могу вернуть пользователя в известное рабочее состояние, если во время обновления происходит все kaput (закрывает/убивает приложение для обновления, питание отключается, пользователь вытаскивает вилку и т. Д.)

private void CreateRestorePoint(string description) 
    { 
     ManagementScope oScope = new ManagementScope("\\\\localhost\\root\\default"); 
     ManagementPath oPath = new ManagementPath("SystemRestore"); 
     ObjectGetOptions oGetOp = new ObjectGetOptions(); 
     ManagementClass oProcess = new ManagementClass(oScope, oPath, oGetOp); 

     ManagementBaseObject oInParams = oProcess.GetMethodParameters("CreateRestorePoint"); 
     oInParams["Description"] = description; 
     oInParams["RestorePointType"] = 12; // MODIFY_SETTINGS 
     oInParams["EventType"] = 100; 

     ManagementBaseObject oOutParams = oProcess.InvokeMethod("CreateRestorePoint", oInParams, null); 
    } 

ответ

4

Это «табу», чтобы программно создать точки восстановления системы?

Нет. Поэтому API существует; так что вы можете иметь псевдоатомные обновления системы.

-1

Я не думаю, что полное восстановление системы было бы хорошим планом. Есть две причины, которые быстро приходят на ум:

  • Wasted дискового пространства
  • непреднамеренные последствия от откате
2

Нет, это не Табу - на самом деле, я бы поощрять его. ОС управляет тем, сколько жестких дисков занимает, и я потратил деньги на Microsoft, тратя больше денег. & время тестирования. Восстановление системы, чем у вас деньги. & Время, затрачиваемое на тестирование вашего приложения настройки.

0

Взгляните на следующую ссылку: http://www.calumgrant.net/atomic/

Автор описал «транзакционной Программирование». Это аналогично транзакциям в базах данных.

Пример:

Начало транзакции:

  1. Шаг 1
  2. Шаг 2
  3. Встреча ошибка во время шага 2
  4. откат к до начала транзакции.

Это новая структура, но вы можете смотреть на нее скорее как на решение, а на использование рамки.

Используя транзакции, вы получаете «Восстановительные очки», которые вы ищете.

1

Если вы разрабатываете приложение для Vista, вы можете использовать Transactional NTFS, который поддерживает аналогичную функцию для того, что вы ищете.

http://en.wikipedia.org/wiki/Transactional_NTFS

Не будет ли установочные пакеты уже включают в себя этот тип отката поддержки, хотя? Я не очень хорошо знаком с большинством из них, поэтому я не уверен.

Наконец, Windows, как правило, автоматически создает точку восстановления в любое время при запуске приложения настройки.

3

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

Итак, если ваше обновление действительно меняет ваше приложение (т. Е. Хранящиеся в нем данные, двоичные файлы, которые его составляют, записи в реестре для него), то на самом деле это не изменение уровня системы, d голосовать за точку восстановления. Вы можете эмулировать функциональность, просто создав резервную копию частей, которые вы меняете, и предложите вариант восстановления для резервного копирования. Мое мнение состоит в том, что System Restore должно быть для восстановления системы при внесении глобальных изменений, которые могут привести к ее повреждению (установка приложения и т. Д.).

Аргумент счетчика, который должен использовать только системный сервис, не содержит воды для меня; Я волнуюсь, что если вам нужно выпустить несколько обновлений для своего приложения, набор точек восстановления системы может стать настолько большим, что важные, реальные «системные» обновления могут быть вытеснены или потеряны в шуме.