Microsoft Visual Studio Installer Projects
依存関係がプロジェクトを読み込む度に更新される件。
課題
プロジェクトが複数あると、DLLが複数配置されるので、古いバージョンは、ExcludeでTrueにしておく。
例えば、System.Net.Httpのバージョン違いで、
4.0.0.0
4.2.0.0
の2つが、配置される。
セットアップする時、古いバージョンだと、不具合が発生するので、解消しておかないといけない。
として、保存しておいても、再読み込みしたときには、更新されてしまい元に戻るようだ。
従って、ビルドする前に、その都度、設定し直さないといけない。
手作業で設定するDLLが大量にあるので、自動化したい。
結論
できませんでした!
あきらめます。
WiXを検討します。
Installer Projects(ほぼ更新停止状態だね)は、大規模なソリューションだと、だんだんつらくなってくるので、最初から、他の方法を採用すると良いかもしれません。
行ったこと
設定を書き換え
.vdprojファイルのテキストを読み込んで、同じDLLでバージョン違いは、ExcludeをTrueにするユーティリティを作成。
vdprojは、JSONぽいけどJSONではないです。これを、XMLに相互に変換するコードがあったので、それを利用しました。
Exclude以外にもReadonlyなど、保存した設定は、依存関係で更新されたDLLに利用されないようです。
失敗。
先に、ユーティリティを作成してしまったのも、失敗だった・・・。手作業で試してみてからがよかった・・・
Entryを削除
画像の例では、
_5C235C6F78D70C1873A72129C1E5F0A3
の、MsmKeyやOwnerKeyがあるので、それらを全て削除しても駄目。
参考
- https://stackoverflow.com/questions/8044840/how-come-the-exclude-property-of-the-assemblies-under-detected-dependencies-in
- https://stackoverflow.com/questions/3301316/vdproj-parser-wanted
- https://social.msdn.microsoft.com/Forums/windows/en-US/ee1d8bba-73cd-430c-8354-810558afb3de/exclude-filters-overwritten-on-detected-dependencies-when-reopening-project?forum=winformssetup