Location : Home > Softwares > R
Title : Installation and Usage of (D)COM Server with Scilab
Toolbox Logo

Installation and Usage of (D)COM Server with Scilab

アーカイブ

RSrv250.exe
サンプルコード込みのサーバセットアッププログラム(ランタイムライブラリ含む)
RSrv250S.zip
サーバ・コントロール用の VC++ 6.0・VB ソース。CVS アクセスも可。

インストール

 R (D)COM サーバは COM サーバ及び Active X コントロールをインストールする。たいていの Windows のインストールでは実行時のユーザが少なくとも Power Users または Administrators グループのメンバであることが要請される。もしこれらのメンバでなければシステム管理者に連絡すること。(特に、セットアップはレジストリデータベースの HKEY_CLASSES_ROOT を変更する。)

  • 最新の Scilab リリース(>= Scilab 4.1)をインストールする。
  • (D)COM サーバの過去のバージョンがインストールされていれば、まずそのバージョンをアンインストールする。
    • COM サーバを利用している全てのクライアントアプリケーションをクローズする。
    • 過去のバージョンをアンインストールする。
  • セットアッププログラムを起動する。
  • R (D)COM サーバをインストールする。
    • どのパッケージをインストールすべきか?
       RSrv200.exe はフルインストーラであり、実行時に必要な Visual Basic 及び Visual C++ のランタイムライブラリを含むあらゆる必要なコンポーネントを提供する。過去バージョンのインストーラにはランタイムライブラリを同梱していない。そのためもはやサポートしていない。
       サーバソフトウェアを変更するつもりがないのであればソースをダウンロードしたりインストールしたりする必要はない。COM サーバを使ってクライアントアプリケーションを開発するために必要な情報は全て COM サーバと一緒にインストールされるドキュメント及びサンプルコードに記している。
    • RSrv200.exe をインストールする。
      インストールのデフォルトタイプから方式を選択することができる。
      • クライアントアプリケーションを開発したければ "SDevelopment installation" を選択する。これにはローカルサーバ・リモートサーバで実行するためのバイナリ、テスト及びサンプルアプリケーション、ソースコードがインストールされる。Scilab のインストールはこのマシンの上に要請される。
         あるマシン用のクライアントアプリケーションを開発するときは、このマシンに Scilab (D)COM サーバをインストールする必要がある。
      • ローカルで Scilab をこのマシンで実行するには "Local Server Installation" を選択する。これにはローカルの COM サーバ用のバイナリと、Scilab と Scilab (D)COMサーバの機能を確認する簡単なテストアプリケーションがインストールされる。Scilab のローカルインストールが要請される。このマシンでローカル Scilab サーバ用及びリモートクライアント用の Scilab サーバを用いたクライアントアプリケーションを実行できる。
      • クライアントアプリケーションをローカルに実行し、リモートサーバにインストールされた Scilab オブジェクトにアクセスするには "Remote Server Files" を選択する。これはリモートマシン上の Scilab 及び Scilab (D)COM サーバにアクセスするために必要なバイナリがインストールされる。Scilab がこのマシンにインストールされる必要はない。
  • Scilab (D)COM サーバセットアップフォルダ(Scilab のサブディレクトリ)から Scilab 4.1 がインストールされている bin ディレクトリに sciproxy.dll をコピー。
  • スタートメニューの R (D)COM サーバプログラムグループから 01 - Basic Test を選択し、"Start" を押す。

(D)COM サーバのテスト

 たくさんの例とテストプログラムが R (D)COM サーバとともに提供されている。

 テストプログラムの1つは常に Scilab (D)COM サーバとともにインストールされる。これはスタートメニューで見つかる。デフォルトのプログラムグループは R\(D)COM Server であり、テストプログラムはそこにあり、 01 - Basic Test という名称である。
 Scilab (D)COM サーバを用いたアプリケーションは同様の段階を踏む。

  • IStatConnector インタフェースのインスタンスを生成する。
  • Scilab を始動するために COM オブジェクトであらゆる Init を実行する。
  • アプリケーションをを実行する。
  • Close を呼び出し、Scilab を閉じる。
  • COM オブジェクトを解放する。

 テストプログラムはいくつかの理解のための情報を提示し、テストを行う。

  • Scilab へのデータ変換を行う。
  • Scilab で計算を行う。
  • Scilab からのデータ変換を行う。

トラブルシューティング

 最初に COM オブジェクトの .Init() を呼び出したときに何か悪いことが起これば .GetErrorText() を用いてエラー情報を取得すること。

"installation problem: unable to load connector"

 Scilab プロキシライブラリがロードできない。これらのエラーの原因として考えられるのは以下の通り。

  • 環境変数 %SCILAB_HOME% が Scilab がインストールされていないディレクトリを指しており、
  • Scilab インストールに対応するレジストリキーが Scilab のインストールフォルダを指しており、
  • sciproxy.dll 及び Scilab バイナリ が %PATH% にない。

 www.scilab.org からコンパイル済みのバイナリをダウンロードしてこれをインストールしたのに間違った場合である。セットアッププログラムを使って R を再インストールすること。何が悪いかについては dbgview をダウンロードして確認すること。
 自身で R をコンパイルした場合には %SCILAB_HOME%\bin\sciproxy.dll を確認し、レジストリキー HKEY_LOCAL_MACHINE\Software\Scilab\LASTINSTALL が正しくインストールフォルダを指しているか確認すること。
 レジストリキーがないまたは間違っている場合、Scilab を再インストールし、Scilab に関する情報がレジストリに正しく反映されていることを確認すること。

"installation problem: invalid connector library"

 おそらく Scilab プロキシライブラリにダメージ。COM サーバの本バージョンでは Scilab >= 4.1. が必要。

"installation problem: interpreter interface version mismatch"

 Scilab プロキシライブラリのバージョンが正しくない。COM サーバの本バージョンでは Scilab >= 4.1. が必要。

"installation problem: interpreter version mismatch"

 Scilab のバージョンが正しくない。COM サーバの本バージョンでは Scilab >= 4.1. が必要。

 .Init() を呼び出したときにメッセージボックスが表示されればベースライブラリが見つけられなかったことを示す。その場合は R_HOME をインストールフォルダに設定すればよい。このような場合はわずかであろう。
 自身でインストールの問題が解決できなかった場合は R COM メーリングリストでヘルプを確認してみること。 R COM サーバ(または R COM 接続モジュールの他の部分)を使うのであれば参加しておくとよい。
 全ての関数は上に示した状況と対応するエラーコードを返す。このエラーコードは VB または VBA における Err.Number を確認することで取得することができる関数の返り値である。以下の表はエラーコードのリストである。

定義DecimalHexadecimal
SCN_E_INVALIDARG-2147221503 0x80040001
SCN_E_INVALIDFORMAT-2147221502 0x80040002
SCN_E_NOTIMPL-2147221501 0x80040003
SCN_E_UNKNOWN-2147221500 0x80040004
SCN_E_INITIALIZED -2147221499 0x80040005
SCN_E_NOTINITIALIZED -2147221498 0x80040006
SCN_E_INVALIDSYMBOL-2147221497 0x80040007
SCN_E_PARSE_INVALID-2147221496 0x80040008
SCN_E_PARSE_INCOMPLETE-2147221495 0x80040009
SCN_E_UNSUPPORTEDTYPE -2147221494 0x8004000A
SCN_E_EVALUATE_STOP-2147221493 0x8004000B
SCN_E_INVALIDINTERFACEVERSION-2147221488 0x80040010
SCN_E_INVALIDINTERPRETERVERSION -2147221487 0x80040011
SCN_E_INTERFACENOTFOUND -2147221486 0x80040012
SCN_E_LIBRARYNOTFOUND -2147221485 0x80040013
SCN_E_INVALIDLIBRARY -2147221484 0x80040014
SCN_E_INITIALIZATIONFAILED -2147221483 0x80040015
SCN_E_INVALIDCONNECTORNAME -2147221482 0x80040016
SCN_E_INVALIDINTERPRETERSTATE -2147221481 0x80040017
SCN_E_FATALBACKEND -2147221472 0x80040020

レジストリ情報

 セットアッププログラムはレジストリに情報を追加する。情報は HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\R (D)COM Server_is1 で確認できる。
 これに関連して様々な COM サーバが登録される。

再パッケージとサイレントインストール

 セットアップからファイルを抜き出し((D)COM サーバ実行ファイルのみなど)、独自のインストーラを作成する(またはサードパーティのファイルを追加する)ことは認められていない。この理由の1つは、公式なセットアップアプリケーションのみが正しいインストールを保証するものだからである。
 (D)COM サーバ及び/または RExcel を独自のアプリケーションに組み込みたい場合には自身のセットアッププログラムとともに (D)COM サーバを自由に配布することができる。(D)COM サーバと RExcel を自身のアプリケーションとともに自動的にインストールしたければ「サイレント」モード(次セクションを見よ)で実行すればよい。
 サイレントインストールを行えるコンポーネントは以下の通りである。

localserver
Local Server Files
simpletest
Simple Server Test Files
remoteserver
Remote Server Files
development
Development Files
samples
(D)COM Server Sample Files
excel
RExcel: Excel Add-In
excelsamples
RExcel Sample Files

セットアップ時のコマンドラインパラメータ

 このセクションは Inno Setup version 5.0.8 のドキュメントのままである。

 セットアッププログラムにはいくつかオプションでコマンドラインパラメータを受け付ける。これらはシステム管理者やセットアッププログラムを呼び出す他のプログラムには有用である。

/SP-

 セットアップ開始時に This will install... Do you wish to continue? というプロンプトを表示させない。もちろんこれは DisableStartupPrompt [Setup] セクションのディレクティブが yes に設定されていても効果がなくなる。

/SILENT, /VERYSILENT

 セットアップ時にサイレントにする。/SILENT ではバックグラウンドウィンドウは表示されず、インストール進展を示すウィンドウのみが表示される。/VERYSILENT ではインストール進展を示すウィンドウも表示されない。インストール時のエラーメッセージやプロンプトは(DisableStartupPrompt または '/SP-' コマンドラインで不可にしていなければ)表示される。
 再起動が必要で '/NORESTART' コマンドが指定されておらず、セットアップが silent であれば Reboot now? メッセージボックスが表示される。 very silent であれば確認せずに再起動する。

/SUPPRESSMSGBOXES

 メッセージボックスを表示しないようにする。'/SILENT' 及び '/VERYSILENT' とともに利用されたときにのみ効果がある。デフォルトの反応は以下の通りである。

  • 'Keep newer file?' に対しては Yes。
  • 'File exists, confirm overwrite.' に対しては No。
  • 中止/再試行に対しては中止。
  • 再試行/キャンセルに対してはキャンセル。
  • DiskSpaceWarning/DirExists/DirDoesntExist/NoUninstallWarning/ExitSetupMessage/ConfirmUninstall に対しては Yes(Continue)。
  • FinishedRestartMessage/UninstalledAndNeedsRestart に対しては Yes(Continue)。

 以下の5種類のメッセージボックスは停止されない。

  • セットアップ中止メッセージボックス
  • セットアップ中止を確認するメッセージボックス
  • インストール時に新しいディスクを要請しているのにそのディスクが見つからないときに表示される FileNotInDir2 メッセージボックス
  • コマンドラインパラメータを読む前に表示される(エラー)メッセージボックス
  • [Code] サポート関数 MsgBox で表示されるメッセージボックス

/LOG

 インストール実行時に起こった事象の詳細をユーザの TEMP ディレクトリにログファイルを生成して格納する。これはデバッグ時に有用である。例えば、思っていた場所にファイルがなかったと疑った場合、ログファイルが実際にスキップしたか否かまたはなぜかを確認できる。
 ログファイルは現在の日付に従ってユニークな名称を付けられる。(既存のファイルに上書きはしない。)
 ログファイルに格納される情報は本質的に技術的なもので、エンドユーザにわかりやすくすることを想定していない。機械でパーサしやすいようにもできていない。このファイルのフォーマットは無断で変更される。

/LOG="filename"

 /LOG と同様であるが、格納ファイルを指定できる点が異なる。既存のファイル名と重複すれば上書きする。ファイルが生成されなければセットアップファイルはエラーメッセージを出して終了する。

/NOCANCEL

 キャンセルボタンを実行不可能にし、クローズボタンがクリックされても無視するようにして、インストール実行中にユーザがキャンセルボタンを押してもインストールがキャンセルされることを防ぐ。'/SILENT' または '/VERYSILENT' とともに使うと有用である。

/NORESTART

 不要なときには再起動を要請しない。

/RESTARTEXITCODE=exit code

 再起動が必要な場合にカスタム化した終了を指定する。'/NORESTART' とともに使うと有用である。Setup Exit Codes を見よ。

/LOADINF="filename"

 事前に設定されたコマンドラインを指定されたファイルから読み込んで実行する。以下に説明する '/SAVEINF=' コマンドを持ちいて事前に保存されたファイルを利用する。
 ファイル名に空白を含む場合には引用符で囲むことを忘れないこと。

/SAVEINF="filename"

 インストール設定を指定したファイルに保存する。
 ファイル名に空白を含む場合には引用符で囲むことを忘れないこと。

/LANG=language

 使用言語を指定する。[Languages] セクションエントリにおいて指定されている内部名称で指定する。
 妥当な /LANG パラメータが指定されれば Select Language ダイアログは出されない。

/DIR="x:\dirname"

 Select Destination Location ウィザードページでデフォルトのディレクトリ名を上書きする。絶対パスで指定しなければならない。

/GROUP="folder name"

 Select Start Menu Folder ウィザードページでデフォルトのフォルダ名を上書きする。[Setup] セクションディレクティブ DisableProgramGroupPage が yes に設定されていれば、このコマンドラインは無視される。

/NOICONS

 Select Start Menu Folder ウィザードページで「アイコンを生成しない」をデフォルト値として設定しておく。

/COMPONENTS="comma separated list of component names"

 デフォルトのコンポーネント設定を上書きする。このコマンドラインパラメータによりセットアッププログラムはカスタム化される。

/PASSWORD=password

 パスワードを指定する。[Setup] セクションディレクティブ Password が設定されていなければ、このコマンドラインは無視される。
 また妥当でないパスワードが指定されてもこのコマンドラインは無視される。

一般的な情報と現在の制限

 Scilab のサポートは現在は開発中である。Scilab (D)COM Server 2.50は Scilab 用サポートの最初のリリースである。
 RExcel は現在では Scilab をサポートしていない。Please let us know your opinion about supporting Scilab from RExcel から Scilab bのサポートに関する意見を教えて欲しい。
 Scilab 関係の(一般的な)議論については www.scilab.org を見て欲しい。そこで多くの情報を入手できるだろう。Scilab (D)COM Server 関連については rcom-l メーリングリストに参加して欲しい。このメーリングリストではその名前にもかかわらず Scilab 関連の議論も飛び交っている。
 Scilab 用のデータ型のサポートは R 用に比べて制限されている。現在ではスカラ値(ブール値・整数・浮動小数点・文字列)とこれらの配列がサポートされている。混合型の配列または行列は現時点ではサポートされていない。
 sciproxy.dll における Scilab バックエンドの実装は極めてシンプルで時間の問題である。C プログラムから Scilab へのインタフェースの経験を持つボランティアの貢献に感謝している。
 sciproxy.dll は現在では Scilab インストールの一部ではない。このライブラリは Scilab API (それゆえ Scilab のバージョン)の実装に依存するため、 rproxy.dll が R と配布されるように、Scilab とともに配布されることを望む。残念ながら現時点ではなされていないため、Scilab の新しいバージョンが出たときには即座にサポートできず、インストールは複雑になる。

Toolbox Logo
Updated : 2008/05/26