使用 Inno Setup 5.5.2 我试图根据路径的存在有条件地跳过安装目录的选择。具体来说,如果“D:\”驱动器可用,我希望将其安装在预定义的位置而不提示,如果它不可用,则提供具有合理默认值的提示。
我有适用于的代码DefaultDirName
,但不适用于DisableDirPage
:
[Code]
const
DefaultDrive = 'D:\';
AppFolder = 'SomeDir';
function GetDefaultDir( Param: String ) : String;
begin
if DirExists( DefaultDrive ) then begin
Result := DefaultDrive + AppFolder;
end else begin
Result := ExpandConstant('{pf}\') + AppFolder;
end;
end;
function DefaultDirValid( Param: String ) : Boolean;
begin
Result := DirExists( DefaultDrive );
end;
[Setup]
; Works as expected
DefaultDirName={code:GetDefaultDir}
...
; Compiler Error - Value of [Setup] section directive "DisableDirPage" is invalid.
DisableDirPage={code:DefaultDirValid}
我尝试使用函数来DisableDirPage
返回“yes”和“no”的字符串,以及 0 和 1 的整数。我还尝试过内联对DirExists
. 都产生了相同的编译器错误。
我最好的猜测是,它与DisableDirPage
采用三态 yes、no 或 auto 的事实有关。是否存在与需要返回的三态逻辑关联的特定类型?Inno Help on Scripted Constants只说:
被调用的函数必须有 1 个名为 Param 的字符串参数,并且必须根据使用常量的位置返回字符串或布尔值。