---
# System prepended metadata

title: Installer操作說明
tags: [AIOTD]

---

# Installer操作說明
###### tags: `AIOTD`

1. 確認有沒有下列2個資料夾
    *     NSIS_Installer
    ![NSIS_Installer](https://i.imgur.com/cBIvSez.jpg)

    *     NSISPortableUnicode
    ![](https://i.imgur.com/wC3oIWM.jpg)
2. 調整程式碼
    * BackEnd及servo部分：     
        *     application.properties
        ```java=
            //資料庫帳密都為 root
            spring.datasource.one.password=root
            spring.datasource.two.password=root
            
            //mq的url調整為以下
            spring.activemq.broker-url=tcp://localhost:8089
            spring.activemq.host-url=tcp://localhost:9277
        ```
    * 單獨BackEnd部分：     
        *     application.properties
        ```java=
            //切換LMS網址
            //GSS LMS 測試機
            lms.url=http://192.168.106.34/LMSAPI/Api/lms/
            // Anser LMS
            lms.url=http://lms.anser-coding.com/LMSAPI/Api/lms/
    * FontEnd部分：(此部分是要部署到金泰測試機才做)     
        *     public\env-config.js
        ```java=
        //將 localhost 都改為金泰測試機的IP:192.168.10.106
        //但若是金泰工程師要安裝在他的本機測試的話，就還是保持 localhost 的設定。
        REACT_APP_BACKEND_URL: 'http://localhost:8080/ANSER/Api/'
        REACT_APP_DEVICE_SOCKET: 'ws://localhost:8080/ANSER/client1'
        REACT_APP_FW_SOCKET: 'ws://localhost:8080/ANSER/fw'
        REACT_APP_MONITOR_SOCKET: 'ws://localhost:8080/ANSER/monitorWarn/1'
        REACT_APP_EXTDEVICE_SOCKET: 'ws://localhost:8080/ANSER/extDevice',
        ```
        *     page\X1M080\X1M10\MessageEditor.tsx
        ```java=
        //將 localhost 改為金泰測試機的IP:192.168.10.106
        //但若是金泰工程師要安裝在他的本機測試的話，就還是保持 localhost 的設定。
        <iframe src="http://localhost:8080/messageEditor/MessageEditor.html" style={{....
        ```
3. 調整系統版本資訊
    * 修改\NSIS_Installer\files\backup\recipe.sql中的x1mdb_recipe.x1m_information_m資料表insert into的內容。     
        * product_version(版本資訊)：每次更版，第三位數字加一。
        * system_ip(主系統IP)：填入金泰測試機IP(192.168.10.106)。
        * database_server(資料庫Server的IP)：http://localhost:3306
        * server_ip(servo層的IP)：填入金泰測試機IP(192.168.10.106)。
        * product_path(安裝路徑)：C:\Program Files\XCommander。
        * database_name(資料庫名稱)：x1mdb_recipe、x1mdb_monitor。
        * installation_date(安裝日期)：填入更版當天日期。

4. 程式碼打包指令
```shell=
# FontEnd
npm run-script build

# BackEnd 及 servo
gradle build -x test
```
5. 將打包完的資料複製到NSIS_Installer中的指定資料夾
    * FontEnd：
    ``` java=
    //打包完的資料在這個資料夾內
    \anser\FontEnd\build
    
    //將上面打包完的內容放進這裡面
    \NSIS_Installer\apache-tomcat-8.5.69\webapps\ROOT
    ```
    * BackEnd：
    ```java=
    //包好的war檔
    ‪\anser\BackEnd\build\libs\ANSER-0.0.1-SNAPSHOT.war
    
    //將包好的war檔放進這裡並改名為"ANSER.war"，刪除原有的ANSER資料夾後，
    //將ANSER.war解壓縮至 "ANSER\"，解壓縮後ANSER.war可刪除。
    \NSIS_Installer\apache-tomcat-8.5.69\webapps
    ```
    * servo：
    ```java=
    \anser\servo\build\libs\servo.jar    //包好的jar檔
    \NSIS_Installer\servo    //替換掉裡面的servo.jar
    ```
    * mysql:資料庫（如有異動再改）
    ```java=
    \NSIS_Installer\mysql-8.0.25-winx64\init    //替換掉內部的sql
    \NSIS_Installer\files\backup                //替換掉內部的sql
    ```
    * message editor
    ```java=
    //將專案中的 MessageEditor 複製過來(若 node_modules 沒異動就不用複製過來)。
    //MessageEditor 資料夾內必須有 node_moudles 資料夾(如下圖一)
    //若無此資料夾，請執行 npm install 來產生。
    \NSIS_Installer\apache-tomcat-8.5.69\webapps\messageEditor
    
    //將 MessageEditor 及其額外需要的檔案直接覆蓋到這裡(如下圖二)
    \NSIS_Installer\files\messageFile
    ```
    ![](https://i.imgur.com/lBUg28z.jpg)
    ![](https://i.imgur.com/44HHmcD.jpg)




6. 確認檔案更新完成後即開始包Installer
    ![](https://i.imgur.com/FbOnFmc.jpg)
    ![](https://i.imgur.com/bc1bVcR.jpg)
    ![](https://i.imgur.com/u9vxnS9.jpg)
    > 選擇 \NSIS_Installer\Installer.nsi即可

7. ==**安裝新版本之前，請先移除舊版本再進行新版本的安裝。**==
8. 安裝完畢後，請到 http://localhost:8161/admin （帳號/密碼皆為 admin/admin）的Topics功能，確認 ShepherdXXXXXXX 與 WatchDogXXXXXXX 開頭的訂閱是否都為"1"，必須都為 "1" 才是正常狀態，見下圖一及圖二。
    * 若有任何 ShepherdXXXXXXX 開頭的項目不為 "1"，請重啟後端（即重啟Tomcat）。
    * 若有任何 WatchDogXXXXXXX 開頭的項目不為 "1"，請重啟Windows。(因為 Servo.jar 無法單獨重啟)

圖一：
![](https://i.imgur.com/nnxLXs0.jpg)


圖二：
![](https://i.imgur.com/mh2MSk2.jpg)
