Windows CE (.NET) とか IoTとか

組込みWindows と IoTの話を扱います

PB6(アン)インストール後にPB5をインストールする

最近ある事情がありまして、VS2005 + PB6 + PB6 R2をインストールした環境に、PB5をインストールしてみましたところ、いろいろな問題が発生しましたので、対処なぞをまとめてみます。(なお、以下の検証はすべてWindows XP で行っています。)

1. インストールが完了しない

まず最初に何も考えずにPB5のインストールをトライしてみました。途中までは一見問題なく進むようにみえるのですが、最後のところで問題発生!
で、みるみるロールバックされていきます。これはBuild Tree込インストールでもToolのみインストールでも同じようになりました。

Newsgroupを検索してみると、PB6 → PB5のインストール順は単純に"サポートしていない!"とのこと。
ここで一大決心してPB6をすべてアンインストールし実際にPB5がインストール可能か試してみることにしました。

PB6 のアンインストール手順
1. Windows Embedded CE 6.0 R2 のアンインストール
2. Windows Embedded CE 6.0 Platform Builder Service Pack 1 のアンインストール
3. Windows Embedded CE 6.0 (本体) のアンインストール

この状態でVisual Studio 2005のPC向け開発は問題なく行えます。
(Visual Studio 2005による"Smart Device アプリケーション開発"については後述)

このあと、PB5 をインストールしてみると普通に完了します。ビルドツリー(\WINCE500フォルダ以下) を外部ディスクなどに保存してある場合は、これをコピーしてToolメニューのOptionsのBuildタブでWINCEROOTを指定することで、うまくビルドできるようになりました。そのようなわけでToolのみインストールでも行けそうです。

Pb5_options_build

2. Connectivity Optionsがうまく動作しない

PB5 OSのビルドが成功したあと、ダウンドード設定のためにTargetメニューの"Connectivity Options..."を選択すると、以下のように"Platform Builder was unable to read the device settings from the Datastore."と表示され、設定ダイアログが開けません。

Connectivityoptionsng

同じくNewsgroupで検索すると、以下の情報が出てきました。
http://groups.google.com/group/microsoft.public.windowsce.platbuilder/browse_thread/thread/1cce3de7acc08e54/4eb6c6d1c11d2d52
http://www.eggheadcafe.com/software/aspnet/29534746/cant-set-the-connectivit.aspx

下のリンクで説明されている手順を書き出すと以下のようになります。

1) Platform Builderの関連実行プログラムを終了させTaskManagerで確認する。

具体的な実行ファイル名は以下です。
- cepb.exe
- cesvchost.exe (CeSvcH~1.exe)
- deviceemulator.exe

2) \Documents and Settings\<ユーザー名>\local settings\application data\microsoft\corecon
フォルダ以下をバックアップする。

3) \Documents and Settings\<ユーザー名>\local settings\application data\microsoft\corecon
フォルダ以下を削除する。

このフォルダがない場合、PB5は起動時に自動的に作成するとのことです。

4) \Documents and Settings\all users\application data\microsoft\corecon\1.0\addons
フォルダ以下をバックアップする。

5) \Documents and Settings\all users\application data\microsoft\corecon\1.0\addons
フォルダ以下を削除する。

6) 上記addonsフォルダをcorecon\1.0以下に作成する

7) \Program Files\<PBのインストール先>\CoreCon\SDK\XSL\Addonsフォルダにある、*.xslファイルを上記addonsフォルダにコピーする

PBインストール先は変更しなければ"Windows CE Platform Builder\5.00"となっていることと思います。ここでは実際には以下の 2つの.xslファイルをコピーします。

microsoft.platformbuilder.servicecategory.xsl
microsoft.platformbuilder.typemap.xsl

8) \Program Files\<PBのインストール先>\CEPB\bin\microsoft.platformbuilder500.servicecategory.xsl
ファイルを同じく上記addonsフォルダにコピーします。

9) PB5 IDEを立ち上げ、connectivity options を設定します。

これを実際に行ってみると、確かに設定ダイアログが開くようになり、"Add Device"で新たなデバイス名を追加すると自動的にEthernet/Ethernet/KdStubの設定になりました。またこの設定で"Attach Device"を行ってダウンロードできることを確認しました。

で、設定を行ったあとPB5をいったん終了し、どこが変化しているか調べてみたところ、
\Documents and Settings\HiroN\Local Settings\Application Data\Microsoft\CoreCon\1.0
の以下のファイルの日付が新しくなっていました。

2008/12/18 07:22 2,271 conman_ds_typemap.xsl

2008/12/18 07:24 834 conman_ds_addonsinstalled.xsl

2008/12/18 07:24 4,648 conman_ds_device.xsl

2008/12/18 07:24 352 conman_ds_platform.xsl

2008/12/18 07:24 352 conman_ds_property.xsl

2008/12/18 07:24 11,542 conman_ds_servicecategory.xsl

特に、conman_ds_device.xsl に新しく設定したデバイス名などの情報が含まれていました。そこで、バックアップしておいたファイルと内容を比べてみたところ、バックアップ版にはcorecon\5.01などと記述されており、要するにWindows Embedded CE 6.0の内容が記述されていた、ということのようです。

ちなみに、PB5でインストールされるcoreconフォルダのファイルの日時は"2004/07/01 2:00"または"2004/07/01 11:00"のようです。これ以外の日付のcoreconファイルはVisual Studio 2005 またはそれ以降の別アプリケーションのファイルということになります。

3. Visual Studio 2005 の Smart Device プロジェクト

PB5が動作するようになった一方、この状態ではVisual Studio 2005のsmart deviceプロジェクトロード時に"パラメータが間違っています。"や"Cannot access data for the desired file since it is in a zombie state."という表示が多数出たあと、やっとプロジェクトがロードされます。いろいろ調べると、この状態ではダウンロード先のデバイス定義がすべて削除された状態になっており、たとえば

- Projectメニュー"Properties"設定の"Deployment"項目

- Toolsメニュー"Options"設定の"Device Tools"下の"Devices"項目と"Form Factors"項目

を開こうとしたときに、同様に"パラメータが間違っています。"、"Error retrieving information from user datastore."というエラーが表示されます。

この状況を解決する方法として、"Smart Device programability"をいったん削除したあと再インストールするという方法を考えました。具体的にはコントロールパネルの「プログラムの追加と削除」を起動して、"Microsoft Visual Studio 2005 Professional Edition"の「追加と削除」ボタンを押してインストーラをメンテナンスモードで起動し、Visual C++、Visual C#Visual Basicのsmart device programing 機能をいったんすべて削除します。

そののちに、もう一度VS2005インストーラをメンテナンスモードで起動し、Visual C++、Visual C#Visual Basicのsmart device programing 機能を追加します。ちなみに当方の実験では、追加時にのみVS2005のインストールメディア(CD or DVD)を要求されました。

これを行うと、Smart Device プロジェクトを開くときに"パラメータが間違っています。"ダイアログは表示されなくなりました。また、ToolsメニューOptionsのDevice Tools項目も問題なく表示されるようになります。が、実際に開いたプロジェクトは結構"unavailable"と表示されてしまいます。この理由は(Smart Device のNew Project Wizardを起動してみるとわかりますが、)SDKとしてVS2005の初期状態である"PocketPC2003"、"Smartphone2003"の2つのSDKのみがインストールされた状態に戻っているためです。

そのようなわけで、同じくコントロールパネルの「プログラムの追加と削除」で、すでにインストールしてあったSDK項目のインストールをrepairすることにより、再びVS2005上でSDKを使うことができるようになります。

ちなみに、このようにして追加したSDK項目が、なぜかPB5のダウンロード先デバイスにも表れるようになります。本来VS2005/PB6を設計するときにCorecon\1.0を共有するデザインにしていなければ、スマートデバイスサポートがこのような複雑なことにはならなかったのではと思うと残念です。

最後に、PB6を再インストールすれば、XP上でPB6をインストールした環境にあとからPB5をインストールして両方共存することが(無理やりですが)できました。

3. 結論

VS2005 + PB6 addon がインストールされた環境では、PB5のインストールはできない。
  → PB6 addonを削除することによりPB5のインストールが可能になり、CE5 のOSイメージがビルドできるようになる。ただしダウンロード不可。

corecon\1.0フォルダの内容を調整することにより、PB5のダウンロード環境をリセットすることができる。  → その結果、PB5のダウンロードが可能になる。ただし、VS2005 smart device プロジェクトのロード時にエラーが出るようになる。

VS2005のsmart device プロジェクトサポートを再インストールすると、VS2005でsmart device プロジェクトのロード時にもエラーはでなくなる。 → その結果、SDKのインストール状況も初期状態に戻るので、必要に応じてSDKのrepairを行うとよい。

ていうか、ここまでやるならバッサリVS2005までをアンインストールしてPB5 → VS2005 → PB6 とインストールし直すほうがよっぽどいいですね。アンインストール時にはビルドツリールート(\WINCE500および\WINCE600)をリネームしておくと削除されずに残るので、再インストール時にはツールのみインストールで行けそうです。

ここで説明した方法は、たとえばCE5のOSをビルドだけできればよいとか、VS2005のsmart deviceサポート以外の機能は残したいとかいう場合に限定的に使ってみるといいかもしれません。