如何使用SpringBoot jar包制作Windows客户端安装程序
浏览:552 次

出身背景
Web面打印功能要求。一开始,Lodop插件用于与用户的本地打印机交互。它的功能非常强大和完整。然而,仍有许多要求无法涵盖,例如文本旋转(图像旋转的定义存在问题)、价格标签和其他精确打印、打印性能等方面无法满足或存在缺陷。因此,我们需要自己开发一个客户端打印插件服务。解决方案很简单。服务器生成打印结果的pdf文件,客户端打印插件服务下载该pdf文件并调用用户的本地打印机进行打印。打印插件服务是使用Spring Boot开发的,它提供诸如获取本地打印机列表、调用打印机等接口服务。这扩展到如何让用户方便地安装插件服务,并为用户提供自动启动计算机的功能。
开发环境描述
操作系统:windows 10
Java开发环境:32位jdk1.8(Spring Boot程序与XP兼容)
Python开发环境:Python3.6.5+wxPython4.0.6+PyInstaller3.5
C语言开发环境:VC++6.0(为了使启动程序exe与XP兼容)
安装程序创建工具:Inno Setup 5.6.1-unicode(6.0版不支持XP,您必须下载unicode版本才能在安装界面上支持中文)
MT.exe:为启动器注入管理员许可证权限。执行
Execscope公司。exe:查看exe程序支持的Windows操作系统版本。
解决方案
方案一
实施过程
1.使用winsw Exe将打印插件服务的jar包转换为Windows服务,并将其设置为自启动。
winsw。执行2.3
创建一个新的xml配置文件winsw。xml,并将其放在同一目录中,
<服务>

<可执行文件>。\jre\bin\javaw。exe可执行文件>
服务>
打开当前目录并执行以下dos命令
#安装服务
>winsw。exe安装
#启动服务(虽然是自启动模式,但安装后不会自动启动)
>净启动GemBox
#卸载服务
>winsw。exe卸载
缺点
虽然Web服务正常启动,但jar需要与用户的本地打印机交互,因此在win10系统下调用打印相关接口时没有响应。故障排除后,发现这是用户权限问题。自制Windows服务默认由系统用户启动。但是,它无法获得与打印机交互的权限,因此必须以管理员用户模式启动打印插件服务。(尽管winsw.exe也可以作为指定用户的自启动服务安装,但必须配置用户名和密码,不同用户不能使用。)。
与其他操作系统的兼容性:XP/win7/vista未知,尚未验证。
方案二
实施过程
为了解决使用本地用户帐户启动插件服务的问题,发现一些软件会通过观察日常使用中的软件程序,在Windows的任务调度程序中自动创建一个计划任务,并通过计划任务触发程序启动。立即开始思考,找出如何使用dos命令->schtasks.exe创建任务计划
使用bat脚本提供安装、卸载、启动和停止服务脚本。

安装脚本install.bat
@回声关闭
::输入脚本目录
cd/D%~dp0
::schtasks/Create/tn GemBox/tr%cd%\GemBox。bat/sc ONLOGON/RL最高
::schtasks/Delete/tn testschtask
::在创建新任务计划之前删除该任务计划。
schtasks/删除/tn GemBox/F
::XP系统不支持/RL参数,程序目录需要双引号
::用户登录并执行指定的bat脚本。%cd%指向脚本执行的目录。
schtasks/Create/tn GemBox/tr“%cd%\GemBox.bat”/sc ONLOGON
@echo“安装成功!”
暂停
启动脚本gembox.bat
@回声关闭
::输入脚本目录
cd/D%~dp0
::重命名javaw。将jre/bin中的exe转换为GemBox。exe。为了便于以后按名称进行进程杀戮
start.\jre\bin\GemBox-jar.\lib\GemBox服务。jar--spring.config.location=classpath:/application.yml,./conf/application.properties
出口

停止脚本Stop.bat
@回声关闭