2016-03-25 2 views
0

リリースビルドの上にデバッグビルドをインストールしようとすると、カスタムアクションの問題が発生する、またはその逆。したがって、私はそのようなアップグレードを完全に防ぎ、ユーザーに最初に手動でアンインストールをさせたいと思っています。 (結構です)デバッグビルドをインストールする際にWiX - 以前のバージョンが同じ設定でない場合にアップグレードをキャンセルする(デバッグ/リリース)

<?if $(var.Configuration) = Debug?> 
    <?define DisallowUpgrade = "yes"?> 
<?else?> 
    <?define DisallowUpgrade = "no"?> 
<?endif?> 

<MajorUpgrade Disallow="$(var.DisallowUpgrade)" ... /> 

これは常に最初にアンインストールするようにユーザーを強制的に:

は、これまでのところ、私はこれを持っています。しかし、リリースビルドがデバッグビルドをアップグレードしようとしているのを止めることはありません。これどうやってするの?

ありがとうございます!


P.S.私が入力していたとき、私はデバッグビルドのバージョン番号を増やすことを考えました。これはうまくいくが、QAの人々と混乱する可能性があるため、よりクリーンな方法を望んでいる。

答えて

2

なぜ「ユーザー」はデバッグ/リリースビルドが何であるか知っていますか? IMOでは、リリースビルドのみが表示されるはずです。

ビルドデバッグMSIとMSIを2つの異なる製品(アップグレードコードとインストール先ディレクトリ)でビルドすることをお勧めします。デバッグではデバッグのみをアップグレードでき、リリースではリリースのみしかアップグレードできませんリリースされたMSIは今までに顧客に届きました。

もちろん、カスタムアクションが少ないほど良いでしょう。 :)

+0

私たちのデバッグビルドには、内部テスト用の追加機能が多数含まれています。彼らは顧客に行きません。また、サイドバイサイドインストールをサポートするために、私たちの製品を広範囲に書き直す必要があります。 2つの別個の製品としてそれらを持つことは問題ありません。一度に1つだけをインストールできるようにしながら、それを行うことは可能ですか? – smead

+0

はい。各製品は、他の製品のUpgardeCodeの検出のみ属性を使用してアップグレードエントリを持つことができます。次に、反対のプログラムが検出された場合にインストールをブロックする起動条件。 –

+0

パーフェクト。ありがとう! – smead

0

は、それをロードするためにRegistrySearchを使用して、レジストリに$(var.Configuration)を書く、と$(var.Configuration)の現在の値を持つレジストリに何があるかを比較するためにConditionを使用しています。

関連する問題