2010年11月5日金曜日

Visual Studioのセットアップ プロジェクトでアドバタイズショートカットを作らない方法

Visual Studio付属のセットアップ プロジェクトで、スタートメニューにショートカットを
作成しようとすると、必ずアドバタイズショートカットになってしまいます。
これには、いろいろと弊害があり、意図しない状況で修復インストールが動いてしまったりします。

厄介なことに、Visual Studioのオプションではどうすることも出来ません。(項目が無い)
かといって、リリース毎にOrcaで設定をいじるのも面倒です。
なので、なにか良い方法が無いか考えてみました。

結論からいえば、セットアップ プロジェクトのポストビルドイベントで何とかできます。

(1) 例によって、スクリプトファイルを入手するため、Windows Installer SDKをインストールします。
    (これはPlatform SDKの中に含まれています)

(2)*.vdprojがあるプロジェクトフォルダ直下にWiRunSQL.vbsをコピーします。
    WiRunSQL.vbsは、デフォルトでは下記の場所にあるはずです。

C:\Program Files\Microsoft Platform SDK\Samples\SysMgmt\Msi\Scripts\WiRunSQL.vbs

(3)ポストビルドイベントを次のように設定します。(マクロを使っていますのでコピペでいけるはず)

cscript "$(ProjectDir)WiRunSQL.vbs" "$(BuiltOuputPath)" "INSERT INTO Property(Property,Value) VALUES('DISABLEADVTSHORTCUTS', '1')"
































【参考サイト】
[MSDN] Execute SQL Statements

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

[DOBON.NET] MSIファイルのWindows Installerデータベースをプログラムで編集する