我想知道,如果有办法显示消息框,则regserver
部分的Files
标记出现错误时,只显示重试和忽略选项,而不是 Abort 。
我知道那里有一面旗帜noregerror
。我不想显示错误。我想展示它,但只有两个选项。
有时在尝试注册OCX / DLL时显示错误时,当用户点击重试时,它会在第二次工作。如果用户单击取消,安装程序将回滚所有内容,从我的更新程序中删除文件。
感谢。
答案 0 :(得分:1)
无法自定义这些按钮。
但您可以使用RegisterServer
在代码中实现注册。然后你可以任何你喜欢的方式处理错误。实际上你甚至可以自动重试注册,你似乎真的想要做什么。
虽然实现重试/忽略消息框并不容易。以下代码使用简单的是/否。
[Files]
Source: "MyDll.dll"; DestDir: "{app}"; AfterInstall: RegServer
[Code]
procedure RegServer;
var
FileName: string;
Message: string;
Retry: Boolean;
begin
repeat
Retry := False;
FileName := ExpandConstant(CurrentFilename);
try
{ First argument indicates if DLL is 64-bit }
RegisterServer(False, FileName, True);
except
Message :=
FileName + #13#10#13#10 +
FmtMessage(SetupMessage(msgErrorRegisterServer), [AddPeriod(GetExceptionMessage)]) +
#13#10#13#10 +
'Do you want to retry registration? ' +
'Click Yes to try again or No to proceed anyway (not recommended).';
Retry := (MsgBox(Message, mbError, MB_YESNO) = IDYES);
end;
until (not Retry);
end;