2017-02-13 3 views
0

私は4つのMSIを持つwixバンドルを持っています - バージョン1.0.0とバンドルバージョンは1.0.0です。私はこれをWindowsマシンにインストールし、ARPではWiXバンドルを1.0.0と見ています。wixバンドルのみインストールが変更されましたmsi

MSIのうちの1つ(Bなど)に変更を加え、バンドルバージョンを1.1.0に変更し、変更したMSI(B)バージョンを1.1.0に変更しました。残りのMSI(A、C、D)はまだ1.0.0です。

これで、バンドルをもう一度実行すると、A、C、Dのインストールはスキップされ、Bのみがアップグレードされ、バンドルもARPのバージョン1.1.0で更新されることが予想されます。しかし、私が見ているのは、すべてのパッケージ(A、B、C、D)のインストールがBだけでなく行われるということです。

私の期待は間違っていますか、

は、これは私が私のバンドルコード

<Chain> 

<MsiPackage Id=“A" 

       Cache="no” 

     Vital=“yes" 

       EnableFeatureSelection="no" 

       Permanent="no" Visible="no" 

       ForcePerMachine=“yes” 

      SourceFile = “<>”/> 

    <MsiPackage Id=“B" 

       Cache="no” 

     Vital=“yes" 

       EnableFeatureSelection="no" 

       Permanent="no" Visible="no" 

       ForcePerMachine=“yes” 

      SourceFile = “<>”/> 

</Chain> 

に持っているものであり、これは、私は、個々のMSIのための私のWXSに持っているものです。 MSI Bのバージョンを1.1.0に変更し、アップグレードコードを同じにしておきます。

<Product Id="*" UpgradeCode="<GUID which is same across installations>" 
     Version="1.0.0" /> 
<MajorUpgrade DowngradeErrorMessage="New version is present." 

私は多くのスレッドを検索しましたが、一般的にはすべてのMSIのアップグレードについて話しました。何か不明な点がありましたらお知らせください。事前にお手伝いいただきありがとうございます。

答えて

1

majorUpgrade要素の一部には、AllowSameVersionUpgrades属性があり、デフォルト値はnoです。

意味 "同じバージョンとアップグレードコード(ただし製品コードは異なる)を使用して製品をインストールすると、MSIは2つの製品として扱うことができ、yesに設定すると、msidbUpgradeAttributesVersionMaxInclusive MSIにはメジャーアップグレードと同じバージョンの製品を扱うように指示している」と語った。

この属性を確認し、問題の解決に役立つかどうかを確認してください。 ベストプラクティスは、すべてのmsisとバンドルにバージョンを変更することです。これは、製品をリリースするCI/CDパイプラインの一部として自動的に行われます。

+0

また、そのツールをまだ使用していない場合は、MicrosoftからOrca.exeを使用してMSIを検査することもできます。 –

+1

または、MSIの比較機能を持つinstedit。 –

+0

@ArkadySitnitskyとBrianSutherlandのコメントに感謝します。私はAllowSameVersionUpgradesでyesとnoを試してみましたが、どちらの場合もすべてのMSIがインストールされます。私が望むのは、バージョンが同じであればインストーラはモジュールをスキップし、バージョンが大きい場合にのみインストールしますが、これは起こっていません。 – randomuser15995183

1

すでにインストールされている場合、Burnはパッケージをインストールしません。しかし、パッケージをProduct/@Id="*"で再構築すると、パッケージIDが変更されました(製品コードとパッケージコードの両方)。そこで、Burnは新しいパッケージのように見えるものをインストールします。このようなパッケージをスキップするようにBurnを設定する場合は、再構築しないでください。

+0

よろしいですか?だから私たちは毎回新しい設定でバンドルをパッケージ化するので、変更がなくてもモジュールを再度ビルドすると思いますが、すべてのモジュールが再びビルドされるため、Product Id = "*"を使用しているため、それ以外の方法でボブ? – randomuser15995183

+0

'Product/@ Id =" * "'を使用しないでください。パッケージを再構築しないでください。 –

関連する問題