Tips No.1 - 2002/06/08
■back ■index
 


  ■Windows Installer で通常形式のショートカットを作成する方法  
   
 

 まずVisual Studio Installerで普通にプロジェクトを作っていき、
ファイルシステムでショートカットを作成する。

このときのショートカットのプロパティは



 こんな感じで、 Component = Targetとなっている
この場合、実際にインストールしたあとの書t−とカットは謎の中間ファイルを通す形式で作られるため引数を与えて起動する方法だと、 なぜか起動できない。どうも中間ファイルを起動するさいに引数があると別物として扱われてしまうため、

これじゃあ使えん!!

 そこで普通に引数を使って起動できるショートカットを作成するためには
どうすればいいかというと、まVisual Studio Installerでインストールパッケージをビルトして普通にmsiパッケージを作成した後に、msiパッケージ編集ツールであるorcaで作成したmsiファイルを開く。

oracamsiを開くとorcaの左のリストにmsiのデータベーステーブルが出てくるので、その中からShortCutの項目を選ぶ

 ここに表示されているようにショートカット{xxxx....}のターゲットは自分自身のComponentとなっている。
そこでTargetComponentではなくて直接Fileを指定するようにに書き換える。

つまり、Target=Componentの形式になっていると、中間ファイルを呼び出すショートカット形式が作成されるため、ComponentIDではなくFileIDを指定する方式にするわけである。この方式にすると通常の形式のショートカットが作られるため、引数付きで起動することが可能となる

 ここで同じようにテーブルのFileの項目を参照すると、インストールパッケージに含まれるファイルの
IDがわかるためこのIDを元にShortCutの各アイテムのTargetを書き換える

このときの書式は

target = [#File]

 このようのように書く、この場合はショートカットを作る対象ファイルはdougagkj.exeであるため
これを示すFileIDFileテーブルを参照すると

 こんな感じで、ID"_B244919E80734D26A1F47AE9E449FF51"となっている、このIDをメモしておきまたShortCutテーブルに戻って、ショートカットのターゲットをこのように書き換える

 これで通常の直接対象ファイルを示すショートカットが作成される。
ちなみに、 この場合はデスクトップに作る場合を書き換えている

補足としては、今のように

Target = [#File]

と書く方法以外に

Target = [TARGETDIR]xxxxx.exe (xxxx.exeは任意)
Target = [WindowsFolder]cmd.exe (なんてのも書ける)

 というように完全に直接どのファイルを対象にショートカットを作るかを書く方法もある

 

 

色々メモ - 鴨屋敷 1999-2002 by 矢鴨 kamo@7cho-me.com
■back ■index