2017-05-29 30 views
1

後で実行する際にチェックが外されている場合、Inno Setupでコンポーネントをアンインストールしてください。しかし、私が間違っていないなら、それはInno Setupでは不可能です(実際には、私がこれについて間違っていると私を修正します)。Inno Setup - コンポーネントがインストールされていることを確認します

代わりに、チェック機能を使用してコンポーネントがインストールされているかどうかを確認して、後続の実行中に非表示にすることができます。 Inno Setup: Selected Components以外の情報をどこから入手するのかはわかりません。HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[AppName]_is1

今問題は私のInno Setup: Selected Componentsは​​です。
as2またはas3を検出せずにasを検出するにはどうすればよいですか?

+0

[Inno Setup:アップグレード時に既にインストールされているコンポーネントを無効にする](https://stackoverflow.com/q/35454876/850848)も参照してください。 –

答えて

1

実際、Inno Setupはコンポーネントのアンインストールをサポートしていません。同様の問題(そしておそらくより良い)のために


、以下を参照してください。インストールされたコンポーネントのチェックのための
Inno Setup: Disable already installed components on upgrade


を、私はむしろに対応したファイルの存在を確認することができことをお勧めしたいです成分。


とにかく、あなたの実際の質問に答えるために:にアンインストールキーがHKCUで存在することができることを

function ItemExistsInList(Item: string; List: string): Boolean; 
var 
    S: string; 
    P: Integer; 
begin 
    Result := False; 
    while (not Result) and (List <> '') do 
    begin 
    P := Pos(',', List); 
    if P > 0 then 
    begin 
     S := Copy(List, 1, P - 1); 
     Delete(List, 1, P); 
    end 
     else 
    begin 
     S := List; 
     List := ''; 
    end; 

    Result := (CompareText(S, Item) = 0); 
    end; 
end; 

注意(ではない:あなたはInno Setup: Selected Componentsエントリをスキャンしたい場合は、この機能を使用することができますHKLM)。

+0

これはうまくいきますが、私はこれを使用するつもりはありません。私はInno Setup:Selected Componentsに何がしているのか誤解しました。私はそれが値にコンポーネントを追加すると思っていましたが、実際にはこの全体のプロセスを役に立たなくする値全体を置き換えます。あなたがリンクした記事の中の解決策を見ていきますが、あなたが提案したように、インストールされたファイルをチェックすることになります。 –

+0

実際、その投稿は同じことを言います。 'Inno Setup:Selected Components'はそれぞれのインストール時に書き直されているので、このようなポーリングでは役に立たないでしょう。ファイルが存在するかどうかを確認します。 –

+0

既にインストールされているコンポーネントを無効にして(チェックしたままにしておく)、 'Inno Setup:Selected Components'にすべてのコンポーネントがあります。 –

関連する問題