Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何调试inno安装程序异常_Delphi_Exception_Inno Setup_Pascalscript - Fatal编程技术网

Delphi 如何调试inno安装程序异常

Delphi 如何调试inno安装程序异常,delphi,exception,inno-setup,pascalscript,Delphi,Exception,Inno Setup,Pascalscript,我自己用XE6编译了inno安装程序。(我知道,文档建议使用旧的delphi版本,但我只有新的IDE) 我想使用pascal脚本自定义设置。但即使我添加了一个最简单的[代码]部分,即创建的安装崩溃 [Code] function InitializeSetup(): Boolean; begin end; 安装时,创建的setup.exe失败: [22:10:29.945] *** Setup started [22:10:36.182] Setup version: Inno Se

我自己用XE6编译了inno安装程序。(我知道,文档建议使用旧的delphi版本,但我只有新的IDE)

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

[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

初始化设置()返回的值未定义

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

因此,您会得到一个未定义的行为。如果大多数情况下结果都是假的(RAX==0的最后8位),情况并非总是如此,您会遇到严重的“难以理解”问题,特别是在没有任何原因的情况下,它会起作用。

好吧,在这种情况下,结果是未定义的,但可能只会发生两种情况。安装程序将启动或不启动。在这种情况下没有提出任何例外。设置程序通过
RunBooleanFunction
方法设置
InitializeSetup
事件,该方法将未定义(但已声明)的结果转换为值1并相应返回。我们同意;)我等待OP回复:我的假设是它的安装程序崩溃,因为函数总是返回false,这可能是错误的……关于UB的小文本只是解释性的。实际上,由于代码在VM中转换,我所说的关于RAX的事情可能是错误的。@BBaz在添加“result:=True”后出现了相同的错误。setup.exe启动后,首先显示“选择安装语言”页面,然后单击“确定”后,异常警告窗口显示:“模块'setup.tmp'中地址006043c0处的访问冲突。读取地址00000014。”顺便说一句,我没有用IDE编译代码。我刚刚用build.bat编译了它。@TLama:BTW,谢谢你的帮助。我的inno安装环境现在正常。谢谢