如何调试inno-setup异常

时间:2014-11-23 14:16:25

标签: delphi exception inno-setup pascalscript

我自己用XE6编译了inno-setup。 (我知道,该文档提出了较旧的delphi版本,但我只有新的IDE)

我想使用pascal脚本来自定义设置。但即使我添加了一个最简单的[Code]部分,创建的安装崩溃。

[Code]
function InitializeSetup(): Boolean;
begin
end; 

安装时创建的setup.exe失败:

[22:10:29.945]   *** Setup started
[22:10:36.182]   Setup version: Inno Setup version 5.5.4 (u)
[22:10:36.186]   Original Setup EXE: D:\Classics\Save\Installer\Win_Platform\Inno Setup\test\Output\setup.exe
[22:10:36.190]   Setup command line: /SL5="$911152,176640,176640,D:\Classics\Save\Installer\Win_Platform\Inno Setup\test\Output\setup.exe" /SPAWNWND=$7B05B8 /NOTIFYWND=$1150B10 /DEBUGWND=$74002E 
[22:10:36.200]   Windows version: 6.2.9200  (NT platform: Yes)
[22:10:36.203]   64-bit Windows: Yes
[22:10:36.209]   Processor architecture: x64
[22:10:36.212]   User privileges: Administrative
[22:10:37.660]   64-bit install mode: No
[22:10:37.674]   Created temporary directory: C:\Users\CAOSHU~1\AppData\Local\Temp\is-5AOTJ.tmp
[22:10:37.717]   InitializeSetup raised an exception (fatal).
[22:10:37.725]   Exception message:
[22:10:37.734]   Message box (OK):
    Access violation at address 006043C0 in module 'setup.tmp'. Read of address 00000014.
[22:11:03.501]   User chose OK.
[22:11:03.515]   Deinitializing Setup.
[22:11:04.424]   *** Setup exit code: 1

也许我编译inno设置的方式有一些问题。我不需要使用XE6?但是如何调试并找出问题所在?

运行时不会崩溃的代码。它是由inno setup创建的setup.exe。

1 个答案:

答案 0 :(得分:0)

InitializeSetup()返回的值未定义。

function InitializeSetup(): Boolean;
begin
   result := true;
end;

由于这个原因,你得到一个未定义的行为。如果大多数时候结果都是假的(RAX的最后8位== 0),情况并非总是如此,你会得到一个严重的“难以理解”的问题,特别是在无缘无故的情况下,工作。