プロジェクト

全般

プロフィール

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」指定にし、
      インストール時に存在しなければ環境変数を作成・セットし、既に存在すれば設定しないようにする

■動作確認結果

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")
  • 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
    • 確認 
      • 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")

<テスト2>

テスト1の環境でのアンインストール動作確認

  • 1)C++ 1.1.1版をアンインストール
    • Python1.1.1版のみが残った環境の動作を確認しておくもの
    • 確認
      • RTM_ROOTの設定は無くなる
      • スタートメニューのRTSystemEditorRCPとOpenRTPのショートカットも無くなる
        • PythonとC++が同じアーキテクチャバージョンならばRTSystemEditorRCPは同一のマージモジュールなので、最後の言語バージョンと共に残るが、
          今回は異なるので、C++と共にアンインストールされた
  • 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!
  • 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!

<テスト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!
  • 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にする必要がある