Как создать точку восстановления системы каждый раз, когда запускается мой установщик?

По умолчанию MSI создает точку восстановления системы для установки и удаления. Что мне нужно делать, чтобы создать точку восстановления системы при каждом запуске моего установщика, будь то установка, восстановление, удаление, обновление и т. Д.?

2 ответа

Вот функция, которую вы можете использовать

      function CreateRestorePoint(sDescription: String): Boolean;
var
  ScriptControl:  Variant;
  oWMI:             Variant;
  ErrCode:          Integer;
begin
  try
    // Create the ScriptControl object.
    ScriptControl := CreateOleObject('ScriptControl');
    // Set the Language property (VBScript or JavaScript)
    ScriptControl.Language := 'VBScript';
    // Now create the WMI object we could not with straight Pascal code.
    oWMI := ScriptControl.Eval('GetObject("winmgmts:\\.\root\default:Systemrestore")');
    WizardForm.StatusLabel.Caption := 'Creating restore point...';
    // Create the restore point.
    ErrCode := oWMI.CreateRestorePoint(sDescription, 0, 100);
    // Return the error code, if any.  A value of zero indicates success.
    Result := (ErrCode = 0);
  except
    Result := false;
  end;
end;

Подробнее здесь читайтеhttps://github.com/matlo/GIMX-build/blob/master/windows/inno.iss.

Что ж, обновление - это новая установка нового продукта, при условии, что вы имеете в виду серьезное обновление, поэтому вам не нужно об этом беспокоиться, так как установка создаст его при запуске.

Удаление не часто является проблемой, если у пользователя все еще есть источник установки и доступ к любым обновлениям, потому что он может просто переустановить продукт.

В любом случае вам нужно кодировать его с помощью API точки восстановления, начиная с этого:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa378727(v=vs.85).aspx

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

Если пользователь отключил восстановление системы, то, очевидно, ничего из этого не сработает.

Другие вопросы по тегам