我自己用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。
答案 0 :(得分:0)
InitializeSetup()
返回的值未定义。
function InitializeSetup(): Boolean;
begin
result := true;
end;
由于这个原因,你得到一个未定义的行为。如果大多数时候结果都是假的(RAX的最后8位== 0),情况并非总是如此,你会得到一个严重的“难以理解”的问题,特别是在无缘无故的情况下,工作。