You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup多UpdateReadyMemo事件共存:无需修改第三方代码的方案咨询

解决Inno Setup多模块共同生成Ready to Install页面内容的问题

问题背景

我使用Inno Setup 6.2,需要给*"Ready to Install"*页面添加自定义内容,因此实现了UpdateReadyMemo函数:

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

按文档说明,该函数返回值即为页面显示内容,原本运行正常。但引入第三方组件InnoDependencyInstaller后,它也通过事件标识符注册了同名事件:

<event('UpdateReadyMemo')>
function Dependency_Internal3(const Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

根据Inno Setup规则,这类事件会按注册顺序执行,只要某个事件返回非空字符串就会终止后续调用,导致无法让多个模块共同生成摘要内容。目前我是移除第三方组件的事件标识符,手动调用其内部函数来合并内容,但想找无需修改第三方组件的更好方法。


无需修改第三方组件的解决方案

方案1:直接操作ReadyMemo控件(最稳定)

跳过UpdateReadyMemo事件机制,在CurPageChanged事件中直接修改页面控件内容。当页面切换到Ready to Install时,先获取已生成的内容(包含第三方组件添加的部分),再追加自定义内容:

procedure CurPageChanged(CurPageID: Integer);
var
  OriginalContent: String;
begin
  if CurPageID = wpReady then
  begin
    // 获取当前摘要框已有的内容
    OriginalContent := WizardForm.ReadyMemo.Text;
    // 追加自定义内容(换行符用#13#10对应Windows的回车换行)
    WizardForm.ReadyMemo.Text := OriginalContent + #13#10#13#10 + '* 自定义内容:' + #13#10 + '  ' + '这里是你要添加的额外信息';
  end;
end;

这个方法完全不依赖UpdateReadyMemo事件的执行顺序,不管第三方组件怎么处理事件,都能确保自定义内容被添加,且无需修改第三方代码。

方案2:利用GetPreviousEventResult合并事件返回值

如果坚持使用UpdateReadyMemo事件,可以用Inno Setup内置的GetPreviousEventResult函数获取前一个同事件的返回结果,实现内容拼接。需要注意你的事件要在第三方组件事件之后注册(即把你的[Code]段放在引入第三方组件的#include语句之后):

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  ThirdPartyContent: String;
begin
  // 获取第三方组件UpdateReadyMemo事件的返回内容
  ThirdPartyContent := GetPreviousEventResult;
  
  // 拼接第三方内容与自定义内容,可自行调整顺序
  Result := ThirdPartyContent + NewLine + NewLine + '* 自定义内容:' + NewLine + Space + '这里是你要添加的额外信息';
end;

这个方案依赖事件注册顺序,若第三方组件的事件先执行,就能拿到它的返回值进行合并。


内容的提问来源于stack exchange,提问作者TomB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:30