カウンタ

プログラムに日本語名のショートカットを登録する

ページ更新日:2009/ 9/29
概要

アプリケーションを Windows Mobile にインストールするための CAB ファイルの作成方法」で CAB 形式のインストーラーを作成しましたが、この方法ではプログラムに日本語名のショートカットを指定することができません。ここではプログラムのショートカットに日本語名で表示させる方法について説明します。

プログラムに日本語名のショートカットを登録する
動作確認バージョン
.NET Compact Framework バージョン
  • 2.0
  • 3.5
Visual Studio バージョン
  • 2008
Windows Mobile SDK バージョン
  • 5
Tips

スマートデバイス CAB プロジェクト」では CAB インストーラーを作成するときに内部で「CabWiz.exe」プログラムを使用して CAB ファイルを作成しています。しかしこのプログラムは「ASCII」の文字列しか受け付けない仕様になっているため、アプリケーションの名前などに日本語を使用するとコンパイルエラーになってしまいます。なので通常このセットアッププロジェクトでインストーラーで作成する場合は英数字で登録する形になります。もちろん Windows Mobile のプログラム欄に表示されるアプリケーション名も英数字です。

ですが、実はインストーラー作成時点でプログラムショートカットに日本語を割り当てる方法が存在します(正確には UTF-8 なのでほとんどの言語が使用できます)。一度設定してしまえば、プロジェクトの構成が変わらない限りビルド時にインストーラーが自動的に作成されるので手間もかかりません。

アプリケーションを作成するためのプロジェクトを作成する

プロジェクト作成まず通常通りプロジェクトを作成してアプリケーションを構築していきます。このサンプルではインストーラーを作成することが目的なので、フォームを表示するだけのプログラムになっています。

ちなみに今回は「アプリケーションを Windows Mobile にインストールするための CAB ファイルの作成方法」のようにセットアッププロジェクトを作るのではなく、インストーラーの作成に必要な設定ファイルを作成してインストーラーを作成します。

CAB を作成するための .inf ファイルを作成する

プロジェクト - 追加 - 新しい項目Windows Mobile 用の CAB インストーラーを作成するには「CabWiz.exe」を使用します。その際に必要なファイルとして「.inf ファイル」があり、必要な情報とそのファイルにテキスト形式で入力していきます。

ちなみに「スマートデバイス CAB プロジェクト」はGUIでインストーラーを作成していますが、実際には .inf ファイルを生成して CabWiz.exe プログラムでコンパイルしています。

.inf ファイルは普通のテキストファイルなので、テキストファイルの拡張子を「.inf」に変更してプロジェクトに追加してかまいません。Visual Studio 上で作成する場合は、右のようにプロジェクトを右クリックして「追加」「新しい項目」と選択します。

全般 - テキスト ファイル.inf ファイルを直接作成する項目はないので、テキストファイルを作成します。

.inf ファイル作成テキストファイルを作成したら拡張子を「.inf」に変更します。ファイル名はなんでもかまいませんが、.inf ファイルの名前がそのまま CAB ファイルの名前になります。ここではファイル名を「JapaneseNameInstallerSample.inf」としています。

.inf ファイルを作成したら、下のように各設定項目を入力していきます。下のほうに各項目の説明を簡単に書いていますが、詳しく調べたい方は MSDN ライブラリの「.inf ファイルの作成」を参照してください。

また、「スマートデバイス CAB プロジェクト」を作成してインストーラーを作成した場合、出力フォルダにコンパイルに使用した .inf ファイルが出力されるので、それをひな型に作成したほうが手っ取り早く、値の入力ミスを防ぐことができると思います。

JapaneseNameInstallerSample.inf (例)
[Version]
Signature="$Windows NT$"
Provider="ManufacturerName"
CESignature="$Windows CE$"

[CEStrings]
AppName="JapaneseNameShortcut"
InstallDir=%CE1%\%AppName%

[Strings]
Manufacturer="ManufacturerName"

[CEDevice]
VersionMin=4.0
VersionMax=9.99
BuildMax=0xE0000000

[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1

[SourceDisksNames]
1=,"Common1",,""

[SourceDisksFiles]
"JapaneseNameShortcut.exe"=1

[DestinationDirs]
Shortcuts=0,%CE2%\Start Menu
Files.Common1=0,"%InstallDir%"

[Files.Common1]
"JapaneseNameShortcut.exe","JapaneseNameShortcut.exe",,0

各セクション、キーの説明について下に記載しています。

セクション キー パラメータ
Version Signature 通常"$Windows NT$"を指定します。
  Provider アプリケーションを開発した会社名・個人名などを入力します。英数字のみです。この名前を後で変えたりすると、Windows Mobile では別アプリケーションとして識別されます。
  CESignature "$Windows CE$"固定です。
CEStrings AppName アプリケーションの名前を入力します。英数字のみです。任意の名前で指定可です。ただし、この名前を後で変えたりすると、Windows Mobile では別アプリケーションとして識別されます。
  InstallDir プログラムのインストール先フォルダです。「%CE1%」を使用すると、「Program Files」を指定したことになります。また、「AppName」を使用すると、上記の AppName キーにしていした文字列に置き換えられます。特殊なフォルダ構成にしない場合は「%CE1%\%AppName%」を指定してください。
Strings Manufacturer アプリケーションを開発した会社名・個人名などを入力します。英数字のみです。通常は[Version]Provider と同じにします。
CEDevice VersionMin インストール可能な Windows CE の最小バージョンを指定します。アプリケーションに合わせて指定してください。数値の定義は「メジャーバージョン.マイナーバージョン」となっています。
  VersionMax インストール可能な Windows CE の最大バージョンを指定します。アプリケーションに合わせて指定してください。数値の定義は「メジャーバージョン.マイナーバージョン」となっています。
  BuildMax インストール可能な Windows CE の最大ビルド番号です。特になければ「0xE0000000」固定でかまいません。この項目自体なくてもかまいません。
DefaultInstall CEShortcuts ファイルへのショートカットを定義するセクションを示す文字列。「Shortcuts」と指定しており、通常はプログラム一覧へのショートカット作成に必要なのですが、今回は別な方法でショートカットを定義するので今回の .inf ファイルでは使用しません。
  AddReg レジストリ追加を定義するセクションを示す文字列。「RegKeys」と指定していますが今回の .inf ファイルでは使用しません。
  CopyFiles ファイルをコピーを定義するセクションを示す文字列。今回は実行ファイル一つだけコピーするのでセクション「Files.Common1」をひとつだけ定義しています。インストールで2つ以上のファイルをコピーする場合はカンマで区切って定義します。(CopyFiles=Files.Common1,Files.Common2,…)
SourceDisksNames   アプリケーションが存在するディスクの名前とパスを定義します。フォーマットは「disk_id= ,comment,,path」です。コピーするファイルの数だけ定義します。
  disk_id ファイルの識別に使用する任意のIDです。
  comment 任意のコメントを入力できます。
  path コピー元のファイルのあるフォルダパスを指定します。絶対パスかインストーラー出力先フォルダからの相対パスを指定します。
SourceDisksFiles   アプリケーションが格納されているファイルの名前とパスを定義します。フォーマットは「filename=disk_id」です。コピーするファイルの数だけ定義します。
  filename コピーするファイル名を指定します。
disk_id ファイルの識別に使用する任意のIDです。「SourceDisksNames.disk_id」との関連づけに使用されます。
DestinationDirs   ファイルのインストール先を指定します。フォーマットは「file_list_section = 0,subdir」です。コピーするファイルの数だけ定義します。サンプルファイルではショートカットのパスも指定していますが、ショートカットについては他のファイルで定義するので、ここでのショートカットのパス指定については特に意味はありません。
  file_list_section [DefaultInstall] CopyFiles で指定したセクション名を指定します。
  subdir file_list_section セクションで指定されている ファイルのインストール先フォルダを指定します。「%InstallDir%」は[CEStrings]InstallDir で指定したパスに置き換えられます。
Files.CommonX…   コピーするファイルの定義を行います。フォーマットは「destination_filename,source_filename,,flags」です。ファイルが複数ある場合はこのセクションは複数になります。
  destination_filename コピー先のファイル名を指定します。
  source_filename コピー元のファイル名を指定します。
  flags コピーする際のフラグです。詳しくは MSDN ライブラリ「CopyFiles」を参照してください。

日本語のプログラムショートカットを作成するための XML ファイルを作成する

データ - XML ファイルCabWiz.exe」プログラムと上記で作成した .inf ファイルを使用することにより CAB ファイルを作成することができます。実は CAB ファイルは単純な圧縮ファイルであり、インストール情報については CAB ファイル内の XML ファイルで定義されています。

XML ファイルは基本的に UTF-8 の文字コードで定義されており、英数字以外の文字コードも扱えます。実は「CabWiz.exe」にはこの XML ファイルに対して、他の XML ファイルを結合させる仕組みが用意されています。

ここでは日本語名のプログラムショートカットを追加させる XML ファイルを作成し、CAB ファイルのインストール情報に追加させる手順について説明します。

XML ファイルはプロジェクトにどのような形で追加してもかまいません。Visual Studio で直接追加する場合は .inf ファイルのときと同じように項目を追加します。XML ファイルのテンプレートは存在するので右図のように指定して作成します。ここではファイル名を「Shortcut.xml」としていますが、任意の名前でかまいません。

ショートカット追加用 XML ファイル作成右図のように XML ファイルを追加します。Visual Studio で作成すると「<?xml version="1.0" encoding="utf-8" ?>
」とコードが表示されていますが、XML を結合するには使用しないので消してください。


XML を以下のように定義します。

<characteristic type="FileOperation">
  <characteristic type="%CE11%" translation="install">
    <characteristic type="MakeDir" />
    <characteristic type="日本語名アプリ.lnk" translation="install">
      <characteristic type="Shortcut">
        <parm name="Source" value="%InstallDir%\JapaneseNameShortcut.exe" translation="install" />
      </characteristic>
    </characteristic>
  </characteristic>
</characteristic>

2行目の「%CE11%」はプログラムのショートカットを配置するフォルダパスです。

4行目に日本語のショートカット名を入力します。拡張子は必ず「.lnk」にしてください。

6行目にはショートカットから実行するプログラムのファイルパスを指定します。

ビルド時に自動的にインストーラーを作成するようにする。

プロパティを開くCabWiz.exe」と作成したファイルを使いコマンドラインから CAB ファイルを作成することもできますが、手動で作成するのも面倒なので Visual Studio でビルドしたときに自動的にインストーラーを作成できるようにしてみましょう。

プロジェクトのプロパティを開きます。

ビルドイベント - ビルド後に実行するコマンド ライン「ビルド イベント」タブを選択し、「ビルド後の編集」ボタンをクリックします。

ビルド後に実行するコマンド ラインダイアログが表示されたら以下のように入力します。色の付いている部分は下記の注意を見て環境に合わせて変更してください。

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\CabWiz.exe" "$(ProjectDir)JapaneseNameInstallerSample.inf" /dest "$(TargetDir)" /err "$(TargetDir)CabWiz.log" /postxml "$(ProjectDir)Shortcut.xml"

    • CabWiz.exe のあるフォルダを指定してください。32bit OS であるか 64bit OS であるか、Visual Stdio であるか Windows Mobile SDK であるか、プログラムのインストール先を変更しているか、などで変わってきます。
    • 作成した .inf ファイル名を指定してください。「$(ProjectDir)」はプロジェクトディレクトリのパスに置き換えられます。
    • 作成した XML ファイル名を指定してください。「$(ProjectDir)」はプロジェクトディレクトリのパスに置き換えられます。

Release 選択各設定が終わったらビルドを行います。ソリューション構成を「Release」に変更します。(Debug で配布することはまずないので…)

ソリューションのビルドメニューから「ソリューションのビルド」を選択してビルドを開始します。

ビルド正常終了各設定に問題がなければステータスバーに「ビルド正常終了」と表示されるはずです。もし CAB ファイル作成時点でエラーが発生している場合は、出力先フォルダに「CabWiz.log」ファイルが出力されていると思うので、そちらを開いてエラーの原因を確認してください。(Visual Studio 上でのエラー表示は CAB 生成時にエラーが発生していることはわかりますが、詳細まではわかりません)

作成された CAB ファイル出力先フォルダを見てみると CAB ファイルが作成されていることがわかります。このファイルを Windows Mobile に配置して実行するとアプリケーションをインストールすることができます。

実際に CAB ファイルを配置して Windows Mobile 上でインストールしてみましょう。

右図のようにプログラムのショートカット名が日本語になっていることがわかります。

プロジェクト ダウンロード
ファイル サイズ .NET Compact Frameworkバージョン 作成日
windows_mobile_japanesenameshortcut.zip 17.0 KB 2.0 2009/09/29
コード
更新履歴
更新日時 更新内容
2009/09/29 ページ作成
広告
Copyright (C) since 2005 Yuichi Onodera (おのでら), All rights reserved.