OpenRTM-aist Python 1.1.1-RELEASEのWindowsインストーラへRTM_ROOT設定を追加¶
■修正の経緯¶
OpenRTM-aistのPython版だけをインストールしている環境で、RTSystemEditorRCP を起動できなかった問題への対応。
RTSystemEditorRCP起動のショートカットで、システム環境変数RTM_ROOTを使ったパスを指定しているので、
Python版インストーラでもこれを設定するように変更した。
■修正版確認のポイント¶
- RTM_ROOTには、Program Files下のOpenRTM-aistのパスを指定している (例:C:\Program Files\OpenRTM-aist\1.1\)
- RTM_ROOTは、OpenRTM-aistのツール起動用ショートカットに使われている
- RTM_ROOTは、RTCBuilderでidlファイルの検索パスに使われている (←★これが重要)
- $RTM_ROOT/rtm/idl が検索時のデフォルトのパス。これが正しければ、Builderでポート生成時にデータ型一覧が表示される。
- rtm/idl ディレクトリは、C++版をインストールしないと存在しない
- OpenRTM-aistのインストーラは、現在、C++. Python, Javaの3言語用あるが、それぞれ同じアーキテクチャ版(x86 / x86_64)が
インストールされている場合は問題にならないが、異なる場合はRTM_ROOTはC++のインストールパスにしておく必要がある- Python版(Java版も同様)はRTM_ROOTを設定するWixの<Environment>タグのActionを「create」指定にし、
インストール時に存在しなければ環境変数を作成・セットし、既に存在すれば設定しないようにする
- Python版(Java版も同様)はRTM_ROOTを設定するWixの<Environment>タグのActionを「create」指定にし、
■動作確認結果¶
Windows7 64bit OS上での確認
- テスト1: Python 1.1.1 32bit版 → C++ 1.1.1 64bit版 の順番でインストールした環境での確認
- テスト2: テスト1のアンインストール動作確認
- テスト3: テスト1とインストール順番を変えての確認. Python版インストーラはRTM_ROOTが既に存在していれば上書きしない動作
- テスト4: テスト3と同じ手順での確認だが、Python版インストーラがRTM_ROOTの設定を上書きする動作
※テスト3の結果を受けて、Python版インストーラはRTM_ROOTが既に存在していれば上書きしない動作にした※
<テスト1>
OpenRTM-aistを以下の順番でインストールした環境での動作確認
Python 1.1.1 32bit版 → C++ 1.1.1 64bit版
- 1) OpenRTM-aistはどのバージョンもインストールしていない状態で開始
- 32bit版のPython1.1.1をインストール
- OpenRTM-aist-Python_1.1.1-RELEASE_x86-create.msi実行 (テスト用に「-create」を付加してmsiファイルを区別している)
- <Environment>タグのAction設定を create にしている
- このテストではActionの設定は動作に影響しない
- 確認
- RTM_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1\
- スタートメニューからRTSystemEditorRCPは起動する(リンク先:"C:\Program Files (x86)\OpenRTM-aist\1.1\utils\RTSystemEditor\start-RTSystemEditorRCP.vbs")
- 32bit版のPython1.1.1をインストール
- 2)1)の環境へC++ 1.1.1版をインストール
- 64bit版のC++をインストールする
- ⇒C++, Pythonが同じアーキテクチャ(x86/x86_64)のバージョンをインストールしていればProgramFilesのパスが同じになるので問題ないが、
違うアーキテクチャバージョンをインストールされた場合の動作を確認しておくもの - OpenRTM-aist-1.1.1-RELEASE_x86_64_vc12.msi実行
- <Environment>タグのAction設定を set にしている
- インストールオプションは、OpenRTP+RTSystemEditorRCP
- ⇒C++, Pythonが同じアーキテクチャ(x86/x86_64)のバージョンをインストールしていればProgramFilesのパスが同じになるので問題ないが、
- 確認
- RTM_ROOT=C:\Program Files\OpenRTM-aist\1.1\
- スタートメニューからRTSystemEditorRCPは起動する(リンク先:"C:\Program Files\OpenRTM-aist\1.1\utils\RTSystemEditor\start-RTSystemEditorRCP.vbs")
- スタートメニューからOpenRTPは起動する(リンク先:"C:\Program Files\OpenRTM-aist\1.1\utils\OpenRTP\start-OpenRTP.vbs")
- 64bit版のC++をインストールする
<テスト2>
テスト1の環境でのアンインストール動作確認
- 1)C++ 1.1.1版をアンインストール
- Python1.1.1版のみが残った環境の動作を確認しておくもの
- 確認
- RTM_ROOTの設定は無くなる
- スタートメニューのRTSystemEditorRCPとOpenRTPのショートカットも無くなる
- PythonとC++が同じアーキテクチャバージョンならばRTSystemEditorRCPは同一のマージモジュールなので、最後の言語バージョンと共に残るが、
今回は異なるので、C++と共にアンインストールされた
- PythonとC++が同じアーキテクチャバージョンならばRTSystemEditorRCPは同一のマージモジュールなので、最後の言語バージョンと共に残るが、
- 2)Python 1.1.1版の修復
- Python版は残っているので、Program Files (x86)下のRTSystemEditorRCPは残っている
- 環境変数のRTM_ROOTとスタートメニューのショートカットが回復してくれれば動作できるのでコントロールパネルからPython 1.1.1版の修復を試みる
- 確認
- RTM_ROOT、および、スタートメニューのRTSystemEditorRCPショートカット回復
- スタートメニューから起動できる・・・OK!
<テスト3>
テスト1とインストール順番を変えての確認.
Python 1.1.1のリリースで、まずPython 1.1.0をアンインストールし、C++ 1.1.1のみが残っている環境へPython 1.1.1をインストールする状況を想定。
C++とPythonが異なるアーキテクチャの組み合わせてインストールされた場合の動作確認。
C++ 1.1.1 64bit版 → Python 1.1.1 32bit版
- 1)C++ 1.1.1版をインストール
- 64bit版のC++をインストールする
- OpenRTM-aist-1.1.1-RELEASE_x86_64_vc12.msi実行
- 確認
- RTM_ROOT=C:\Program Files\OpenRTM-aist\1.1\
- スタートメニューからRTSystemEditorRCPは起動する
- OpenRTPでRTCBuilder機能にし、新規コンポーネントを作成してみる。
- ポート作成時、データ型が一覧に表示されている。 OK!
- 64bit版のC++をインストールする
- 2)Python 1.1.1版をインストール
- 32bit版のPython1.1.1をインストールする
- OpenRTM-aist-Python_1.1.1-RELEASE_x86-create.msi実行
- <Environment>タグのAction設定を create にしている
- 確認
- RTM_ROOT=C:\Program Files\OpenRTM-aist\1.1\
- Pythonインストーラの方で環境変数設定のActionをcreateとしてことで既存の設定があれば書き換えないという動作になり、64bit版C++のパスのままになっている
- スタートメニューからRTSystemEditorRCPは起動する
- リンク先はPython版の方へ書き換わっている。("C:\Program Files (x86)\OpenRTM-aist\1.1\utils\RTSystemEditor\start-RTSystemEditorRCP.vbs")
- このvbsスクリプトの中身は、batファイルを実行しているだけ
- 実行しているbatファイルの中身は、以下のとおり。RTM_ROOTの設定からC++版でインストールしたRTSystemEditorRCPが実行されている。問題なし!
-----
set PATH=%RTM_ROOT%bin\jre\bin;%PATH%
cd %RTM_ROOT%utils\RTSystemEditor
RTSystemEditorRCP.exe
-----
- スタートメニューからのOpenRTP起動も問題なし。
- OpenRTPでRTCBuilder機能にし、新規コンポーネントを作成してみる。
- ポート作成時、データ型が一覧に表示されている。 OK!
- RTM_ROOT=C:\Program Files\OpenRTM-aist\1.1\
- 32bit版のPython1.1.1をインストールする
<テスト4>
テスト3とまったく同じ動作を、Pythonインストーラの環境変数設定<Environment>のActionをsetに指定した場合で確認しておく。- 1)C++ 1.1.1版をインストール
- 64bit版のC++をインストールする
- OpenRTM-aist-1.1.1-RELEASE_x86_64_vc12.msi実行
- 確認
- OpenRTPでRTCBuilder機能にし、新規コンポーネントを作成してみる。
- ポート作成時、データ型が一覧に表示されている。 OK!
- 64bit版のC++をインストールする
- 2)Python 1.1.1版をインストール
- 32bit版のPython1.1.1をインストールする
- OpenRTM-aist-Python_1.1.1-RELEASE_x86-set.msi実行 (テスト用に「-set」を付加してmsiファイルを区別している)
- <Environment>タグのAction設定を set にしている
- 確認
- RTM_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1\
- Pythonインストーラの方で環境変数設定のActionをsetとしてことで書き換わった
- スタートメニューからRTSystemEditorRCPは起動する
- スタートメニューからOpenRTPは起動する(リンク先:"C:\Program Files\OpenRTM-aist\1.1\utils\OpenRTP\start-OpenRTP.vbs")
- このvbsスクリプトの中身は、batファイルを実行しているだけ
- 実行しているbatファイルの中身は、以下のとおり。
-----
set PATH=%RTM_ROOT%bin\jre\bin;%PATH%
cd %RTM_ROOT%utils\OpenRTP
eclipse.exe
----- - Python版でもjreをインストールしているので、RTM_ROOTで指定したパスに存在しているので問題なし
- 「cd %RTM_ROOT%utils\OpenRTP」は確かにパスが存在しないのでディレクトリの変更はできず、ショートカットで指定したC:\Program Files\OpenRTM-aist\1.1\utils\OpenRTPがカレントディレクトリのまま
- この場所にeclipse.exeは存在しているから、問題なく起動できる
- RTCBuilderでコンポーネントを作成してみるが、ポートのデータ型が表示されない!!
- RTM_ROOTが指しているPython版がインストールされているディレクトリに、rtm/idlが存在しないため
- Python版インストーラは、<Environment>タグのAction設定をcreateにする必要がある
- RTM_ROOT=C:\Program Files (x86)\OpenRTM-aist\1.1\
- 32bit版のPython1.1.1をインストールする