Inno setup “奇数”;列表索引超出范围(20)“;从inno设置结束

Inno setup “奇数”;列表索引超出范围(20)“;从inno设置结束,inno-setup,Inno Setup,我的InnoSetup创建的安装程序在运行的最后会给出一条奇怪的“列表索引超出范围(20)”错误消息 在代码中,如果我单步执行,它将发生在“CurStepChanged”过程的最后一个“end;”之后。它刚刚完成切换到ssPostInstall 此时的最后一条日志消息是: Need to restart Windows? No Exception message: Message box (OK): List index out of bounds (20) User chose OK. 我不

我的InnoSetup创建的安装程序在运行的最后会给出一条奇怪的“列表索引超出范围(20)”错误消息

在代码中,如果我单步执行,它将发生在“CurStepChanged”过程的最后一个“end;”之后。它刚刚完成切换到ssPostInstall

此时的最后一条日志消息是:

Need to restart Windows? No
Exception message:
Message box (OK):
List index out of bounds (20)
User chose OK.

我不知道在代码更改后,代码执行会跳到下一个位置。使用Inno的“ide”只是到此为止。在错误对话框中点击ok,安装程序似乎就挂在那里,但是IDE中的代码执行永远不会返回。

不确定这是否是所有错误情况下的解决方案,但是,我在最后使用了ProgressPage,没有隐藏它。在try/finally块中包装函数并调用.Hide属性后,问题就消失了。

您需要在使用固定索引访问某个集合的位置发布代码。仅供参考,在CurStepChanged之后可以执行CurPageChanged或NextButtonClick事件。不,这不是解决方案。为你也不为任何人。
try..finally
块只确保执行块的
finally
部分中的代码(因此我无法想象如何修复列表边界溢出)。在某个对象上调用
Hide
(您甚至没有描述)也不会。很可能你没有解决这个问题。如果是打字错误,您的意思是使用了
try..except
block,那么您只需隐藏问题。我并没有投反对票,只是想知道这样一个含糊不清的问答是如何获得一些赞成票的。好吧,只是为了验证:我删除了try…finally代码。错误仍然没有出现。我删除了ProgressPage.Hide调用,返回错误。我采取的行动来自Inno的CreateOutputProgressPage帮助页面和CodeDlg.iss示例文件。我不喜欢这样的想法,我可能会掩盖一些事情,但现在没有报告错误(日志或对话框),因此不确定现在是否存在问题。这是一个尝试…最终确保执行,没有“除了”块。以防万一有人像我一样偶然发现这个。这确实是问题所在。我自己使用了一个自定义进度页,但最后忘了隐藏它。这导致了完全相同的消息(列表索引超出范围(17))。因此,解决方案实际上是将进度页隐藏在CurStepChanged中。