Как разрешить установку только в определенную папку?

Я хотел бы установить свой установочный контент только в один конкретный каталог, поэтому я хочу иметь Next Кнопка на странице выбора каталога отключена, если пользователь не выберет нужную папку для установки.

Как я могу отключить Next кнопка на странице выбора каталога и включить его сразу после того, как пользователь выберет конкретный каталог?

2 ответа

Решение

В следующем примере показано, как отключить 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;

Вы можете запретить пользователям изменять каталог установки, отключив страницу выбора каталога. При отключении страница не будет отображаться во время установки.

[SETUP]
DisableDirPage=yes
Другие вопросы по тегам