Cube VirtualPrinter Console (CubeVPC) は、仮想プリンターのインストール およびアンインストールを実行するためのコマンドライン型アプリケーションです。 CubeVPC を使用するには .NET Framework 3.5 以降が必要です(4.5.2 以降を強く推奨)。 もし、ご利用の端末にインストールされていない場合、以下の URL からダウンロードして下さい。
- Download .NET Framework
https://dotnet.microsoft.com/download/dotnet-framework
使用方法
CubeVpc.exe JSON -Command COMMAND [OPTIONS]
CubeVPC の必須パラメータは JSON および COMMAND の 2 種類です。 JSON には、インストールまたはアンインストールするプリンター構成を記載した JSON 形式のファイルへのパスを記載します。 COMMAND には、下記の 4 種類の中から一つを指定します。
- Install
指定された構成でプリンター等をインストールします。 既にインストールされている項目は、処理をスキップします。 - Uninstall
指定された構成でプリンター等をアンインストールします。 - Reinstall
指定された構成でプリンター等をいったんアンインストールした後、 再度インストールを実行します。 - Update (3.0.0 or later)
必要と判断された場合のみ、指定された構成でインストールを実行します。 インストール時の挙動は Reinstall と同様です。
OPTIONS に指定可能なオプションは下記の通りです。
- -Resource DIRECTORY
JSON ファイルに記載されている、インストールに必要な各種ファイルが存在する フォルダへのパスを指定します。 - -Relative
コマンドライン上で指定されたパスを CubeVpc.exe が存在する フォルダからの相対パスとして認識します。 - -Force
JSON ファイルに記載されたプリンタードライバやポートモニタに依存する全ての要素を 強制的にアンインストールします。このオプションを指定した場合、意図しない プリンタードライバまでアンインストールされる可能性があります。また、オプションを 指定しない場合は、対象となるプリンタードライバ等が他のプリンターに使用されている などの理由で、アンインストールに失敗する事があります。 - -Retry COUNT
プリンター等のインストールまたはアンインストールに失敗した時に再試行する回数を 指定します。 - -Timeout SECOND
プリンター等のインストールまたはアンインストール実行時のタイムアウト時間の初期値を 秒単位で指定します。実際のタイムアウト時間は、実行に失敗する度に等倍されます。 例えば 30 を指定した場合、実際のタイムアウト時間は 30 秒、60 秒、90 秒、... と 増加していきます。
CubeVPC の実行コマンド例は下記の通りです。
CubeVPC.exe CubePrinter.json -Command Reinstall -Relative -Resource Printers -Retry 6 -Timeout 30
JSON 仕様
CubeVPC に指定する構成用 JSON ファイルの仕様は下記の通りです。
{ "Timestamp": "YYYY/mm/dd HH:MM:ss", "Printers": [ ... ], "PrinterDrivers": [ ... ], "Ports": [ ... ], "PortMonitors": [ ... ] }
構成要素は Timestamp, Printers, PrinterDrivers, Ports, PortMonitors の 5 種類であり、Timestamp 以外はいずれも配列形式で複数の要素を指定する事ができます。 また、既にインストールされている要素を利用する等の理由で新たにインストールする ものが存在しない場合、該当項目を省略する事も可能です。
Timestamp は、この JSON ファイルの最終更新日時を記載します。 CubeVPC は、この値とインストール時に生成するスタンプファイルを比較する事で、 インストール処理を省略可能かどうかを判断します。
PortMonitors
PortMonitors には、インストールまたはアンインストールするポートモニタを 指定します。指定項目は下記の通りです。
- Name (string)
インストールまたはアンインストールするポートモニタの名前を指定します。 - FileName (string)
モジュール名を指定します。 - Config (string)
UI モジュール名を指定します。
尚、FileName および Config で指定されたモジュールは -Resource オプションで指定されたフォルダに存在するものとします。
Ports
Ports には、インストールまたはアンインストールするポートを指定します。 指定項目は下記の通りです。
- Name (string)
インストールまたはアンインストールするポートの名前を指定します。 - MonitorName (string)
ポートが利用するポートモニタの名前を指定します。 ここで指定されるポートモニタは、既にインストールされているか、または、 同じ構成ファイルに記述されている必要があります。 - Application (string)
ポートが実行するアプリケーションのパスを指定します。 - Arguments (string)
ポートがアプリケーションを実行する際に指定する引数を指定します。 実際にポートがアプリケーションを実行する際には、ここで指定されたもの以外の 引数が含まれる事があります。 - Temp (string)
一時ファイル等を保存するフォルダのパスを指定します。 ログイン中のユーザーおよび SYSTEM アカウントが書き込み可能なフォルダを指定して下さい。 - WaitForExit (bool)
アプリケーションが終了するまで、次の印刷ジョブの処理を待機するかどうかを 指定します。false の場合、複数のプロセスが同時に実行される可能性があります。 - RunAsUser (bool)
アプリケーションをログオン中のユーザーで実行するかどうかを指定します。 false の場合、SYSTEM アカウントで実行されます。尚、Proxy の項目が省略 されている場合、この項目に関わらず SYSTEM アカウントで実行されます。 - Proxy (string)
SYSTEM アカウントからログオン中のユーザーに切り替えるためのプログラムのパスを 指定します。該当機能を自ら実装する等の場合を除き、同梱する CubeProxy.exe の パスを指定して下さい。
PrinterDrivers
PrinterDrivers には、インストールまたはアンインストールするプリンタードライバを 指定します。指定項目は下記の通りです。
- Name (string)
インストールまたはアンインストールするプリンタードライバの名前を指定します。 - MonitorName (string)
プリンタードライバが利用するポートモニタの名前を指定します。 ここで指定されるポートモニタは、既にインストールされているか、または、同じ構成 ファイルに記述されている必要があります。 - Data (string)
PostScript Printer Driver (PPD) ファイルを指定します。指定された PPD ファイルは -Resource オプションで指定されたフォルダに存在するものとします。 - FileName (string)
モジュール名を指定します(例: pscript5.dll)。 - Config (string)
UI モジュール名を指定します(例: psui5.dll)。 - Help (string)
ヘルプ用ファイル名を指定します(例: pscript.hlp)。 - Dependencies (string 配列)
その他の依存ファイルを配列形式で指定します。 - Repository (string)
FileName, Config, Help, Dependencies で指定された各種モジュールを DriverStore フォルダから検索する際に使用します。例えば、64bit 環境において ntprint を指定した場合、
DriverStore/FileRepository/ntprint.ing_amd64_xxxxxxxxxxxxxxx/amd64
からの取得を試みます。
Printers
Printers には、インストールまたはアンインストールするプリンターを指定します。 指定可能な項目は、指定項目は下記の通りです。
- Name (string)
インストールまたはアンインストールするプリンター名を指定します。 - ShareName (string)
プリンターを LAN 等のネットワーク上で共有する時の名前を指定します。 - DriverName (string)
プリンターが利用するプリンタードライバ名を指定します。 指定されたプリンタードライバは既にインストールされているか、または、同じ構成 ファイルに記述されている必要があります。 - PortName (string)
プリンターが利用するポート名を指定します。 指定されたポートは既にインストールされているか、または、同じ構成ファイルに記述 されている必要があります。
Examples
CubeVPC に指定する JSON ファイルの構成例は下記の通りです。
{ "Timestamp" : "2020/10/26 12:00:00", "Printers" : [{ "Name" : "CustomPDF", "ShareName" : "CustomPDF", "DriverName" : "CubeVPD", "PortName" : "CubeVP0:" }], "PrinterDrivers" : [{ "Name" : "CubeVPD", "MonitorName" : "CubeVpMon", "Data" : "CubeVPD.ppd", "Repository" : "ntprint", "FileName" : "pscript5.dll", "Config" : "ps5ui.dll", "Help" : "pscript.hlp", "Dependencies" : [ "pscript.ntf", "pscrptfe.ntf", "ps_schm.gdl" ] }], "Ports" : [{ "Name" : "CubeVP0:", "MonitorName" : "CubeVpMon", "Application" : "C:\\Program Files\\CubePDF\\CubePdf.exe", "Proxy" : "C:\\Program Files\\CubeVP\\CubeProxy.exe", "Arguments" : "", "Temp" : "C:\\ProgramData\\CubeSoft\\CubeVP", "WaitForExit" : false, "RunAsUser" : true }], "PortMonitors" : [{ "Name" : "CubeVpMon", "FileName" : "cubevpmon.dll", "Config" : "cubevpmonui.dll" }] }