> For the complete documentation index, see [llms.txt](https://doc.omflow.com.tw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.omflow.com.tw/id-2/2-04-1.md).

# 版本更新

## Windows

### 一般版本更新步驟

1. **備份OMFLOW**

請先備份OMFLOW，備份方式請詳見【**備份與還原**】章節

2. **執行更新檔**

OMFLOW 的 Windows 更新檔可以直接執行，在更新檔按下右鍵後選擇「以系統管理員身份執行」。

3. **選擇語系**

選擇顯示的語言後按下「確定」。

4. **同意使用條款**

勾選使用條款須知的「我同意」後按下「下一步」。

5. **開始更新**

執行檔會檢查你的設備是否可以使用當前的更新，檢查完畢後按下「更新」

> 如果出現版本不符情況，請先檢查OMFLOW版本，與更新檔版本是否可以使用。\
> OMFLOW 在 1.1.4 之後的版本，可以直接使用最新的更新檔升級到最新版本。\
> 如果設備上的 OMFLOW 版本小於 1.1.4，請依照 OMFLOW 版本順序，依序更新到 1.1.4.0 後再使用最新的更新檔。

6. **服務重啟**

更新完畢後會自動重啟OMFLOW服務，服務重啟完畢後按下「結束」即完成更新。

> 1.1.4.0 以前的版本更新後，請確認OMFLOW服務已重新啟動後，再繼續更新。

現在你可以繼續使用OMFLOW了！

### 1.2.0、1.2.2 注意事項 - 2024/9/3 Update

OMFLOW在1.2.0、1.2.2版本分別將Python版本進行升級，若用戶在過去版本額外安裝python套件，更新過程會要求用戶手動更新套件，以下為相關步驟：

1. Python路徑為 `C:\PROGRA\~1\OMFLOW Server\Python311` 或 `C:\PROGRA\~1\OMFLOW Server\Python311x64`
2. 以管理者權限開啟CMD視窗並進入 指令進行安裝
3. 以指令 `python.exe -m pip install <套件名稱> --target "Lib\site-packages"`
4. 安裝後點擊下一步進行檢查，以此循環直到無缺失套件
5. 關閉所有Python相關CMD視窗

## Linux

### 一般更新步驟

1. **備份OMFLOW**

請先備份OMFLOW，備份方式請詳見【**備份與還原**】章節

2. **解壓縮更新檔**

解壓縮 patch 檔

```bash
tar -zxvf [patch檔路徑]
```

3. **執行更新檔**

移動至 patch.sh 的路徑上，執行 patch.sh

```bash
cd [patch檔路徑]
sudo ./patch.sh
```

4. **重啟服務**

確認 OMFLOW 服務是否正常啟動

```bash
/opt/omflow/server/omflow_server status
```

若服務尚未被啟動，請將服務開啟

```bash
/opt/omflow/server/omflow_server start
```

現在你可以繼續使用OMFLOW了！

### Linux 更新 1.2.0.0 版本步驟

OMFLOW在1.2.0.0版本對環境需求進一步提升，使用Linux環境之用戶需手動更新，以下為相關步驟：

> python version: 3.8 → 3.11 django version: 2.2 → 4.2.6

1. **停止OMFLOW**

   ```bash
   omflow_server stop
   ```
2. **刪除/opt/omflow資料夾底下的python資料夾**

   ```bash
   rm -rf /opt/omflow/python/
   ```
3. **安裝ubuntu套件**

> 套件清單
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

安裝方式一：線上安裝版(需連線網際網路)

```bash
	# 更新套件庫
	apt-get update -y
	# 增加套件庫
	add-apt-repository ppa:deadsnakes/ppa -y
	# 更新套件庫
	apt-get update -y
	# 安裝python3.11及相關套件
	apt-get install -y python3.11 python3.11-dev python3.11-venv python3-pip
```

* 安裝方式二：無網路環境、離線安裝方式請見補充
  * 下載Ubuntu套件離線安裝包
  * 離線安裝Ubuntu套件

4. **設定python 3.11為環境變數(使得python3.11可用指令python3呼叫)**

   ```bash
   update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
   ```
5. **建立python 3.11的虛擬環境在/opt/omflow資料夾底下**

   ```bash
   python3 -m venv /opt/omflow/python
   ```
6. **進入虛擬環境並安裝python套件**

> python套件清單
>
> * wheel
> * django==4.2
> * ldap3
> * mod\_wsgi
> * openpyxl
> * DB會用到的python套件
> * 其他會用到的套件…
> * 線上安裝版(需連線網際網路)

```bash
    # 進入虛擬環境
    source /opt/omflow/python/bin/activate
    # 安裝 wheel
    pip install wheel
    # 非必要可略
    python /usr/lib/python3.11/test/libregrtest/setup.py bdist_wheel
    # 安裝必要套件，其他套件請自行評估安裝
    pip install django==4.2 ldap3 mod_wsgi openpyxl
```

* 無網路環境、離線安裝方式請見補充
  * 下載python套件離線安裝包(.whl)
  * 離線安裝python套件

7. **修改apache http.conf裡的wsgi\_module路徑改成新的路徑**

   ```bash
   # 修改django.conf
   vim /etc/apache2/sites-available/django.conf

   # 修改wsgi_module的路徑
   ```
8. **更新OMFLOW 1.2.0.0**

   ```bash
   # 進入tmp
   cd /tmp/

   # 解壓縮patch檔
   tar zxvf /tmp/omflow_patch_1_2_0_0.tar.gz
   ```

   ```bash
   # 進入patch資料夾
   cd omflow_patch_1_2_0_0/

   # 執行patch
   ./patch.sh
   ```
9. **啟動OMFLOW(通常無須手動啟動)**

### 補充:

1. 下載Ubuntu套件離線安裝包
   * 找一台環境與OMFLOW server相同的Ubuntu，需有網際網路連線。

> 套件清單
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

* 下載指令:

```bash
    # 切換root身分
    sudo su

    # 新增套件庫**deadsnakes** PPA
    add-apt-repository ppa:deadsnakes/ppa

    # 更新套件列表: 
    apt-get update

    # (如果需要的話)清理預設的下載資料夾
    apt-get clean

    # 下載但不安裝套件
    apt-get install --download-only python3.11 python3.11-dev python3.11-venv python3-pip

```

* 下載的安裝包將被保存在 **`/var/cache/apt/archives/`** 目錄下，自行使用FTP軟體取出並放至OMFLOW server環境。

2. 離線安裝Ubuntu套件

> 套件清單
>
> * python 3.11
> * python3.11-dev
> * python3.11-venv
> * python3-pip

* 將 **`.deb`** 文件複製到Ubuntu的某個目錄，此用 \*\*`/tmp/Downloads`\*\*舉例
* Ubuntu指令:

```bash
        # 切換root身分
        sudo su
        
        # 移動到安裝包所在的路徑底下
        cd /tmp/Downloads
        
        # 使用 dpkg 安裝下載的套件包
        dpkg -i *.deb
```

3. 從現有環境匯出已安裝的python套件清單
   * 如果您已經有原OMFLOW使用的套件清單可略過本步驟。
   * 參考資料: <https://pip.pypa.io/en/stable/cli/pip_freeze/>
   * 匯出指令:

     ```bash
     # 切換到OMFLOW的虛擬環境
     source /opt/omflow/python/bin/activate

     # 匯出python套件清單至/tmp底下
     pip freeze > /tmp/requirements.txt

     # 將django的版本改為4.2以上版本
     vim /tmp/requirements.txt
     ```
   * 自行使用FTP軟體取出並放至有網路的Ubuntu環境，作為後續下載套件的參考。
4. 下載python套件離線安裝包(.whl)
   * 請準備一台已經安裝好python3.11的環境，方便下載python3.11適用的套件版本，此環境必須能連到網路。
   * 下載指令:

     ```bash
     # 新增一個存放離線安裝包的資料夾
     mkdir /tmp/python_package
     cd /tmp/python_package

     # [方法一]使用requirements.txt批次下載
     # 假設您已經將前一步的requirements.txt放在/tmp/底下
     pip -m install /tmp/requirements.txt

     # [方法二]手動輸入套件名稱下載
     pip -m install <套件名稱>

     # 下載完成後檢視資料夾內有多少.whl安裝檔
     ll
     ```
   * 自行使用FTP軟體取出並放回OMFLOW server。
   * 補充: mod\_wsgi會得到tar.gz，安裝方式較為特別，請見離線安裝mod\_wsgi。
5. 離線安裝python套件
   * 假設python套件的離線安裝包(.whl)放在此路徑`**/opt/omflow/tmp**`底下
   * 安裝指令:

     ```bash
     # 切換到OMFLOW的虛擬環境
     source /opt/omflow/python/bin/activate

     # 切換到離線安裝包的檔案路徑底下
     cd /opt/omflow/tmp

     # 安裝所有whl
     pip install *.whl
     ```
6. 離線安裝mod\_wsgi
   * 安裝指令:

     ```bash
     # 切換到OMFLOW的虛擬環境
     source /opt/omflow/python/bin/activate

     # 解壓縮mod_wsgi的tar.gz
     tar zxvf <mod_wsgi的檔案路徑>

     cd <mod_wsgi解壓縮後的路徑>

     # 簡易安裝mod_wsgi
     python setup.py install
     ```

### 注意:

更換完python & django後，要更新OMFLOW版本至1.2.0.0才能成功啟動；之前的版本無法搭配django 4.2使用 。

### 錯誤處理

如果更新完 OMFLOW 後無法啟動服務，請依照【**備份與還原**】章節將 OMFLOW 進行還原，再重新執行更新步驟。
