Top > Extensions > Memo

拡張機能関連メモ Edit

拡張機能ファイルの編集 Edit

インストール済みの拡張機能を編集、保存して拡張機能を作成する方法がよく取られていますが、OOo 3rc1 で user インストールされた拡張機能の Basic ライブラリの変更が有効にならないバグがあります。正式リリースまでに修正予定。i92940

また、share インストールされた拡張機能の Basic ライブラリは既存の share にインストールされた Basic ライブラリと同様に変更不可になりました。(管理権限がある場合には編集可?)

BeanShell と JavaScript のセキュリティ問題 Edit

BeanShell and JavaScript macros are run on Security Level "Medium" even if macros are disabled i81045

Ubuntu + Compiz + OpenOffice.org + Dialog Edit

最近よく見かける話題。Ubuntu 7, 8 + Compiz + OpenOffice.org 2.3, 2.4 で Dialog を表示するとサイズが変になる。読み込むときにすでにサイズが変になるらしい (未確認)。Compiz と相性が悪いらしい。

Ubuntu を使っていないので分からないが、Compiz を止めるとよいみたい。もしくは、Ubuntu ビルドの OOo から Official な OOo に替えるといいらしい。

System Independent Edit

OOo Basic、Python、Java などで作成した拡張機能は System Independent と表示したりする。しかし、Linux 環境で作成した拡張機能が Windows 環境ではエラーが出ることがよくある。

理由:

  • パス区切り
  • などなど

OOo Basic でのバグ Edit

バグなのか分からないが、ある環境で拡張機能が動かないという報告。同じ環境を構築しても再現できず頓挫。

理由は、なぜか Option Explicit を宣言したときのような動作をしていること。実際に Option Explicit を宣言すると、変数を宣言していないとエラーが出る。これ以外にもこの宣言は影響があり、Variant 変数以外に Null が代入されるとエラーになる。

たとえば、ツリーの XSelectionListener を使用して選択の変更を調べようとする時のこと。選択の変更は、「選択の変更」なので、選択実行と選択解除がイベントとしてブロードキャストされる。実際は先に解除が来る。解除されたときには選択 Selection は Empty。

Sub XSel_selectionChanged( ev )
  oSelection = ev.Source.getSelection()
  If IsNull( oSelection ) OR IsEmpty( oSelection )Then Exit Sub
  '... do something with selection
End Sub

なぜか報告された環境では失敗する。変数宣言および Null や Empty、型の問題を回避して修正。

shared インストール Edit

拡張機能は一度のインストールですべてのユーザーが利用できるようになる shared インストールが行えます。これを行うにはコマンドを次のように実行します。

unopkg add --shared extension.oxt

shared インストールされた拡張機能のパッケージは OOo のプログラムが保存されたディレクトリの share/uno_packages/cache/uno_packages 以下にインストールされます。そのため、管理権限や root 権限が必要になる可能性があります。

ところで、shared インストールが行えない拡張機能があります。拡張機能が独自のファイルに設定を拡張機能のディレクトリに保存している場合です。 設定の保存にコンフィグレーションを利用している場合には問題ありません。

shared インストール2 Edit

3 系から拡張機能マネージャが変更されて簡単に share 拡張機能としてインストールできるようになりました。OS の管理権限が必要です。

拡張機能のテスト Edit

拡張機能を作成したら、テストをすると思います。どのような環境でテストをすればよいのか。

コードの入っていないテンプレートやフォント、コンフィグレーションなどはインストールのテストだけで十分です。

ネイティブバイナリがないのであれば自分の持っている環境でいいような気がします。が、OOo Basic でも時々環境依存性が出ることがあります。手持ちの環境でちょっとテストをしてみるのがいいかもしれません。

OOo Basic でファイルパスを取り扱っている場合などには注意が必要です。すべて URL で処理しているのであれば問題ありませんが、一度でもシステムパスが関与しているとパスの区切り文字が win 系とそれ以外の環境で異なるために問題が出ることがあります。デスクトップ環境の文字コードが UTF-8 系のものではファイル名に様々な記号が利用できますが、win だと利用できないものがあります。エンドユーザーが特殊な記号を使う可能性があるときには注意が必要。

ダイアログを利用している場合には、ダイアログの開く位置が環境によって違うことに注意が必要です。一つ目のダイアログは問題ありませんが、そのダイアログから二つ目のダイアログを開くときに位置が環境によって異なります。win 環境では最初の親ウィンドウの中央に開くのに対して、gonme などの環境では今の親ウィンドウの座標で開きます。大きくずれた位置に表示されてしまわないようにするには表示前に自分で位置を調整する必要があります。

(ダイアログの言語を多言語化しているとき。)

インストールできない! Edit

ときどき拡張機能がインストールできないという報告がありますが、ほとんどの場合原因不明のまま終わりますが。

  • Py-UNO がインストールされているのにもかかわらず、Py-UNO を使った拡張機能がインストールできない
  • OOo Basic のみで作成されている拡張機能の Addon メニューが表示されない
    (user/registry/org/openoffice/Office/Addons ファイルが壊れているのかも。)

など。

Windows でのパス名長 Edit

255 文字以内の必要がある話 i50885 ML

拡張機能パッケージは Windows XP だと次のような付近にインストールされる。

C:\Documents and Settings\USER\Application Data\OpenOffice.org2\
user\uno_packages\cache

約 90 文字。

構成ファイルなどがあるときにはそれらのファイルは次のようなところに配置される。

C:\Documents and Settings\USER\Application Data\OpenOffice.org2\
user\uno_packages\cache\registry\com.sun.star.comp.deployment.
configuration.PackageRegistryBackend\registry\
schema\mytools\BookmarksMenu\Configuration.xcs

約 205 文字。

これらのファイルの全てのファイル名長が 255 文字を超えると Windows 環境で拡張機能がインストールできなくなるというお話。

拡張機能 ID などはドメイン名を逆順にしたものなどが推奨されているが、ユーザー名が長い場合などを考えると configuration-schema や configuration-data のパッケージ名および名前は短めにするべき。

configuration-data のパッケージ名が org.hoge.honyo.Extensions.Writer で名前が Configuration とすると、そのファイルは css.comp.deployment.... 以下の次のようなディレクトリに配置されることに注意。(registry までで約 170 文字)

registry\data\org\hoge\honyo\Extensions\Writer\Configuration.xcu

(配置される位置は拡張機能パッケージ内のファイル位置とは無関係。)

ダイアログ Edit

OOo Basic で書いたコードを含む拡張機能はダイアログを Basic ライブラリに統合すればよい。一方、それ以外の言語でのみ作成した拡張機能でダイアログ (ダイアログエディタで作成したもの) を使用したいがダイアログのみの Basic ライブラリを追加したくないときには次のようにすればダイアログライブラリを追加せずに済みます。

ダイアログをダイアログエディタで作成、エクスポートして拡張機能中に作成したディレクトリに入れておきます。

ダイアログは com.sun.star.awt.DialogProvider サービスを使用して作成、利用します。作成するダイアログの URL は拡張機能 ID を利用して /singletons/com.sun.star.deployment.PackageInformationProvider から取得します。

アイコン Edit

3 系では 2 系からアイコンセットが変更されます。下記に使用している色のパレットなどがあります。

統一感のある UI Edit

拡張機能がダイアログやウィンドウなどの UI を持つ場合に統一感を出すためのデザインガイドラインがあります。以下参照。

http://wiki.services.openoffice.org/wiki/OpenOffice.org_Guidelines

issues Edit

  • 拡張機能インストール時のマクロなど実行 i79158
    (…ひどい。)
  • 電子署名付き i85582
  • インストール時にウィザード風に i83573
  • ショートカットキー拡張機能 i87737

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes