とっちゃん's Blog

WindowsInstaller に WiX はいかがですか~

目次

Blog 利用状況

ニュース

とっちゃんって?

コミュニティ

メーリングリスト

@ITの記事

CodeZineの記事

WiX チュートリアル

Windows ユーザー エクスペリエンス ガイドライン

唯一の日本語書籍

人気のほどは...

記事カテゴリ

書庫

日記カテゴリ

インストーラ関連

旧館

[msi]Windows 8 のスタート画面にショートカットを載せないでインストールする

Windows Installer 5.0(Windows 7以上のOSに搭載)から、MsiShortcutProperty Table というショートカットのプロパティを設定するためのテーブルが追加されています。WiX を使ってる場合は ShortcutProperty Element です。

この機能そのものは、ショートカットに アプリケーションID を関連付け、ジャンプリストや最近使ったファイルなどをアプリケーションと一緒にスタートメニューでも反映できるようにWindows7で追加された機能です(最近使ったファイルの関連付けは、OS側でもやっているため、Vistaからできている)。

他にもいくつか設定できるプロパティがあるのですが、この一つに Windows 8 のスタート画面にショートカットをPIN止めするかというフラグがあります。

いや、このフラグずーっと前から探してたんですが全然見つけられなかったんですよね。この間も自分のローカルなMSDNライブラリを探していて、そこにはそれっぽいのが見つからず、Facebook で愚痴っていたら、biac さんが、それっぽいやつとヒントをくれました。

こいつの最後のほうに、System.AppUserModel.StartPinOption プロパティでスタート画面へのピン止め設定ができるよと。。。本気でさりげなく書かれています。検索で探せてませんでした。

具体的には

<Component Id="SubApp.exe" ...>
  <File Source="$(var.SubApp.TargetPath)" KeyPath="yes"/>
  <Shortcut Id="SubApp.exe" ...>
    <ShortcutProperty Id="SubApp.StartPinOption" Key="System.AppUserModel.StartPinOption" Value="1"/>
  </Shortcut>
</Component>

という感じで設定します。

これで、初めてインストール(本当に初めて)した時にこの設定が反映され、非表示としているものはスタート画面には出てこなくなります。

ただし、注意点が一つだけ。

スタート画面の設定は「ユーザーごとに保存」されています。インストール後、スタート画面を開いた時点でスタート画面へのピン止め設定がユーザーごとに別の情報として格納されます。

なので、いっぱいあるからあとから消すことにした!として、インストーラを書き換えても反映されません(昨日それで一日つぶした...orz)。

なので、一番最初にショートカットを用意するインストーラの時点からこの部分にぶれのでないような設計をしておく必要があります。

特に注意が必要なのは上書きインストールによるバージョンアップ。ショートカットの名前が同じなら入れ替えても変わらないので、そのまま引っ張り続けてしまいます。

投稿日時 : 2012年11月8日 14:53

コメントを追加

# [msi]Windows 8 のスタート画面にショートカットを載せないでインストールする 2012/11/09 10:17 .NET Clips

素敵なエントリーの登録ありがとうございます - .NET Clipsからのトラックバック

タイトル  
名前  
URL
コメント