
こんにちは。エイタです!
以前、PowerBuilder 2019 R3 で作成したアプリケーションの実行に必要となるランタイムについて、【2019 R3】ファイルコピーによるランタイムの配布とアプリケーションの実行で解説しましたが、バージョン 2022 R3 の機能追加や廃止に伴って追加/削除されたランタイムがあります。
新機能の追加によって増えたランタイムはもちろんですが、既存システムのマイグレーションだけの場合でも、名前が変更されていたり新たに配布が必要になったりするランタイムもあります。
開発環境からランタイムをコピーするときに「どれを配布すればいいんだっけ?」と思ったときに参考になれば幸いです。
それでは、前回と同様にマニュアルの記載に沿った説明とあわせて、2019 R3 からの変更についても解説していきますね!
2019 R3 と同様に、 (1) コアランタイム、(2) Microsoft ファイル、(3) 機能ごとのランタイム、そして (4) DB インターフェイスのランタイムの 4 つに分けられます。
また、開発環境でのランタイムのインストール場所は 2019 R3 と変わらず、ランタイムは下記のフォルダーにあります。
[32-bit 用]
C:\Program Files (x86)\Appeon\Common\PowerBuilder\Runtime [バージョン番号]
[64-bit 用]
C:\Program Files (x86)\Appeon\Common\PowerBuilder\Runtime [バージョン番号]\x64
このランタイムは PowerBuilder アプリケーションを動かすためのベースとなるランタイムです。 こちらはすべて配布することが推奨されています。
| ファイル名 | 説明 |
|---|---|
| pbvm.dll | すべてに必要 |
| libjcc.dll ※ libsybunic.dll ※ pbshr.dll pbuis.dll | すべてに必要 (pbvm.dll は、このファイルに依存しています) |
| libjtml.dll ※ libjutils.dll ※ nlwnsck.dll ※ | すべてに必要 (libjcc.dll は、このファイルに依存しています) |
| AtlAuxiliary.dll | InkEdit、InkPicture および RichText のサポート |
| pbcomrt.dll ※ | COM/COM+ のサポート |
| pbcrypt.dll | 暗号化と復号のサポート |
| pbdpl.dll | データパイプラインのサポート |
| pbdwe.dll pbdwr220.pbd ※ | データウィンドウとデータストアのサポート |
| pbresource.dll | PowerBuilder リソースファイル |
| pbsysfunc.dll | システム関数 |
| pbtra.dll pbtrs.dll | データベース接続のトレース |
※印がついたファイルは 64-bit アプリケーションでは不要です。
2019 R3 との違いは、Java がサポートされなくなったことに伴って pbjvm.dll と pbjag.dll が削除され、インクエディットなどをサポートするために AtlAuxiliary.dll が追加されています。
また、暗号化/復号のための pbcrypt.dll がコアランタイムに格上げ (?) されていますね。逆に、アクセシビリティ機能関連のランタイムである pbacc.dll、PBAccessibility.dll が機能ごとのランタイムとして扱われるようになり、コアランタイムからは外されています。
そのほか、細かいところだと pbdwr.pbd にバージョン表記がついて pbdwr220.pbd になっています。 あ、64-bit では不要になったランタイムもいくつかありますね (libjcc.dll、pbdwr220.pbd、pbcomrt.dll)。
PowerBuilder のランタイムを動かすために必要となるランタイムです。 絶対に必要ですが、すでに端末に「Visual C++ 再頒布可能パッケージ」がインストールされていれば、コピーする必要はありません。
[32-bit]
vcruntime140.dll、concrt140.dll、msvcp140.dll
[64-bit]
vcruntime140.dll、vcruntime140_1.dll、concrt140.dll、msvcp140.dll
PowerBuilder の中身も、2022 R3 では新しい VC++ バージョンでコンパイルされているようですね。
ちなみに、これらのファイルは「ランタイム パッケージャ」で作成したランタイムインストーラーを実行するためにも必要です。 「ランタイム (PB) の配布のために事前にランタイム (VC++) が必要になる」ので、少しややこしいですね。
Excel や PDF でのファイルの出力、圧縮や暗号化、Web ブラウザーの利用など、アプリケーションに実装した機能によって必要となるランタイムです。
| ファイル名 | 説明 |
|---|---|
| pbacc.dll, PBAccessibility.dll | UI アクセシビリティと自動化のサポート (米国リハビリテーション法 508 条) |
| pbcompression.dll | 圧縮と展開のサポート(CompressorObject と ExtractorObject で使用) |
| PBDOM.pbx | PB DOM |
| PBDotNet.dll, PBDotNetInvoker.dll, PBDotNetCoreInvoker.dll, PBDotNetFrameworkInvoker.dll, Ijwhost.dll, pbdotnetinvoker.runtimeconfig.json | .NET アセンブリ 呼び出し |
| PBDWExcel12Interop.dll, Sybase.PowerBuilder.DataWindow.Excel12.dll | MS Excel12 のサポート |
| pbhttpclient.dll | HTTPClient のサポート |
| pbjson.dll | JSON のサポート |
| pblab.ini | ラベルデータウィンドウ提示様式の定義済みフォーマット |
| PBMSText.dll, pbrtc.dll | Microsoft RichEdit コントロール (64-bit) (廃止) |
| pboauth.dll | OAuth 2.0 のサポート |
| pbpdf.dll, pdflib.dll | NativePDF (NativePDF! メソッドを使用してデータウィンドウを PDF ファイルとして保存) のサポート |
| pbpdfbuilder.dll, pdflib.dll, NotoSans-Bold.ttf, NotoSans-Regular.ttf | PDF Builder のサポート |
| pbrestclient.dll (および依存する DLL: pbhttpclient.dll, pboauth.dll, pbcompression.dll, pbjson.dll) | RESTClient のサポート |
| PBRibbonBar.dll (および依存する DLL: PBXerces.dll, xerces-c.dll, pbjson.dll) | RibbonBar のサポート |
| pbsmtpclient.dll, libcurl.dll | SMTPClient のサポート |
| pbtabbedbar.dll | TabbedView のサポート |
| pbtheme.dll, pbjson.dll および “theme” フォルダー (“theme” フォルダは、”%AppeonInstallPath%\PowerBuilder [version]\IDE” ディレクトリから手動でコピーする必要があります) | UI テーマのサポート |
| pbtxtext.dll, pbrtc.dll, mfc120u.dll, msvcr120.dll, tx4ole31.ocx, tx31.dll, tx31_css.dll, tx31_doc.dll, tx31_dox.dll, tx31_htm.dll, tx31_ic.dll, tx31_obj.dll, tx31_pdf.dll, tx31_rtf.dll, tx31_tls.dll, tx31_wnd.dll, tx31_xlx.dll, tx31_xml.dll | TX Text Control ActiveX |
| pbwebbrowser.dll, webbrowserapi.tlb および “PBWebView2” フォルダー (“PBWebView2” フォルダーは、WebView2 ランタイム固定バージョンが使用される場合にのみ必要です) | WebBrowser のサポート |
| PBXerces.dll, xerces-c.dll | XML サポート (データウィンドウ\データストア用) |
前バージョンから、だいぶ変更がありますね。
すべては紹介できませんが、目を引くのは PDF Builder、SMTPClient、TabbedView といった、2022 R3 で新しく追加された機能をサポートするためのランタイム群。
既存システムを 2022 R3 へマイグレーションするだけであれば、これらのランタイムは不要かもしれませんが、いずれも強力な新機能になっています。既存システムにも組み込んでもらって、配布されるようになったらうれしいなぁ・・・。
また、2019 R3 からすでに追加されている .NET アセンブリ呼び出し機能の “.NET DLL Importer” なんですが、「ターゲットに .NET DLL を取り込むための機能だったら実行環境には必要ないのでは?」と疑問を持っている方もいるかもしれません。
じつは、Importer と名前はついていますが、実際は「取り込んで」いるのではなく、.NET DLL を動的に読み込む処理 (オブジェクト) を自動で生成しているだけなので、実行環境でも C# DLL を読み込むためにランタイムが必要になるんです。
そのほかは、RichTextEdit のバージョンや WebBrowser のエンジンの一本化、また、内部的な変更があったであろうファイル変更などがあります。
最後にデータベースインターフェイスです。
データベースに接続するために必要になります。 ご利用のデータベースと接続方法に合わせて選択してください。
| ファイル名 | 対象のデータベース |
|---|---|
| pbin9.dll | Informix v9.x (IN9) |
| pbi10.dll | Informix v10.x、v12.x および v14.x (I10) |
| pbo90.dll | Oracle 9i (O90) |
| pbo10.dll | Oracle 10g (O10) |
| pbora.dll | Oracle 11g 以降 (ORA) |
| pbmsoledbsql.dll | SQL Server (MSOLEDBSQL) |
| pbsnc.dll | Microsoft SQL Server (SNC) |
| pbase.dll | Adaptive Server 15.x および 16.x (ASE) |
| pbsyc.dll | Adaptive Server Enterprise (SYC) |
DirectConnect と OData による接続のサポートが廃止されたことによりインターフェイスも削除されています。それ以外は 2019 R3 と変わっていないです。
以上が主なランタイムファイルです。 この中から必要なファイルを選択していけば動くはずです。 もし外部関数などで他社のライブラリを使用している場合には別途配布するのを忘れずに。
「あるある」ですね。
そのバージョンのランタイムが見つからないよー😭(↓画像参照)みたいな。 きっとだいたいこのパターン。


左側のメッセージはうまくランタイムが参照できていないようですね。ランタイムを配布した場所は EXE から参照できるところですか?
XML を配布していない場合、参照できるのは EXE と同じフォルダーか環境変数 PATH に登録された場所だけ。 配置を変えるか、PB ランタイムがある場所を PATH に登録してください。
右側のメッセージは EXE と一緒に配布した XML に記述されているパスが間違っているようです。”<アプリケーション名>.XML” は『PB ランタイムの場所はここだよ!』と示しているファイルです。 PowerBuiler アプリケーションは従順なので、XML ファイルが存在する場合はそのパスしか見ません。ランタイムパッケージャで作成したインストーラーでランタイムを配布した場合は、XML にそのインストール先を設定してみてください。
そもそも、PowerBuilder ランタイムを EXE と同じフォルダーにコピーしたのであれば XML ファイルは不要です。 削除しちゃいましょう!
それでもだめなら・・・トラブルシューティングを読むと解決するかも。
アプリケーションの実行に必要な PowerBuilder ランタイムですが、配布漏れが原因で起動できなかったという話をよく聞きます。 特に、新しいバージョンへのマイグレーションを実施した際に、これまでのバージョンにはなかったランタイムの配布が必要となるケースもあるので、アプリケーションに実装した機能とその実行に必要なランタイムを照らし合わせて確認し、改めて下記をチェックしてみてください!
不安な場合は「ランタイム パッケージャ」を使ってランタイムを配布するのがおススメです。Web 経由で EXE もランタイムも配布できてしまう PowerServer や PowerClient を利用するという手もアリですよ!
以上、エイタでした!