Inno Setup CreateInputDirPage 但不检查文件夹是否存在
Inno Setup CreateInputDirPage but don't check for folder existence
我有一个 Inno Setup Pascal 脚本提示用户输入 4 个文件夹。其中三个文件夹应该已经存在。第 4 个用作我将来要挂载 VHD 磁盘的占位符。所以我只使用这个文件夹的字符串值。
当用户运行脚本时,他得到一个错误,UNC 路径不存在(好吧,是的,它不应该存在。例如,如果他说 "L:\myfolder" 那么 L: 驱动器是尚未加载,那里没有磁盘。没错。我的 Inno Setup 脚本稍后会为您加载它。
如何禁用文件夹检查?
FoldersPage := CreateInputDirPage(InfoPage.ID,
'FoldersSettings', 'Customize folders settings for non-standard EGPL systems',
'If the defaults are acceptable, then click Next.',
False, 'New Folder');
FoldersPage.Add('GeoPackage Output Folder');
FoldersPage.Add('VHD Mount Path for GeoLibrarian');
FoldersPage.Add('EGPL Source Folder');
FoldersPage.Add('WWW Root Folder');
您不能禁用验证。
您可以通过使用 .Add
仅添加三个输入来解决这个问题。并手动添加第四个输入,控制它。
var
DataDirPage: TInputDirWizardPage;
CustomDirEdit: TEdit;
procedure InitializeWizard;
var
Index: Integer;
Offset: Integer;
PromptLabel: TNewStaticText;
UltimateEdit: TEdit;
PenultimateEdit: TEdit;
UltimateLabel: TNewStaticText;
begin
DataDirPage := CreateInputDirPage(wpSelectDir,
'FoldersSettings', 'Customize folders settings for non-standard EGPL systems',
'If the defaults are acceptable, then click Next.',
False, 'New Folder');
DataDirPage.Add('GeoPackage Output Folder');
Index := DataDirPage.Add('VHD Mount Path for GeoLibrarian');
PenultimateEdit := DataDirPage.Edits[Index];
Index := DataDirPage.Add('EGPL Source Folder');
UltimateEdit := DataDirPage.Edits[Index];
UltimateLabel := DataDirPage.PromptLabels[Index];
Offset := UltimateEdit.Top - PenultimateEdit.Top;
PromptLabel := TNewStaticText.Create(WizardForm);
PromptLabel.Top := UltimateLabel.Top + Offset;
PromptLabel.Width := UltimateLabel.Width;
PromptLabel.Height := UltimateLabel.Height;
PromptLabel.Parent := DataDirPage.Surface;
PromptLabel.Caption := 'WWW Root Folder';
CustomDirEdit := TEdit.Create(WizardForm);
CustomDirEdit.Top := UltimateEdit.Top + Offset;
CustomDirEdit.Width := UltimateEdit.Width;
CustomDirEdit.Parent := DataDirPage.Surface;
PromptLabel.FocusControl := CustomDirEdit;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = DataDirPage.ID then
begin
if CustomDirEdit.Text = '' then
begin
MsgBox('You must enter WWW Root Folder.', mbError, MB_OK);
Result := False;
end;
// Any other validation
end;
end;
这没有 浏览 按钮。还有更多的工作,我不确定它是否有意义,因为输入用于输入不存在的驱动器路径。
我有一个 Inno Setup Pascal 脚本提示用户输入 4 个文件夹。其中三个文件夹应该已经存在。第 4 个用作我将来要挂载 VHD 磁盘的占位符。所以我只使用这个文件夹的字符串值。
当用户运行脚本时,他得到一个错误,UNC 路径不存在(好吧,是的,它不应该存在。例如,如果他说 "L:\myfolder" 那么 L: 驱动器是尚未加载,那里没有磁盘。没错。我的 Inno Setup 脚本稍后会为您加载它。
如何禁用文件夹检查?
FoldersPage := CreateInputDirPage(InfoPage.ID,
'FoldersSettings', 'Customize folders settings for non-standard EGPL systems',
'If the defaults are acceptable, then click Next.',
False, 'New Folder');
FoldersPage.Add('GeoPackage Output Folder');
FoldersPage.Add('VHD Mount Path for GeoLibrarian');
FoldersPage.Add('EGPL Source Folder');
FoldersPage.Add('WWW Root Folder');
您不能禁用验证。
您可以通过使用 .Add
仅添加三个输入来解决这个问题。并手动添加第四个输入,控制它。
var
DataDirPage: TInputDirWizardPage;
CustomDirEdit: TEdit;
procedure InitializeWizard;
var
Index: Integer;
Offset: Integer;
PromptLabel: TNewStaticText;
UltimateEdit: TEdit;
PenultimateEdit: TEdit;
UltimateLabel: TNewStaticText;
begin
DataDirPage := CreateInputDirPage(wpSelectDir,
'FoldersSettings', 'Customize folders settings for non-standard EGPL systems',
'If the defaults are acceptable, then click Next.',
False, 'New Folder');
DataDirPage.Add('GeoPackage Output Folder');
Index := DataDirPage.Add('VHD Mount Path for GeoLibrarian');
PenultimateEdit := DataDirPage.Edits[Index];
Index := DataDirPage.Add('EGPL Source Folder');
UltimateEdit := DataDirPage.Edits[Index];
UltimateLabel := DataDirPage.PromptLabels[Index];
Offset := UltimateEdit.Top - PenultimateEdit.Top;
PromptLabel := TNewStaticText.Create(WizardForm);
PromptLabel.Top := UltimateLabel.Top + Offset;
PromptLabel.Width := UltimateLabel.Width;
PromptLabel.Height := UltimateLabel.Height;
PromptLabel.Parent := DataDirPage.Surface;
PromptLabel.Caption := 'WWW Root Folder';
CustomDirEdit := TEdit.Create(WizardForm);
CustomDirEdit.Top := UltimateEdit.Top + Offset;
CustomDirEdit.Width := UltimateEdit.Width;
CustomDirEdit.Parent := DataDirPage.Surface;
PromptLabel.FocusControl := CustomDirEdit;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = DataDirPage.ID then
begin
if CustomDirEdit.Text = '' then
begin
MsgBox('You must enter WWW Root Folder.', mbError, MB_OK);
Result := False;
end;
// Any other validation
end;
end;
这没有 浏览 按钮。还有更多的工作,我不确定它是否有意义,因为输入用于输入不存在的驱动器路径。