構成ファイルで指定した設定値を反映した状態でアプリケーション(EXE)を起動する方法

更新しました May 20, 2021

環境

ソフトウェア

  • LabVIEW

アプリケーション(EXE)を配布する際に、配布先によってEXE起動時の初期値を指定したい場合や、EXE起動時の初期値を構成ファイル(INIファイル)で指定し、書き換え可能にしたい場合がございます。LabVIEWでは構成ファイルVIコマンドライン引数 を使用したEXEの初期値を設定する方法はございますが、これらはEXEが実行された際に値を更新する物となっている為、EXEを開いた状態(実行前)の初期値を変更する事はできません。ただし、構成ファイルVIやコマンドライン引数を使用する場合でもEXEが起動されたと同時に実行されるモードとし、初期値反映後、ユーザーからの操作を待つようにする事で目的の動作を満たす事はできますが、EXEが実行される前に初期値を変更したい場合、スタートアップEXEを作成し、メインのプログラムの呼び出しと初期値の設定を行う必要があります。ここではスタートアップEXEの作成、メインプログラムの呼び出し、初期値を構成ファイルから読み込んで設定、構成ファイルを書き換える方法について確認します。

AttachmentsよりOpenVI_withParameters.zipをダウンロードします。このプログラムはStartUp.viとMain.viの2つを含んでおり、StartUp.viは初期値を構成ファイルから読み込み、Main.viを呼び出し、Main.viに初期値を反映し、自動的に終了します。

 
001VIs.png


1. Main.vi
Main.viを開くと下記の様に5つの制御器を確認できます。ここではnum1, num2, str1, bool1の4つの制御器の初期値をStartUp.viから操作します。構成ファイルを上書き?のブールをTrueの状態でMain.viを実行すると構成ファイルがMain.viで指定された値に書き換えられます。
 
002Main.png


2. StartUp.vi
StartUp.viを開きます。
StartUp.viのブロックダイアグラムを確認すると、Main.viとApplication.ini(構成ファイル)へのパスを取得している事が確認できます。

Main.viをFP.Openのインボークノードを使用し、VIサーバーによる呼び出しを行います。この方法ではMain.viはStartUp.viとは別の独立したタスクとして動作させる事が出来る為、StartUp.viとMain.viとを独立して開始・停止する事ができます。(Call By Reference Nodeでメモリに読み込み、サブVIとして動作させる場合、StartUp.viはMain.viが停止するまで停止される事が出来ません。)
003startup.png

FP.Openのインボークノードの後、Ctrl Val.Setのインボークノードにより、Main.viの各制御器の値が構成ファイル(Application.ini)から読み取られた値に設定されます。その後、FP.CloseによりStartUp.viは閉じられます。

また、Runtime環境において、Main.viのパスは下記の様にサポートディレクトリを使用する形となっています。この部分はEXEのビルドの部分で設定方法についての注意点があります。
 
004main2.png


3. EXEのビルド仕様
ビルド仕様マイアプリケーションを開きます。ソースファイルにおいて、EXE起動時に最初に開かれるスタートアップVIをStartUp.viにします。また、Main.viを常に含むに追加します。
 
4sourcefile.png


次にソースファイル設定を確認します。StartUp.viのVIプロパティの開かれたら実行を有効にします。この設定により、EXE起動時にStartUp.viが自動的に実行され、Main.viの呼び出し、構成ファイルの読み込み、初期値の設定を行う事ができます。
 
006statup.png


Main.viのソースファイル設定では出力先をサポートディレクトリとし、開かれたら実行のVIプロパティは無効にします。出力先についてはStartUp.viの中で指定しているパスと整合性を取れている限り、変更可能です。
 
005App1.png

上記設定完了後、ビルドします。


4. 構成ファイル(Application.ini)
EXEを作成すると下記の様に4つのファイルが生成されます。dataはサポートディレクトリとなっており、Main.viが格納されています。Application.iniは構成ファイルとなっており、AttachmentsのOpenVI_withParameters.zipに含まれている物と置き換えます。この構成ファイルは下記の様にMain.viに指定する初期値が記録されています。
 
007exe.png


5. EXEの実行
構成ファイルの初期値を変更し、Application.exeを起動すると、設定通りの初期値でMain.viが起動する事が確認できます。構成ファイルを上書き?のブールをTrueの状態でMain.viを実行すると、num1, num2, str1, bool1の初期値が現在のMain.viの値に書き換わります。(Application.iniファイルは閉じておく必要があります。)
 
008test.png