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