[openrtm-staff:970] 9/26の作業報告(河内)

河内 のぶ n-kawauchi @ openrtm.org
2017年 9月 26日 (火) 19:12:19 JST


安藤様

河内です

本日の作業内容をお知らせします。
-----------
■OpenRTM-aistのPATHの定義をシステム環境変数が展開された形式に変えての
動作を試す

▼まずは現状の設定となった経緯を振り返る
・PATHの設定
%OMNI_ROOT%bin\x86_win32\
C:\Program Files\OpenRTM-aist\1.2.0\bin\%RTM_VC_VERSION%\ ←★
%OpenCV_DIR%x64\%RTM_VC_VERSION\bin\

・★の定義でRTM_ROOTを使っていないのはなぜ?
・これは下記にあるDirectory_Environment_inc.wxsで使っていたが
 r34の修正で使わないようにした
http://openrtm.org/svn/openrtm-msi-buildtool/trunk/openrtm_msi/Directory_Environment_inc.wxs

・理由は、OSを再起動しないと%RTM_ROOT%cmakeが展開されないため
 OpenRTMConfig.cmakeファイルが見つからず、結果としてcmakeエラー
 になっていたため
・この時、%RTM_ROOT%は使わないようにしたが、%OMNI_ROOT%と%OpenCV_DIR%
 はそのまま使うように残したのが今に至ってます

・OpenRTM-aistの32bit版、64bit版を共存できるようにした場合、PATHの設定
 が「%OMNI_ROOT%bin\x86_win32\」ならばどちらの場合でも使えるので、
 展開することなくこのまま残しました。

・なお、この時点でOpenRTM.wxsにWM_SETTINGCHANGEを定義してなかった
 ためシステム環境変数が展開されなかったという原因もあり、その後
 対応してます

▼修正:Directory_Environment_inc.wxs
・PATHで%OMNI_ROOT%と%OpenCV_DIR%を使わないようにし、ローカルで
 msiを生成して動作を確認する

⇒ローカル環境での修正は完了。作成したmsiでインストールした環境で
 簡単なVCVerChangerの動作確認は問題なし


■VCVerChangerの修正
・不具合対応を追加する
・対応について下記のように検討し、修正に着手

1)RTM_VC_VERSIONを変えて再起動してもPATHに反映されない

・あまり起こらない不具合ですが、先日の河合さんの環境でも同じ状況が発生
・この時のログを見ると、パスに含めている%RTM_VC_VERSION%の部分が何故か
 展開された「vc12」の形式でレジストリに登録されてしまったため、
 いくら%RTM_VC_VERSION%を変更しても反映されなかったというもの

・この状態でOpenRTM-aistをアンインストールしてもレジストリは削除されない
・インストーラは%RTM_VC_VERSION%で書き込んでいるはずなので、インストール時
 と異なると削除してくれない
・アンインストール後にインストールすると結局2組登録された状態になった
 ので、展開された方(今回はvc12)はツールで削除する必要がある

------ 河合さんの環境より
C:\Program Files\OpenRTM-aist\1.2.0\bin\vc12\;
C:\Program Files\OpenRTM-aist\1.2.0\omniORB\4.2.2_vc12\bin\x86_win32\;
C:\Program Files\OpenRTM-aist\1.2.0\OpenCV3.2\x64\vc12\bin\;
C:\Program Files\OpenRTM-aist\1.2.0\bin\%RTM_VC_VERSION%\;
%OMNI_ROOT%bin\x86_win32\;
%OpenCV_DIR%x64\%RTM_VC_VERSION%\bin\;
------

⇒対応
・PATHの文字列からOpenRTM-aistを含むものを抜き出すと下記の3つになる
C:\Program Files\OpenRTM-aist\1.2.0\omniORB\4.2.2_%RTM_VC_VERSION%\bin\x86_win32\
C:\Program Files\OpenRTM-aist\1.2.0\bin\%RTM_VC_VERSION%\
C:\Program Files\OpenRTM-aist\1.2.0\OpenCV3.3\x64\%RTM_VC_VERSION%\bin\

・ここで、%RTM_VC_VERSION%の文字列を含まないものがあればレジストリから
 削除し、含む形式で書き換えたものをレジストリに書き込む
 →vc9, vc12, vc141のように文字列の長さは一定でないので注意する

・この処理をするのは、ツールで確認ボタンを押された時。%RTM_VC_VERSION%
 にしてレジストリに書き込んだ後に改めてレジストリから読みだしたものを
 GUIに表示する。

2)1.2.0版をインストールしているのにPATHの一部は1.1.2のパスになっている

・これもなかなか起こらない不具合です
・対応としては、OpenRTM-aistを含むパスが%RTM_ROOT%の内容を含んでいない
 場合はレジストリから削除するようにします。こうすればOpenRTM-aistの
 バージョン違いのパスが残ることは無くなります。

・通常、インストール時にパスを追加しているので、1.1.2のパスが残って
 いても1.2.0のパスが追加されていると考えるので、1.1.2を削除しても
 問題にはならないはず

・1.2.0のパスが追加されず1.1.2のパスが残っているという場合の対応として、
 (チケットの報告は、このケースっぽい)
 OpenRTM-aistに関するパスの数をカウントしておく。通常は3つあるはず
 なのに、これより少ない数しか残らなかった場合は、残ったパスをGUIに
 表示し、ユーザに修復インストールを勧めるメッセージを赤字で表示する。

3)OpenRTM-aistを任意のディレクトリへインストールした環境で
VCVerChangerを実行された場合の対応

・このケースを考えていなかったので対応させる
・GUIで確認ボタンが押されると現状のシステム環境変数の状況を表示します
・この時、32bit版と64bit版のパスの共存状況を確認していますが、その前提
 はデフォルト設定のままProgramFiles下にインストールされているものと
 しています。

・この判断に下記文字列を使っています
m_x86Path = "Program Files (x86)";
m_x64Path = "Program Files";

・このパスを含まないケースは、確認と終了ボタンしか押せないようにし、
 本ツールはデフォルト設定でインストールされた環境のみ対応しています
 などの赤字メッセージを出すようにする

以上です。

-- 
------------------------------------------------------------------------
河内 のぶ        n-kawauchi @ openrtm.org


More information about the openrtm-staff mailing list