使用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