使用Inno Setup 5.5.2我试图根据路径的存在情况有条件地跳过安装目录的选择。具体来说,如果'D:\'驱动器可用,我希望将它安装到预定义的位置而不提示,如果不可用,请提供合理的默认提示。Inno Setup - Conditional DisableDirPage
我有对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
返回的字符串“是”和“不”,以及0整数和我还试着呼吁DirExists
。所有产生了相同的编译器错误。
我最好的猜测是它与DisableDirPage
需要三态yes,no或auto这个事实有关。是否存在与需要返回的三态逻辑相关的特定类型?在Scripted Constants的创新科技帮助只是说:
被调用的函数必须有一个名为参数1个字符串参数,并且必须返回一个字符串或取决于常数使用中的Boolean值。
这对'ShouldSkipPage'事件处理程序的任务。 – TLama