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: "正在刪除服務...";

     

 

 

 

 

 

 

 

 

 

    

    

  

    

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM