文書番号: 915770 - 最終更新日: 2006年2月27日 - リビジョン: 1.1

Windows Mobile 5.0: CAB ファイル インストーラで日本語のファイル名などを生成する場合に発生する問題ついて

すべて展開する | すべて折りたたむ

概要

Windows Mobile 5.0 ベースのデバイスに CAB ファイルインストーラを用いてプログラムをインストールするとき、インストールされるファイルやショートカット等に日本語、中国語、韓国語などの東アジア ロケールの文字列が含まれている場合、インストールされたファイルやショートカットが正常に表示されないことがあります。これは、主に Windows Mobile 2003 Software 向けに作成された CAB ファイル インストーラで発生します。

原因

Windows Mobile 5.0 では、Windows Mobile 2003 Software などの旧バージョンのデバイス向けに作成された CAB ファイルのインストールが行われると、インストール情報ファイル (.INF) ファイルをバイナリ化した .DAT ファイルの解析を行なうため内部で UTF-8 の XML 形式にデータをエンコードします。このとき、日本語などの 2 バイト文字列の変換をサポートしていないため、ファイル名などが正しく生成できません。
Windows Mobile 5.0 Software のアプリケーション開発には Visual Studio 2005 を利用します。CAB ファイル生成ツールも、これに伴い Visual Studio 2005 に含まれるものを利用します。しかし、Visual Studio 2005 に含まれる CAB ファイル生成ツール (cabwiz.exe) では、.INF ファイルに日本語などが記述されている場合エラーを生成します。

回避策

Windows Mobile 5.0 デバイス向けの CAB ファイル インストーラを用いて、日本語等の東アジア ロケール言語のショートカット、ファイル、レジストリを生成するためには直接 XML を記述し、そのファイルを UTF-8 でエンコードされたファイルとして保存することで実現可能です。
  1. メモ帳を開き、次の例のように XML ファイルを記述し、それぞれのオペレーションを指定します。
    <!--
    //////////////////////////////////////////////////////////////////////////
    // ファイル オペレーション
    // 
    // "\My Documents\サンプル" にフォルダを作成し、インストールされるファイル
    // "data.txt" を "データ.txt" に名前を変更してコピーします。
    // "\Windows\Start Menu\Programs" にインストールされるファイル "Hello.exe"
    // をファイル名 "サンプル.lnk" でショートカットとしてコピーします。
    //
    // Note:
    //  %CE5%  = "\My Documents"
    //  %CE11% = "\Windows\Start Menu\Programs"
    -->
    <characteristic type="FileOperation">
      <characteristic type="%CE5%\サンプル" translation="install">
      <characteristic type="MakeDir" />
        <characteristic type="データ.txt" translation="install">
          <characteristic type="Move">
            <parm name="Source" value="%InstallDir%\data.txt" translation="install"/>
          </characteristic>
        </characteristic>
      </characteristic>
    
      <characteristic type="%CE11%" translation="install">
        <characteristic type="サンプル.lnk" translation="install">
          <characteristic type="Shortcut">
            <parm name="Source" value="%InstallDir%\Hello.exe" translation="install" />
          </characteristic>
        </characteristic>
      </characteristic>
    </characteristic>
    
    <!--
    //////////////////////////////////////////////////////////////////////////
    // レジストリ オペレーション
    // 
    // レジストリ "HKEY_CURRENT_USER\Software\Microsoft\サンプル" キーを作成し、
    // DWORD 値として "MajorVersion"=dword:1 を作成
    // DWORD 値として "MinorVersion"=dword:1 を作成
    // 文字列として "ExecutableFile"="Hello.exe"
    -->
    <characteristic type="Registry">
      <characteristic type="HKCU\Software\Microsoft\サンプル" translation="install">
        <parm name="MajorVersion" value="1" datatype="integer" />
        <parm name="MinorVersion" value="0" datatype="integer" />
        <parm name="ExecutableFile" value="Hello.exe" datatype="string" />
      </characteristic>
    </characteristic>
    
    
  2. メモ帳の [ファイル] メニューから [名前をつけて保存...] をクリックします。
  3. [名前をつけて保存] ダイアログの [ファイル名] 任意のファイル名を指定します。そのとき拡張子として .xml にします (例: sample.xml)。そして、[文字コード] を [UTF-8] を選択します。
  4. [保存] ボタンをクリックして。メモ帳を閉じます。
  5. 次に、Visual Studio 2005 に含まれる CAB ファイル生成ツールに、作成した XML ファイルを指定して起動し、.CAB ファイルを生成します。
    例: /postxml オプションを使用して作成した XML ファイルを指定します。
    
    cabwiz.exe sample.inf /postxml sample.xml /cpu ARMv4 /compress
    
    注:XML ファイルだけでは、CAB ファイルは生成できません。必ず以前のバージョンと同様に .inf ファイルの作成と指定が必要です。

この資料は以下の製品について記述したものです。
  • Windows Mobile 5.0 for Pocket PC
  • Windows Mobile 5.0 for Pocket PC Phone Edition
キーワード:?
kbhowto KB915770
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"