GGG

プログラミング言語やソフトウェア開発について思ったことを書いてます

Wix悩んだことメモ:強制上書き

>症状

初回インストール時にインストール先のディレクトリ内にインストールしたいファイルが既にある場合、上書きしてくれません。(レジストリは問題なく上書きできる)

 

msiexec のログ上には、下記のように出力され上書きしてくれません。

 

MSI (s) (80:10) [16:07:18:259]: File: C:\***\***\abc.data;    Won't Overwrite;    Won't patch;    Existing file is unversioned but modified

 

 

 

>背景

Wixを使う前まではバッチファイルでファイルコピーによりインストールしていた。

Wixで作成したインストーラで初めてインストールする際に、既にファイルがある状態になっている。

 

>解決

msiexec のPROPERTYにREINSTALLMODEというのがあり、code='a'を使用するとファイルの強制上書きができます。

→バッチファイルを作成

 

補足)

初回インストール時にファイル上書きはされないが、その後に一度アンインストールしてから、再度インストールするとファイル上書きできる。(より正確にはアンインストール時に対象ファイルは削除されますので、上書きするファイルがない状態となり、インストールできる。)

 

使用例)

msiexec /i ******.msi REINSTALLMODE="am"

 

>参考URL

・REINSTALLMODE のリファレンス

https://msdn.microsoft.com/en-us/library/aa371182%28v=vs.85%29.aspx

 

・msiexecのインストール時のファイル上書きのメカニズム

http://blogs.msdn.com/b/astebner/archive/2005/08/30/458295.aspx