Ter*_*nce 4 installation inno-setup
使用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}
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用函数DisableDirPage返回'是'和'否'的字符串,以及0和1的整数.我也试过内联调用DirExists.所有都产生了相同的编译器错误.
我最好的猜测是它与DisableDirPage三态yes,no或auto 的事实有关.是否存在需要返回的三态逻辑关联的特定类型?Inno Help on Scripted Constants只说:
被调用的函数必须有1个名为Param的String参数,并且必须返回String或Boolean值,具体取决于使用常量的位置.
使用ShouldSkipPage事件处理程序时,如果DefaultDrive存在常量路径,则可以使用以下脚本跳过目录选择页面:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={code:GetDefaultDir}
[Code]
const
DefaultDrive = 'D:\';
AppFolder = 'Some Folder';
function GetDefaultDir(Param: string): string;
begin
Result := DefaultDrive + AppFolder;
if not DirExists(DefaultDrive) then
Result := ExpandConstant('{pf}\') + AppFolder;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := (PageID = wpSelectDir) and DirExists(DefaultDrive);
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2652 次 |
| 最近记录: |