通过提示

时间:2017-08-09 18:51:02

标签: java printing nsis redmon

我一直在尝试为我用Java编写的程序创建一个安装程序,实现GhostScript,创建一个发送文件的虚拟打印机。然后我的程序读取文件并相应地管理它。但是,我必须手动配置RedMon重定向端口(RPT1 :)并手动创建一个新的打印机,使用该端口,将.jar文件作为参数:

打印机端口上配置的参数:

Arguments configured on the printer's port

我能够通过NSIS(我用来创建安装程序的程序)创建一台新打印机,如下所示:

Exec 'cscript "C:\Windows\System32\Printing_Admin_Scripts\pt-BR\prnport.vbs" ^ -a -r RPT1:'
ExecWait 'rundll32 printui.dll,PrintUIEntry /if /f "$INSTDIR\ghostpdf.inf"^ /r "RPT1:" /m "Ghostscript PDF" /b "Impressora SPE" /u /Y'

有没有办法通过命令来配置端口?如果可能的话,我想为我的程序创建一个单独的端口(目前我使用默认的RedMon端口),但是在安装时也会将Java参数传递给它,因此最终用户不会这样做。必须手动包含这些参数。我到处寻找,但我发现的每一个指南和文章都是手动完成的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我花了一些时间挖掘,但我终于找到了使用RedMon设置新打印机端口所需的命令,并认为我在这里分享它所以很少有人很难找到它。

rundll32 "REDMONPATH\redmon32.dll", RedMonConfigurePort Port="PORT:" Command="JAVA" Arguments="-jar ""JAR"" ""C:\Program Files (x86)\gs\gs9.21\bin\gswin32c -I\""C:\Program Files (x86)\gs\gs9.21\lib\"" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -r300"""

如果REDMONPATH是RedMon安装文件夹的路径,PORT是您的端口名称,JAVA是您的java.exe路径,JAR是.jar文件的路径。请保留双引号,这是我们如何通过命令传递引号。但是,您必须在RedMon安装文件夹上运行此命令。此外,您必须以管理员身份运行,否则您可能会收到错误并错误地认为您做错了什么。在我的例子中,使用NSIS,这是完整的命令行:

ExecWait 'rundll32 "$INSTDIR\redmon\redmon32.dll", RedMonConfigurePort Port="SPE:" Command="C:\Program Files (x86)\Java\jre1.8.0_144\bin\java.exe" Arguments="-jar ""C:\Program Files (x86)\Impressora SPE\ImpressoraSPE.jar"" \""C:\Program Files (x86)\gs\gs9.21\bin\gswin32c -l \""C:\Program Files (x86)\gs\gs9.21\lib\"" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -r300"""'

之后,您可以正常使用新端口安装新打印机:

ExecWait 'rundll32 printui.dll,PrintUIEntry /if /f "$INSTDIR\ghostpdf.inf" /r "PORT:" /m "Ghostscript PDF" /b "PRINTER_NAME" /u /Y'`

如果你试图从命令提示符而不是NSIS尝试运行它,那么你所要做的就是删除" ExecWait"位和命令周围的单引号。也替换" $ INSTDIR \ something"通过相应的完整路径。

如果有其他人需要进一步帮助这个主题,看到我个人很难用它,请随时在这里问他们,我会尽力帮助你!

编辑:我为不断编辑道歉,只是确保在不同版本的Windows中测试这些内容时保留帮助大多数人的说明。