diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 23b8f10..09c5790 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Build and Release Windows Client (Linux Cross-Compile) +name: Build and Release Windows Client on: push: @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: windows-latest steps: - name: Checkout code @@ -15,20 +15,38 @@ jobs: - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - targets: x86_64-pc-windows-msvc - - name: Install Mingw-w64 for linking - run: sudo apt-get update && sudo apt-get install -y mingw-w64 + - name: Install LLVM + run: choco install llvm --no-progress - - name: Build Client (Cross-Compile) + - name: Build Client working-directory: ./client - run: cargo build --release --target x86_64-pc-windows-msvc + run: cargo build --release + + - name: Prepare Binaries for Installer + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path bin + Copy-Item "client/target/release/meshvpn-client.exe" "bin/client.exe" + # Download Wintun.dll as it is a driver binary not stored in git + Invoke-WebRequest -Uri "https://github.com/WireGuard/wintun/releases/latest/download/wintun.dll" -OutFile "bin/wintun.dll" + + - name: Install WiX Toolset + run: choco install wixtoolset --no-progress + + - name: Build MSI Installer + shell: pwsh + run: | + # candle.exe compiles .wxs to .wixobj + # light.exe links .wixobj to .msi + candle.exe installer/product.wxs -o installer/product.wixobj + light.exe installer/product.wixobj -o meshvpn-client.msi - name: Create Gitea Release uses: softprops/action-gh-release@v1 with: files: | - client/target/x86_64-pc-windows-msvc/release/meshvpn-client.exe + client/target/release/meshvpn-client.exe + meshvpn-client.msi env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}