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

「スマートデバイス CAB プロジェクト」では CAB インストーラーを作成するときに内部で「CabWiz.exe」プログラムを使用して CAB ファイルを作成しています。しかしこのプログラムは「ASCII」の文字列しか受け付けない仕様になっているため、アプリケーションの名前などに日本語を使用するとコンパイルエラーになってしまいます。なので通常このセットアッププロジェクトでインストーラーで作成する場合は英数字で登録する形になります。もちろん Windows Mobile のプログラム欄に表示されるアプリケーション名も英数字です。
ですが、実はインストーラー作成時点でプログラムショートカットに日本語を割り当てる方法が存在します(正確には UTF-8 なのでほとんどの言語が使用できます)。一度設定してしまえば、プロジェクトの構成が変わらない限りビルド時にインストーラーが自動的に作成されるので手間もかかりません。
まず通常通りプロジェクトを作成してアプリケーションを構築していきます。このサンプルではインストーラーを作成することが目的なので、フォームを表示するだけのプログラムになっています。
ちなみに今回は「アプリケーションを Windows Mobile にインストールするための CAB ファイルの作成方法」のようにセットアッププロジェクトを作るのではなく、インストーラーの作成に必要な設定ファイルを作成してインストーラーを作成します。
Windows Mobile 用の CAB インストーラーを作成するには「CabWiz.exe」を使用します。その際に必要なファイルとして「.inf ファイル」があり、必要な情報とそのファイルにテキスト形式で入力していきます。
ちなみに「スマートデバイス CAB プロジェクト」はGUIでインストーラーを作成していますが、実際には .inf ファイルを生成して CabWiz.exe プログラムでコンパイルしています。
.inf ファイルは普通のテキストファイルなので、テキストファイルの拡張子を「.inf」に変更してプロジェクトに追加してかまいません。Visual Studio 上で作成する場合は、右のようにプロジェクトを右クリックして「追加」「新しい項目」と選択します。
.inf ファイルを直接作成する項目はないので、テキストファイルを作成します。
テキストファイルを作成したら拡張子を「.inf」に変更します。ファイル名はなんでもかまいませんが、.inf ファイルの名前がそのまま CAB ファイルの名前になります。ここではファイル名を「JapaneseNameInstallerSample.inf」としています。
.inf ファイルを作成したら、下のように各設定項目を入力していきます。下のほうに各項目の説明を簡単に書いていますが、詳しく調べたい方は MSDN ライブラリの「.inf ファイルの作成」を参照してください。
また、「スマートデバイス CAB プロジェクト」を作成してインストーラーを作成した場合、出力フォルダにコンパイルに使用した .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」を参照してください。 |
「CabWiz.exe」プログラムと上記で作成した .inf ファイルを使用することにより CAB ファイルを作成することができます。実は CAB ファイルは単純な圧縮ファイルであり、インストール情報については CAB ファイル内の XML ファイルで定義されています。
XML ファイルは基本的に UTF-8 の文字コードで定義されており、英数字以外の文字コードも扱えます。実は「CabWiz.exe」にはこの XML ファイルに対して、他の XML ファイルを結合させる仕組みが用意されています。
ここでは日本語名のプログラムショートカットを追加させる XML ファイルを作成し、CAB ファイルのインストール情報に追加させる手順について説明します。
XML ファイルはプロジェクトにどのような形で追加してもかまいません。Visual Studio で直接追加する場合は .inf ファイルのときと同じように項目を追加します。XML ファイルのテンプレートは存在するので右図のように指定して作成します。ここではファイル名を「Shortcut.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"
各設定が終わったらビルドを行います。ソリューション構成を「Release」に変更します。(Debug で配布することはまずないので…)
メニューから「ソリューションのビルド」を選択してビルドを開始します。
各設定に問題がなければステータスバーに「ビルド正常終了」と表示されるはずです。もし CAB ファイル作成時点でエラーが発生している場合は、出力先フォルダに「CabWiz.log」ファイルが出力されていると思うので、そちらを開いてエラーの原因を確認してください。(Visual Studio 上でのエラー表示は 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 | ページ作成 |