0

默认情况下,MSI 会为安装和卸载创建一个系统还原点。每次运行我的安装程序时,无论是安装、修复、删除、升级等,我都需要做什么来创建系统还原点?

4

2 回答 2

0

好吧,升级是新产品的全新安装,假设您的意思是重大升级,因此您不必担心这一点,因为安装将在开始时创建一个。

假设用户仍然拥有安装源并可以访问任何更新,卸载通常不是问题,因为他们只需重新安装产品即可。

无论哪种方式,您都需要使用还原点 API 对其进行编码,从以下开始:

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

而且我不知道它是否适用于自定义操作。如果没有,那么您需要将这些操作包装在一个可执行文件中,该可执行文件创建还原点,然后运行 ​​MSI。

如果用户关闭了系统还原,那么显然这些都不会起作用。

于 2015-01-23T18:33:32.780 回答
0

这是您可以使用的功能

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

于 2021-07-30T17:00:28.057 回答