2017-05-31 1 views
1

を存在するかどうかを確認します。今Inno Setupのは、複数のフォルダが、私はこの行で呼び出されたカスタムアンインストール]ページで、持っている

UninstallProgressForm.InnerNotebook.ActivePage := UninstallConfigsPage; 

を、これは単にページにアンインストーラが実行されるたびに示したが、私はそれを必要とします特定のフォルダが存在する場合にのみ表示されます(6つあります)。私はorの束を使ってifの声明を出すことができましたが、それを行うためのより良い方法があるのだろうかと思っています。一般的に

答えて

2

は、フォルダごとにDirExistsを呼び出すよりも良い方法はありません。

if DirExists('C:\path1') or 
    DirExists('C:\path2') or 
    DirExists('C:\path3') then 
begin 
    { ... } 
end; 

ものの、ファイル/フォルダのセットを処理するとき、それは彼らのリストには、いくつかに保存されていることをお勧めしますコンテナ(TStringListまたはarray of stringなど)を使用して、(繰返し)バルク処理を可能にします。あなたはすでにmy solution to your other questionからその(Dirs: TStringList)を持っています。

var 
    Dirs: TStringList; 
begin 
    Dirs := TStringList.Create(); 
    Dirs.Add('C:\path1'); 
    Dirs.Add('C:\path2'); 
    Dirs.Add('C:\path2'); 
end; 
function AnyDirExists(Dirs: TStringList): Boolean; 
var 
    I: Integer; 
begin 
    for I := 0 to Dirs.Count - 1 do 
    begin 
    if DirExists(Dirs[I]) then 
    begin 
     Result := True; 
     Exit; 
    end; 
    end; 

    Result := False; 
end; 

しかし、私はあなたがチェックボックスへのすべてのパスをマップすること、your other questionから知っています。したがって、チェックボックスがある場合は、チェックボックスをオンにするだけです。

if CheckListBox.Items.Count > 0 then 
begin 
    UninstallProgressForm.InnerNotebook.ActivePage := UninstallConfigssPage; 

    { ... } 

    if UninstallProgressForm.ShowModal = mrCancel then Abort; 

    { ... } 

    UninstallProgressForm.InnerNotebook.ActivePage := UninstallProgressForm.InstallingPage; 
end; 
関連する問題