MultiByteCabEnabler (WM5 for PPC専用) このソフトはWindowsMobile5で日本語ファイルなどが含まれたcabのインストール時に発生する 問題を解消を目的としています。 日本語含むcabの問題はMicrosoft KBでも既知の問題です。 http://support.microsoft.com/kb/915770/ja またcabの設定するレジストリに最上位ビット(0x80000000)が立ったDWORD値が含まれていた場合、 インストールが完了しない問題も解消します。 1.インストール方法 MultiByteCabEnabler.CABをWM5実機上で実行します。 ※コントロールパネルの「プログラムの削除」には表示されません 2.アンインストール方法 ・以下のレジストリを設定します [HKEY_CLASSES_ROOT\CLSID\{06DE59C0-8A26-40d1-86C5-F126755546BF}\InprocServer32\InprocServer32] @="appinstaller.dll" ・\Windows\appinstalle_.dll を削除します 3.注意事項など このソフトの著作権は、作者(ホーミン)が保持します。 このソフトは以下の条件を満たす限り自由に使用できます 1)このソフトを使用したことによりなんらかの問題が発生した場合、作者に報告を行う事 2)Microsoft関係者はKB915770含むcabインストール失敗をバグとして認識し、バグ対策を行うように  アクションすること また複製、再配布(転載)は内容の改変等が無い限り無料で自由に行うことができます。 このプログラムの使用による、いかなる損害に対しても、作者は責任を負いません。 利用は個人の責任でお願いします。 不具合などの報告はメール( hou_ming_2@yahoo.co.jp )または Blog( http://geocities.yahoo.co.jp/gl/hou_ming_2/ )まで。 なお報告の際は再現可能な環境や手順を書いてください。 4.KB915770の原因について appinstaller.dllでのXMLデータ作成時の文字コード変換が不正なことが原因。 具体的には以下のような処理が行われていると思われる。 1)cabから取り出したファイル名などを Unicode(正確にはUCS2)→OEMCP(日本語の場合ShiftJIS)に変換 2)上記のデータをコード変換なしに連結してXMLデータを作成(正しいXMLの文字コードはUTF8) 3)XMLデータをUnicodeに変換して実際のファイル作成などの処理実行 ASCII文字の範囲のみならばUTF8と同じコードなので問題は発生しないが、それ以外では文字化けとなる。 本ソフトではappinstaller.dllでのUnicode→OEMCP変換をUnicode→UTF8変換に置き換えている (WideCharToMultiByte()の第一引数がCP_OEMCPならCP_UTF8に置き換え) 4'.その他の不具合について ・最上位ビット(0x80000000)が立ったDWORD値のレジストリ設定が含まれているとインストール完了しない DWORD値の符号有り無しの扱いが一貫していないことが原因。 具体的には以下のような処理が行われていると思われる。 1)XMLデータ作成の際にはDWORD値を符号なし整数として文字列に変換する 2)XMLを解釈しレジストリ書き込みするときは符号つきで解釈するので32bitを超え変換エラーとなる。 本ソフトではappinstaller.dllでの_ultoa()の呼び出しを_ltoa()の呼び出しに置き換えている ・レジストリに設定する文字列に%CE1%や%InstallDir%、%AppName%が含まれていると、文字列中の"/"が  "\"に置き換えられてしまう。(ex."%CE2%\cmd.exe /c %1"が"\Windows\cmd.exe \c %1"になる) 本ソフトではこの問題は未対策 5.変更来歴 2006/05/11 ・正式公開 2006/05/29 ・レジストリDWORD値書き込み不具合対策追加