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

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

  1. winsw: 

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

  1. 所需文件:

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

  • 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!

     

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

     

  • 启动后服务中会有相应的服务
  •     可以win+R 在运行中输入 "SERVICES.MSC" 查看服务

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

     

     

    二. 使用Inno Setup打包

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

    2. 修改配置:

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

     

        

        

      

        

     

     

     

     

    上一篇:Windows10 Java JDK环境变量配置


    下一篇:Java中Integer和String浅谈