1

wix ツールを使用して patch.msp ファイルを生成しました。次のコマンドを使用してコマンド ラインからインストールすると、アプリのすべてのコンポーネントが更新されます。

コマンド ライン経由で patch.msp ファイルをインストールすると、問題なく動作します。

msiexec.exe /p patch.msp /l*vx patch.log /qb REINSTALL=ALL REINSTALLMODE=omusa

ただし、ユーザーが Windows エクスプローラーを使用して patch.msp ファイルをインストールする場合 (基本的にはファイルをダブルクリックします)。正常にインストールされます (エラーは生成されず、インストールされた更新プログラムにも表示されます) が、dll ファイルと .exe ファイルは更新されません。

どうすればこれをインストールできREINSTALL=ALLますか?patch.wxs ファイルに追加できるコマンドはありますか?

前もって感謝します

編集

<CustomAction Id="PatchInstall" Property="PATCH" Value="REINSTALL" />
<InstallExecuteSequence>
  <Custom Action="PatchInstall" Before="InstallInitialize">REINSTALL="ALL"</Custom>
</InstallExecuteSequence>

これに関する更新 - 2012/09/27

提案された方法は機能しませんでしたが、私の解決策の問題は、ファイルのバージョンが変更されなかったため、ファイルが変更されていないことを知らせる警告メッセージがインストーラーに表示されることです。パッチのインストール時にログにこれを見つけました:

MSI (s) (48:F4) [17:32:34:025]: File: C:\Muzi_Test_Installer\ACME.dll;  Won't Overwrite;    Won't patch;    Existing file is of an equal version

ファイルのバージョンを更新して、テストを再実行します。

これがファイルのバージョン管理の問題であることを確認するためだけに最終更新を行ってください! ファイルのバージョンを更新するだけで、MSP は問題なく正常にインストールされます。

4

2 に答える 2

2

パッチがインストールされている場合は、REINSTALLプロパティをに設定してみてください。ALL

REINSTALLしたがって、新しいパッケージを変更し、プロパティを条件として値を変更する新しいカスタムアクションを追加する必要がありPATCHます。

編集:カスタムアクションを次のように機能させたい:

if (PATCH) {
    REINSTALL = "ALL";
}

したがって、WiXでは次のようになります。

<CustomAction Id="PatchInstall" Property="REINSTALL" Value="ALL" />
<InstallExecuteSequence>
    <Custom Action="PatchInstall" Before="InstallInitialize">PATCH</Custom>
</InstallExecuteSequence>
于 2012-08-21T08:15:47.950 に答える