2016-09-09 3 views
1



私は、80個以上のオプションのコンポーネントリストを用意しており、ユーザーはそこから選択してインストールすることができます。

セットアップは以前のインストールコンポーネントを覚えており、コンポーネントを自動的にチェックします。ユーザーがすべてを選択解除すると、「コンポーネントが存在します」という警告メッセージボックスが表示されます。

ユーザーが80個のオプションすべてを選択解除したため、リストが長くなり、メッセージボックスが画面スペースから外れてユーザーがいなくなりました。

私は警告メッセージのテキストを持っており、%1

コンポーネントがあまりにも大きすぎる - InnoSetup

として一つの引数をとるメッセージであっNoUninstallWarningさを知っている私はむしろindiviualに記載されているすべてのオプションを持つよりも、引数の値を変更することができる方法はあります私はそれらをコンマ区切りにしたいと思いますか?

また、メッセージボックスにスクロールバーを表示できますか?

助けてください

+0

ほとんどのアプリケーションでは、ユーザーにいくつかのバージョンのアプリケーションをインストールさせてから個々のコンポーネントをアップグレードし、古いバージョンに他のコンポーネントを残すことはお勧めできません。 – Miral

答えて

1

いいえ、このメッセージは内部的なもので、Inno独自のソースコードを変更することなくカスタマイズすることはできません。

このような状況では、ユーザーは完全に突き当たってはいけません。ESCを押してコンポーネント選択ウィンドウに戻り、すべてを再度選択できる必要があります。

この問題を回避する簡単な方法は、一度インストールすると、ユーザーがコンポーネントの選択を解除できないようにすることです。あなたは、このようなコードのビットでこれを行うことができます。

var 
    InstalledComponentsDisabled: Boolean; 

procedure CurPageChanged(CurPageId: Integer); 
var 
    i: Integer; 
begin 
    if (CurPageId = wpSelectComponents) and 
    (WizardForm.PrevAppDir <> '') and 
    not InstalledComponentsDisabled then begin 
    InstalledComponentsDisabled := True; 
    for i := 0 to WizardForm.ComponentsList.Items.Count - 1 do begin 
     if WizardForm.ComponentsList.Checked[i] then begin 
     WizardForm.ComponentsList.ItemEnabled[i] := False; 
     end; 
    end; 
    end; 
end; 

これは、すでにアップグレードfixedにインストールされて何かを作ると同様の効果を持っています。

別の方法としては、すべてのコンポーネントにdisablenouninstallwarningを置き、メッセージボックスを完全に実装するか、コンポーネントをページ上に永久に削除することを警告する静的テキストを追加するか、コンポーネントの削除を実際にサポートする例:[InstallDelete]エントリまたはUninsH)。

+0

こんにちはミラル、 あなたの考えを共有していただきありがとうございます。 選択したコンポーネントを無効にしたくないのは、特定のコンポーネントのみが必要なアップグレードの状況があるためです。 メッセージボックスにスクロールバーを追加する方法はありますか? そうでない場合、すべてのコンポーネントにdisablenouninstallwarningを追加すると、ユーザーがすべての選択を解除すると、空のメッセージボックスが表示されます。そのメッセージボックスを非表示にするにはどうすればいいですか?メッセージボックスを隠す方法はありますか? –

関連する問題