Windows Installer

概要

VS.NET2005にはセットアッププロジェクトというものが存在する。
このセットアッププロジェクトを使用すると、Windows Installerによるインストーラが実に手軽に作成出来る。特に一つのソリューションで複数のプロジェクトを管理し、そのソリューションごとまとめて配布するようなソフトウェアにとって、絶大な威力を発揮してくれることだろう。
私も通信将棋はほとんどこの機能をデフォルトのまま使用して、即席のインストーラを作成させていただいた。
このセットアッププロジェクトというものについての解説は俄仕込みの私がやるより、キャリアのある「どぼん!」氏にお願いしたいと思う。
http://dobon.net/vb/dotnet/deployment/index.html

問題点

セットアッププロジェクトを使用したインストーラの作成は、例えば通信将棋のような単独のアプリケーションにおいては実にスムーズに行くと思うのだが、WitchTreeのように複数のファイルと絡み合っているアプリケーションの場合に問題が発生する。
問題発生箇所は意外なところで、アプリケーションのショートカットを作成した場合に起こる。
セットアッププロジェクトで作成可能なショートカットは「アドバタイズショートカット」(Advertised Shortcut)というもので、このショートカットには通常のEXEのショートカットのようにファイルをドラッグ&ドロップ出来ないのだ。
エクスプローラ上ではドロップしようとすると禁止マークのアイコンが出る。
おそらくMicrosoftのアプローチとしては、関連付けに登録してエクスプローラからファイルを開きましょう、ということなのかもしれない。
実にハタ迷惑な話である。

検証結果

いやいや、いくらなんでもそれはないだろMicrosofotという事で調べて見た。


1.ショートカットの内容
中身はバイナリで見る気がしないのでスクリーンショット


2.関連付けの設定内容
ショートカットと同じようなやり方で関連付けをしてみると、こちらはEXEへの参照になっている。


3.強引に引数を指定してみる
コマンドラインから「アドバタイズショートカット aa」と入力すると、プログラム側にも通知される。
要はアドバタイズショートカット自体の仕組みではなく、エクスプローラがブロックしている模様。ブロックする意味がない気もするのだが・・。


4.WordやPowerPointを検証してみる
同じアドバタイズショートカットのアプリケーションでどういうアプローチか調べて見る。
同じようにドラッグ&ドロップは出来ない。


5.IEやVS.NETのショートカット
アドバタイズになっていないからドロップできる。
Microsoftよどこへ行く・・。


6.ショートカットのArgumentsプロパティ
コマンドライン引数が制御出来るというような記述があった。
http://msdn2.microsoft.com/ja-JP/library/8a47xx30.aspx
※英語も内容同じ。
よって[%1]、%1、"%1"、[CommandLine]などは試して見たが、
ドラッグできない状態に変化はなかった。

解決方法

やはり「どぼん!」氏が詳しい。
http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html
私も今回はOrcaで行く事にした。
まだまだInstallShieldは安泰かな。