初心者の憂鬱:実行ファイルとランタイム

exe と runtime

こんにちは、サポート部の Yama-chan です。いつも「初心者の憂鬱」シリーズを読んでいただき、ありがとうございます。


はじめに

近ごろ、PowerBuilder 2019 へのマイグレーションが増えてきて、サポートの対応も非常に忙しくなってきました。問い合わせでは、以下のような内容もよく聞かれます。

  • 実行ファイルはどうやって作るのか?
  • 実行ファイルを作ったが、利用する PC へ配布して実行すると、「ランタイムがない」とエラーが表示され実行できない。どのランタイムを配布したらよいのか?

PowerBuilder で実行ファイルを作成するには、アプリケーションのプロジェクトを定義してから、フル構築ののち配布を実行することで生成できます。また、PowerBuilder で開発したアプリケーションを実行するには実行ファイルの他に、アプリケーションを実行するためのランタイムライブラリが必要で、アプリケーションと一緒に利用する端末に配布する必要があります。

というわけで、今回は実行ファイルおよびランタイムパッケージャを使用したランタイムインストーラーの生成方法についてご紹介したいと思います。

それでは、見ていきましょう!


実行ファイルの生成

冒頭で少し触れましたが、実行ファイルを作成するにはまず、アプリケーションのプロジェクトを新規に作成し、定義する必要があります。

1.プロジェクトの作成

まず、ファイル|新規作成 メニューを選択し、プロジェクトタブでアプリケーションを選択してから [OK] ボタンを押下します。以下のようにプロジェクト定義画面が表示されます。

プロジェクトの定義

「新規作成」画面のプロジェクトタブ内のアプリケーションを選択し、[OK] ボタンをクリックすると、アプリケーションのプロジェクトを構成する「プロジェクトペインタ」が以下の図のように表示されます。

全般タブ

2.全般タブでのプロジェクト情報入力

全般タブでは実行ファイル名以外はデフォルトで設定されているので、まず作成する実行ファイルの名前を入力します。今回の例では group.exe にしています。プロジェクト構築オプションでは生成時、すでに実行ファイルが存在する場合、上書きの確認をするかどうかを指定します。また、再構築するときに変更分のみのインクリメンタルで構築するか、フルで構築するかを指定できます。

コードの生成オプションで、作成されるアプリケーションの「動的ライブラリ」の作成コードやプラットフォームを指定できます。プラットフォームはデフォルトでは 32 ビットになっていますが、64 ビットを選択し、64 ビットのアプリケーションを生成することが可能です。後ほど述べますが、ここで選択したプラットフォームに合わせて、配布するランタイムもプラットフォームに合わせて選択する必要があります。また実行するときにデバッグを行う場合は、DEBUG シンボル有効にチェックをいれます。

動的ライブラリですが、P コードとマシンコードを指定できます。詳細については以下となります。

Pcode

  • PBD(PowerBuilder 動的ライブラリ)ファイル
    • これらの動的ライブラリは、実行時にアプリケーションにリンクされるという点で、DLL ファイルに似ている。ただし、PBD は内部形式が異なるため、DLL とは互換性がない

マシン コード

  • DLL ファイル(ダイナミック リンク ライブラリ)
    • マシン コードの動的ライブラリは、Windows では拡張子 .dll が付加される。これらの動的ライブラリは、オペレーティング環境における、ほかの標準的な共有ライブラリと同様に動作する。これらの動的ライブラリは、外部のプログラムから呼び出せない点に注意する

なお 2 種類の動的ライブラリ(DLL と PDB)を 1 つのアプリケーション内に混在させることはできないのでご留意ください。

最後にコマンドラインでコンパイラー PBC.exe を使用して実行するためのパラメーターも自動的に生成されているので、コピペして使用が可能です。

3.ライブラリタブでの設定

ライブラリタブでは、実行ファイルを構築するときに動的ライブラリとして生成させる PBL ファイルを選択します。「全般」タブで「P コード」に指定した場合、動的ライブラリとして .pdb ファイルを生成します。「マシンコード」を指定した場合、.dll ファイルを生成します。動的ライブラリとして生成したい場合は忘れずにチェックしておきましょう。

ライブラリタブ

4.バージョンタブでの設定

バージョンタブでは、アプリケーションの情報として以下の内容を入力可能です。

■ 実行ファイルのプロパティで表示される情報

  • 製品名
  • 会社名
  • 説明
  • 著作権
  • 製品バージョン

■ インストーラーで使用される実行ファイルのバージョン情報

  • 製品バージョン
  • ファイルバージョン
バージョンタブ

5.セキュリティタブでの設定

この設定を行わなくてもアプリケーションは動作しますが、アプリケーションが Windows 用に認定される必要がある場合、または管理者として実行するための管理者特権を必要とする場合に、実行レベルや別ウィンドウの UI へのアクセスが必要かを指定したマニュフェストを埋め込むこともできます。

セキュリティタブ

6.実行タブでの設定

実行タブでは、アプリケーションの実行ファイル名、引数、および開始ディレクトリを指定できます。また、PowerBuilder 2019 R3 からは実行ファイルが参照するランタイムのディレクトリを指定できるようになりました。「アプリケーション XML のランタイムパス」を指定し、生成された XML ファイルを配布することで、アプリケーションはそのディレクトリにあるランタイムを参照して実行されます (相対パスの指定も可)。

実行タブ

以上で、アプリケーションプロジェクトの定義が完了しました。アプリケーションプロジェクト内の「配布」またはアプリケーションプロジェクトを保存後にマウス右クリックで表示される [配布] メニューをクリックすることでアプリケーションの生成が実行され、PBL と同じフォルダーに group.exe (および動的ライブラリ) が生成されます。実行ファイル名の定義でフルパスで指定した場合は、指定されたパスに group.exe が生成されます。

なお、プロジェクトの右クリックメニューから配布を行う場合、ペインターで何かを開いていると配布の実行ができないので、先ほど作成したプロジェクトのペインタも閉じる必要があります。すべてを閉じてから配布するようにしてください。


ランタイムインストーラーの生成

PowerBuilder にはランタイムのインストーラーを作成するために、専用のランタイムパッケージャーが用意されています。ランタイムパッケージャーで作成されたインストーラーを各端末上で実行すると、必要なランタイムがインストールされます。また、選択されていない機能のランタイムはインストーラーに含まないため、必要なものを忘れずに選択するようにしましょう。以下、詳細な操作について説明いたします。

ランタイムパッケージャーの起動

ランタイムパッケージャーは Windows のスタートメニューから Appeon PowerBuilder 2019 R3 | PowerBuilder ランタイム パッケージャ 2019 R3 をクリックして起動できます。

ランタイムパッケージャー

上記のランタイムパッケージャー画面で、まずランタイムの基本コンポーネントとして、実行ファイルのプラットフォームに合わせて、32 ビットまたは 64 ビットのいずれかを選択します。それからデータベースとの接続を利用している場合は、使用するライブラリをデータベースインターフェイスから選択します。今回の例では、[ODBCデータベースドライバー] を選択しています。その他のコンポーネントでは PowerBuilder がサポートしている機能を利用している場合、それぞれの機能にチェックを入れてください。たとえば、アプリケーションで NativePDF 機能を使用している場合は、[NativePDF サポート] にチェックをいれます。また、PowerBuilder 2019 の目玉機能である UI テーマを利用している場合は、[UI Theme Support] にチェックを入れます。

つぎに PowerBuilder ランタイムのバージョンを指定する必要があります。これは PowerBuilder 2019 に追加された新機能です。

最後に、PowerBuilder ランタイムパッケージの種類および保存先を指定してください。なお、ランタイムパッケージの種類として、PowerBuilder ランタイムインストーラ (.msi) と PowerBuilder ランタイム マージ モジュール (.msm) を選択できます。

以上の設定を完了し、機能のチェックに漏れがないことを確認してから、[生成] ボタンを押下すると、指定されたフォルダーにランタイムパッケージが生成されます。選択したコンポーネントに「ADO.NET」や「MS Excel12 サポート」など、.NET Framework が必要となる機能が含まれている場合、生成前に「ターゲットマシンに .NET Framework がインストールされている必要がある」という警告メッセージが表示されますが、これは、実行環境にあらかじめ .NET Framework がインストールされているか確認するよう注意を促しているだけなので、[OK] をクリックして続行しましょう。生成されたインストーラーを実行環境にコピーし実行することで、選択したランタイムがインストールされます。

なお、インストーラーの実行には Visual C++ 2010 ランタイムが必要となります。インストーラーの実行前にあらかじめインストールしておくか、PowerBuilder がインストールされたマシンから atl100.dllmsvcp100.dllmsvcr100.dll の 3 つのファイルをコピーして配布しておきましょう。たとえば 32ビット ランタイムのインストーラーを実行する場合は、実行端末の “C:\Windows\SysWOW64” などに、この 3 つのファイルをコピーします。


まとめ

以上で、PowerBuilder で開発したアプリケーションの実行ファイルの作成方法および実行に必要なランタイムパッケージの生成方法についてご紹介しました。

みなさん、いかがでしたか?

恥ずかしながら、私も PowerBuilder にランタイムが必要ということは知っていましたが、まさかランタイムパッケージャーまで用意されていたことは知りませんでした。いつもどの dll をコピーすればいいのか、一生懸命マニュアルで確認してましたが、ランタイムパッケージャーを利用すれば、必要な項目を選択してあとは [生成] ボタンを押せば、全部自動でまとめて、パッケージにしてくれます。やはり PowerBuilder は親切ですね。

実はラインタイムパッケージャを使わない配布などの方法もありますが、それはまた今後ご紹介できたらと思います。

以上、Yama-chan でした。

テクニカルブログ 一覧を見る
PowerBuilder マイグレーション
PowerBuilderとは? ~デキる大人へ変身できる?ローコード開発ツール~