我有一个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');
答案 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;
这不包含浏览按钮。这是更多的工作,我不确定,如果它有意义,因为输入用于输入不存在的驱动器的路径。