electron集成Java服务端制作windows安装包

一. 使用Winsw将jar包制作成windows服务

  1. winsw: 

   它是一个开源单文件的可执行exe文件,可以再 Github 上下载,一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。

  1. 所需文件:

    • jre: java运行环境
    • logs: 日志文件夹(可选)
    • demo.exe:下载后会得到一个WinSW-x64.exe 我这里将它重名为demo.exe ,改成什么都可以便于使用即可。
    • demo.jar: java 服务jar包
    • demo.xml: 服务配置文件
    • install.cmd: cmd脚本,用于添加服务(后续详解)
    • uninstall.cmd: 删除服务脚本(同上)
  2. 修改配置:

    <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>
  3. Winsw命令说明:

    • demo install 安装服务
    • demo uninstall 卸载服务
    • demo start 开启服务
    • demo stop 停止服务
    • demo restart 重新启动服务
    • demo status 检查服务的当前状态
    • ps: 命令格式为 winsw.exe install ,例如当前为demo.exe isntall 可以简写为 demo isntall
  4. install.cmd 安装服务

    @echo.InstallService......
    @echo off
    @demo install
    @demo start
    @echo off
    @echo.Success!

     

  5. uninstall.cmd 删除服务
    @echo.UnInstallService
    @echo off
    @demo stop
    @demo uninstall
    @echo off
    @echo.DeleteSuccess!

     

  6. 启动后服务中会有相应的服务

    可以win+R 在运行中输入 "SERVICES.MSC" 查看服务

    

 

三. 使用Inno Setup打包

  1. Inno Setup 使用详细请看上一篇 : Idea + exe4j + Inno Setup 将javaFx项目集成jdk打包成安装包 中 :三.Inno Setup 将exe程序集成jdk打包成安装程序

  2. 完整目录:

    将Java服务放到打包好的Electron项目里

  3. 修改Inno Setup 脚本:

在[Run]下添加(用于在安装时将服务添加到系统中)

Filename: "{app}\server\install.cmd"; StatusMsg: "正在注册服务...";

添加[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: "正在删除服务...";

     

 

 

 

 

 

 

 

 

 

    

    

  

    

 

 

 

 

posted @ 2022-03-02 20:30  zwbsoft  阅读(2227)  评论(1编辑  收藏  举报