DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

アドバタイズショートカットではなく、普通のショートカットを作成する

注意:セットアッププロジェクトはVisual Studio 2012からサポートされなくなりました。

Visual Studioのセットアッププロジェクトでは、「ファイルシステムエディタ」を使用することによりインストール時にショートカットを簡単に作成することができますが、このようにして作成されるショートカットはアドバタイズショートカット(Advertisable shortcut)となります。

アドバタイズショートカットはリンク先のファイルが存在しなくても実行することができるというWindows Installerの優れた機能ですが、困ったことも多々あります。普通のショートカットでは、エクスプローラからファイルをドロップすると、そのファイルのパスをコマンドライン引数にしてリンク先のアプリケーションを実行しますが、アドバタイズショートカットではこれができません。よって、Windowsの「送る」フォルダにショートカットを作成しても正常に機能しませんし、デスクトップにショートカットを作成してこのショートカットにファイルをドロップすることによってアプリケーションを起動するといったこともできません。

ここではアドバタイズショートカットではなく、普通のショートカットを作成する方法を幾つか紹介します。

一番簡単な方法は、DISABLEADVTSHORTCUTS Propertyを設定することでしょう。これにより、アドバタイズショートカットが作成されなくなります。

DISABLEADVTSHORTCUTSプロパティのようなWindows Installerプロパティを設定する方法としては、msiexecのコマンドライン引数で指定するか、Windows InstallerデータベースのPropertyテーブルで指定するかのどちらかになります。

msiexecのコマンドライン引数で指定する方法とは、MSIファイルをインストールするときに次のようなコマンドを使用する方法です。

msiexec /i (MSIファイル名) DISABLEADVTSHORTCUTS=1

Windows InstallerデータベースのPropertyテーブルで指定する方法とは、OrcaでMSIファイルを開き、PropertyテーブルにProperty「DISABLEADVTSHORTCUTS」、Value「1」の行を追加する方法です。

このようにDISABLEADVTSHORTCUTSプロパティを使った方法では、すべてのショートカットが通常のショートカットとなります。特定のショートカットのみ普通のショートカットにするには、Windows InstallerデータベースのShortcutテーブルをいじることになります。

まず、MSIファイルをOrcaで開き、Shortcutテーブルを表示します。そこで普通のショートカットにしたい設定の行を探し、Target列をショートカットのリンク先のパス(通常は「[TARGETDIR]\<ファイル名>」)に変更します。さらに、Icon_列を空白にします。これで保存すれば完了です。

  • 履歴:
  • 2010/2/28 誤字修正。