課題
次の条件の時、意図しない動作になる。
- msiファイルのセットアップで、既にインストールされているアプリをアップグレードする
- セットアップファイルに、ダウングレードされる(バージョンが小さくなる)DLLがある
この場合、ダウングレードされる前のDLLは、削除はされるが、DLL(ダウングレードされたDLL)はインストールされない。そのため、アプリが(部分的に)動作しなくなる。
操作による解決方法
インストール時の操作で、解決はできる。次のどちらかを行う。
- 一度、アンインストールしてから、セットアップする
- セットアップファイルを再度実行して、修復を行う
セットアップファイル作成時による解決方法
ここでは、WixToolset 5.0.2 でmsiファイルを作成するとする。
wxsファイルで、REINSTALLMODEを dmus
に指定する。
d ファイルがないか、または別のバージョンが存在する場合に再インストールします。
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
<Package Name="" ---- >
<SetProperty Id="REINSTALLMODE" Value="dmus" Before="FindRelatedProducts" Sequence="first"/>
以上のようにすると、コマンド ラインからプロパティを変更できるとのこと
次のようにしても良いはずだが、ICE40の警告がでる。
<Property Id="REINSTALLMODE" Value="dmus"/>
.msi ファイルで REINSTALLMODE プロパティを定義すると、予期しない動作が発生する可能性があります。 このエラーを解決するには、このプロパティを定義しないでください。