2012-04-09 10 views
3

セットアップコンテンツを1つの特定のディレクトリにのみインストールしたいので、ユーザーがインストールする正しいフォルダを選択しない限り、ディレクトリ選択ページのNextボタンを無効にします。特定のフォルダにのみインストールを許可する方法はありますか?

ディレクトリ選択ページのNextボタンを無効にして、ユーザーが特定のディレクトリを選択した直後に有効にするにはどうすればよいですか?

+1

ようこそStackOverflow! *ユーザーが正しいフォルダを選択するまで、次のボタンはグレー表示されます*かなり誤解を招くことはありませんか?ユーザーが正しいディレクトリを忘れるとどうなりますか? *フォルダを選択*編集ボックスを無効にするか、そのページを一切スキップしない方が良いでしょうか? – TLama

+0

インストールディレクトリはすべてのコンピュータで同じではなく、インストールパスを読むためのレジストリキーがプログラムにはないので、それは良くありません。私はreadmeファイルを持っているので、ユーザは正しいディレクトリを忘れることはありません。インストーラには、ユーザを支援するカスタムテキストもあります。 – user1320880

答えて

6

次のサンプルではC:\MySecretDirフォルダ(MySecretDir定数)あなたはSelectDirページに到達したときNextボタンを無効にし、ユーザーが入力(またはブラウズ・ディレクトリ]ダイアログボックスから選択した)場合にのみ、それを有効にする方法を示しています。比較は大文字と小文字を区別しません。ユーザーは自分が望むものを入力することができます。

[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; 

それとも、選択したディレクトリ内の特定のファイルMyUniqueFile.exeがあります場合にのみ、Nextボタンを有効OnDirEditChangeイベントハンドラで、このようにコードを変更したい場合:

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

私は何を言うことができますか?完璧な、ちょうど私が探していたもの!どうもありがとうございました! – user1320880

+1

NextButtonClickでチェックを行い、失敗した場合に備えてメッセージボックスをスローし、関数がfalseを返すようにするほうが、使いやすいようです。この方法で、彼は彼が続けることができないようにユーザーに通知することができます。また、ボタンを無効にしても、サイレントインストールには影響しませんが、NextButtonClickを作成するとfalseが返されます。 – Nyerguds

+1

@ニャルグッズはい、そうかもしれません。私はちょうど質問された質問に答えました。サイレントセットアップについては、この質問がユーザーの選択を尋ねるので、何の効果もありません。 – TLama

2

あなたはからユーザーを停止することができディレクトリ選択ページを無効にして、インストールディレクトリを変更します。無効にすると、インストール中にページが表示されません。

[SETUP] 
DisableDirPage=yes 
+0

それは正しいですが、OPの要件は*ユーザーがインストールする正しいフォルダを選択しない限り、[ディレクトリ選択]ページの[次へ]ボタンを無効にします。 – TLama

関連する問題