CubeVPC: Cube VirtualPrinter Console

Cube VirtualPrinter Console (CubeVPC) は、仮想プリンターのインストール およびアンインストールを実行するためのコマンドライン型アプリケーションです。 CubeVPC を使用するには .NET Framework 3.5 以降が必要です(4.5.2 以降を強く推奨)。 もし、ご利用の端末にインストールされていない場合、以下の URL からダウンロードして下さい。

使用方法

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"
    }]
}