diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4b0d752ec8b1c4664b06718400291b50c5631ee3..4069f4f73de4cbf97f06739b94b7ad619e63ea78 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,19 +14,15 @@ jobs:
   release:
     strategy:
       matrix:
-        os: [windows-latest, ubuntu-latest, macos-latest]
+        os: [windows-latest, ubuntu-20.04, macos-latest]
     runs-on: ${{ matrix.os }}
     if: startsWith(github.repository, 'zzzgydi')
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
 
-      - name: Install Rust
-        uses: actions-rs/toolchain@v1
-        with:
-          toolchain: stable
-          profile: minimal
-          override: true
+      - name: install Rust stable
+        uses: dtolnay/rust-toolchain@stable
 
       - name: Rust Cache
         uses: Swatinem/rust-cache@v2
@@ -34,9 +30,10 @@ jobs:
           workspaces: src-tauri
 
       - name: Install Node
-        uses: actions/setup-node@v1
+        uses: actions/setup-node@v3
         with:
-          node-version: 16
+          node-version: "16"
+          cache: "yarn"
 
       - name: Install Dependencies (ubuntu only)
         if: startsWith(matrix.os, 'ubuntu-')
@@ -44,22 +41,9 @@ jobs:
           sudo apt-get update
           sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf openssl
 
-      - name: Get yarn cache dir path
-        id: yarn-cache-dir-path
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-
-      - name: Yarn Cache
-        uses: actions/cache@v2
-        id: yarn-cache
-        with:
-          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
-          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
-          restore-keys: |
-            ${{ runner.os }}-yarn-
-
       - name: Yarn install and check
         run: |
-          yarn install --network-timeout 1000000
+          yarn install --network-timeout 1000000 --frozen-lockfile
           yarn run check
 
       - name: Tauri build
@@ -78,7 +62,7 @@ jobs:
           prerelease: true
 
       - name: Portable Bundle
-        if: matrix.os == 'windows-latest'
+        if: startsWith(matrix.os, 'windows-')
         # rebuild with env settings
         run: |
           yarn build
@@ -97,23 +81,16 @@ jobs:
       startsWith(github.ref, 'refs/tags/v')
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v2
-
-      - name: Get yarn cache dir path
-        id: yarn-cache-dir-path
-        run: echo "::set-output name=dir::$(yarn cache dir)"
+        uses: actions/checkout@v3
 
-      - name: Yarn Cache
-        uses: actions/cache@v2
-        id: yarn-cache
+      - name: Install Node
+        uses: actions/setup-node@v3
         with:
-          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
-          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
-          restore-keys: |
-            ${{ runner.os }}-yarn-
+          node-version: "16"
+          cache: "yarn"
 
       - name: Yarn install
-        run: yarn install
+        run: yarn install --network-timeout 1000000 --frozen-lockfile
 
       - name: Release updater file
         run: yarn run updater
diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml
index a4eb7e11f552ea81a57c942dcc55cc3f031f168e..2f639ddfb07b7596acd6e8be55abc832be4ed63a 100644
--- a/.github/workflows/updater.yml
+++ b/.github/workflows/updater.yml
@@ -8,23 +8,16 @@ jobs:
     if: startsWith(github.repository, 'zzzgydi')
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
 
-      - name: Get yarn cache dir path
-        id: yarn-cache-dir-path
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-
-      - name: Yarn Cache
-        uses: actions/cache@v2
-        id: yarn-cache
+      - name: Install Node
+        uses: actions/setup-node@v3
         with:
-          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
-          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
-          restore-keys: |
-            ${{ runner.os }}-yarn-
+          node-version: "16"
+          cache: "yarn"
 
       - name: Yarn install
-        run: yarn install
+        run: yarn install --network-timeout 1000000 --frozen-lockfile
 
       - name: Release updater file
         run: yarn run updater