1

Web をクロールしましたが、解決策が見つからなかったか、手がかりがありませんでした。

RemoveExistingProductsセットアップで条件付きでアクションを実行する必要があります。次のように、既存のすべての製品をデフォルトでアンインストールするセットアップを行います。

<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="No downgrades allowed" />

これはうまくいきます。しかし、ユーザーが UI のチェックボックスを選択解除したときに、インストーラーが以前の製品バージョンをアンインストールしないようにします。だから私はこのようなことを試しました:

    <Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />

    <Upgrade Id="3E700BA7-CAF8-4C49-A53A-70F70DE0C8D6">
        <UpgradeVersion
             Minimum="1.0.0.0" Maximum="99.0.0.0"
             Property="PREVIOUSVERSIONSINSTALLED"
             IncludeMinimum="yes" IncludeMaximum="no" OnlyDetect="myVar" />
    </Upgrade>

    <Property Id="myVar" Value="no" />

を設定できることを願っていますmyVarが、これは違法です。

私の問題を解決する方法を知っている人はいますか?

その理由は、ユーザーが自己責任で、複数のバージョンの製品をインストールできるようにしたいからです。これはお客様からのリクエストです。

4

1 に答える 1

0

RemoveExistingProductsデフォルトのシーケンスでは、UIの前に実行されると思います。

RemoveExistingProductsアクションを再配線して後になるようInstallFinalizeにし、次の条件でトリガーすることができます。

<RemoveExistingProducts After="InstallFinalize">
    NOT CHECKBOX
</RemoveExistingProducts>

あなたの場合、これがどのようにうまくいくかわかりません。

チェックボックスをオンにしてダイアログを終了し、製品を手動でアンインストールするときに、カスタムアクションを実行してみることもできます。たぶん、あなたは前述のRemoveExistingProductsカスタムアクションでの起動を強制することさえできます。

最後の解決策の1つは、ユーザーに製品をアンインストールするかどうかを尋ねる別のアンインストーラーを作成し、実際のインストーラーをフォローアップすることです。

于 2013-02-20T03:04:21.917 に答える