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

こんな感じで、 Component = Targetとなっている
この場合、実際にインストールしたあとの書t−とカットは謎の中間ファイルを通す形式で作られるため引数を与えて起動する方法だと、
なぜか起動できない。どうも中間ファイルを起動するさいに引数があると別物として扱われてしまうため、
これじゃあ使えん!!
そこで普通に引数を使って起動できるショートカットを作成するためには
どうすればいいかというと、まVisual Studio Installerでインストールパッケージをビルトして普通にmsiパッケージを作成した後に、msiパッケージ編集ツールであるorcaで作成したmsiファイルを開く。
oracaでmsiを開くとorcaの左のリストにmsiのデータベーステーブルが出てくるので、その中からShortCutの項目を選ぶ

ここに表示されているようにショートカット{xxxx....}のターゲットは自分自身のComponentとなっている。
そこでTargetをComponentではなくて直接Fileを指定するようにに書き換える。
つまり、Target=Componentの形式になっていると、中間ファイルを呼び出すショートカット形式が作成されるため、ComponentIDではなくFileIDを指定する方式にするわけである。この方式にすると通常の形式のショートカットが作られるため、引数付きで起動することが可能となる
ここで同じようにテーブルのFileの項目を参照すると、インストールパッケージに含まれるファイルの
IDがわかるためこのIDを元にShortCutの各アイテムのTargetを書き換える
このときの書式は
target = [#File]
このようのように書く、この場合はショートカットを作る対象ファイルはdougagkj.exeであるため
これを示すFileIDはFileテーブルを参照すると

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

これで通常の直接対象ファイルを示すショートカットが作成される。
ちなみに、 この場合はデスクトップに作る場合を書き換えている
補足としては、今のように
Target = [#File]
と書く方法以外に
Target = [TARGETDIR]xxxxx.exe (xxxx.exeは任意)
Target = [WindowsFolder]cmd.exe (なんてのも書ける)
というように完全に直接どのファイルを対象にショートカットを作るかを書く方法もある
|