Inno设置CreateInputDirPage但不检查文件夹是否存在

时间:2015-06-01 19:50:57

标签: inno-setup pascalscript

我有一个Inno Setup Pascal脚本,提示用户输入4个文件夹。其中三个文件夹应该已经存在。第4个用作占位符,我将来要安装VHD磁盘。所以我使用的是该文件夹的字符串值。

当用户运行脚本时,他会收到UNC路径不存在的错误(好吧,是的,它不应该存在。例如,如果他说“L:\ myfolder”那么L:驱动器不是加载了,那里没有磁盘。这是正确的。我的Inno安装脚本将在以后加载它。

如何禁用检查文件夹?

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');

1 个答案:

答案 0 :(得分:2)

您无法停用验证。

您可以使用.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;

这不包含浏览按钮。这是更多的工作,我不确定,如果它有意义,因为输入用于输入不存在的驱动器的路径。

enter image description here