如何只允许安装到特定文件夹?

时间:2012-04-09 08:00:41

标签: inno-setup

我想将我的设置内容仅安装到一个特定目录,因此我希望禁用目录选择页面上的Next按钮,除非用户选择要安装的正确文件夹。

如何在目录选择页面上禁用Next按钮,并在用户选择特定目录后立即启用它?

2 个答案:

答案 0 :(得分:6)

以下示例显示了当您到达Next页面时如何禁用SelectDir按钮,并仅在您输入(或从浏览目录对话框中选择)C:\MySecretDir文件夹时启用它(MySecretDir常数)。比较不区分大小写,因为用户可以输入他(或她)想要的任何内容。

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
const
  MySecretDir = 'C:\MySecretDir';

procedure OnDirEditChange(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := CompareText(WizardDirValue, MySecretDir) = 0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    OnDirEditChange(nil);
end;

procedure InitializeWizard;
begin
  WizardForm.DirEdit.OnChange := @OnDirEditChange;
end;

或者,如果您只想在所选目录中有特定文件Next时启用MyUniqueFile.exe按钮,请以这种方式修改OnDirEditChange事件处理程序中的代码:

procedure OnDirEditChange(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := FileExists(AddBackslash(WizardDirValue) +
    'MyUniqueFile.exe');
end;

答案 1 :(得分:2)

您可以通过禁用目录选择页面来阻止用户更改安装目录。禁用时,安装过程中不会显示页面。

[SETUP]
DisableDirPage=yes