一. 使用Winsw将jar包制作成windows服务
-
winsw:
它是一个开源单文件的可执行exe文件,可以再 Github 上下载,一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。
-
所需文件:
- jre: java运行环境
- logs: 日志文件夹(可选)
- demo.exe:下载后会得到一个WinSW-x64.exe 我这里将它重名为demo.exe ,改成什么都可以便于使用即可。
- demo.jar: java 服务jar包
- demo.xml: 服务配置文件
- install.cmd: cmd脚本,用于添加服务(后续详解)
- uninstall.cmd: 删除服务脚本(同上)
修改配置:
<service> <!--windows服务id 必须唯一 --> <id>demo</id> <!-- windows服务名称--> <name>demo</name> <!-- 描述 --> <description>测试服务</description> <!-- 启动的可执行文件 %BASE%为当前demo.exe所在路径--> <executable>%BASE%\jre\bin\java.exe</executable> <!-- 传递给可执行文件的参数--> <arguments> -jar "%BASE%\demo.jar"</arguments> <!--日志模式 --> <logmode>rotate</logmode> <!-- 日志文件路径--> <logpath>%BASE%/logs</logpath> <!-- 开机自启 --> <startmode>Automatic</startmode> </service>
Winsw命令说明:
- demo install 安装服务
- demo uninstall 卸载服务
- demo start 开启服务
- demo stop 停止服务
- demo restart 重新启动服务
- demo status 检查服务的当前状态
- ps: 命令格式为 winsw.exe install ,例如当前为demo.exe isntall 可以简写为 demo isntall
install.cmd 安装服务
@echo.InstallService...... @echo off @demo install @demo start @echo off @echo.Success!
@echo.UnInstallService @echo off @demo stop @demo uninstall @echo off @echo.DeleteSuccess!
可以win+R 在运行中输入 "SERVICES.MSC" 查看服务
二. 使用Inno Setup打包
-
详细请看上一篇 : Idea + exe4j + Inno Setup 将javaFx项目集成jdk打包成安装包 中 :三.Inno Setup 将exe程序集成jdk打包成安装程序
-
修改配置:
在[Run]下添加: Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
添加[UninstallRun]节点 并添加一下内容 :Filename: "{app}\server\uninstall.cmd"; StatusMsg: "正在删除服务...";
完整配置文件:
; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "我的程序" #define MyAppVersion "1.5" #define MyAppPublisher "我的公司" #define MyAppURL "http://www.example.com/" #define MyAppExeName "demo.exe" [Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (若要生成新的 GUID,可在菜单中点击 "工具|生成 GUID"。) AppId={{335C4E66-1129-4B46-ACBE-B7CFC6845E40} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={autopf}\{#MyAppName} DisableProgramGroupPage=yes ; 以下行取消注释,以在非管理安装模式下运行(仅为当前用户安装)。 ;PrivilegesRequired=lowest OutputDir=C:\Users\77175\Desktop\electron\out OutputBaseFilename=demoSetup Compression=lzma SolidCompression=yes WizardStyle=modern [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "C:\Users\77175\Desktop\electron\demo\dist_electron\win-unpacked\demo.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Users\77175\Desktop\electron\源文件\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion” [Icons] Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent Filename: "{app}\server\install.cmd"; StatusMsg: "正在注册服务..."; [UninstallRun] Filename: "{app}\server\uninstall.cmd"; StatusMsg: "正在删除服务...";