mirror of
				https://github.com/kunkundi/crossdesk.git
				synced 2025-10-29 12:32:58 +08:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			release
			...
			multi-stre
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 9912a88a13 | ||
|  | 8a8f2cd5d7 | ||
|  | e77e16d9c2 | ||
|  | 1616d0ec33 | ||
|  | 374453775f | ||
|  | 6f8fd6a030 | ||
|  | c7166975b3 | ||
|  | 2ae5e5a969 | ||
|  | 85cdc995c5 | ||
|  | b051c8a059 | ||
|  | 508b7dc7a1 | ||
|  | f203566b81 | ||
|  | 8360c1725f | 
							
								
								
									
										343
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										343
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,343 @@ | ||||
| name: Build and Release CrossDesk | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - "**" | ||||
|     tags: | ||||
|       - "*" | ||||
|   workflow_dispatch: | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|  | ||||
| env: | ||||
|   GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|  | ||||
| jobs: | ||||
|   # Linux x86_64 | ||||
|   build-linux-x86_64: | ||||
|     name: Build on Ubuntu 22.04 x86_64 | ||||
|     runs-on: ubuntu-22.04 | ||||
|     container: | ||||
|       image: crossdesk/ubuntu22.04:latest | ||||
|       options: --user root | ||||
|     steps: | ||||
|       - name: Extract version number | ||||
|         id: version | ||||
|         run: | | ||||
|           VERSION="${GITHUB_REF##*/}" | ||||
|           VERSION_NUM="${VERSION#v}" | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Set legal Debian version | ||||
|         shell: bash | ||||
|         id: set_deb_version | ||||
|         run: | | ||||
|           if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then | ||||
|             LEGAL_VERSION="0.0.0-${VERSION_NUM}" | ||||
|           else | ||||
|             LEGAL_VERSION="${VERSION_NUM}" | ||||
|           fi | ||||
|           echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           submodules: recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         env: | ||||
|           CUDA_PATH: /usr/local/cuda | ||||
|           XMAKE_GLOBALDIR: /data | ||||
|         run: | | ||||
|           ls -la $XMAKE_GLOBALDIR | ||||
|           xmake b -vy --root crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p certs | ||||
|           echo "${{ secrets.CROSSDESK_CERT_BASE64 }}" | base64 --decode > certs/crossdesk.cn_root.crt | ||||
|  | ||||
|       - name: Package | ||||
|         run: | | ||||
|           chmod +x ./scripts/linux/pkg_x86_64.sh | ||||
|           ./scripts/linux/pkg_x86_64.sh ${LEGAL_VERSION} | ||||
|  | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-linux-x86_64-${{ env.LEGAL_VERSION }} | ||||
|           path: ${{ github.workspace }}/crossdesk-linux-x86_64-${{ env.LEGAL_VERSION }}.deb | ||||
|  | ||||
|   # Linux arm64 | ||||
|   build-linux-arm64: | ||||
|     name: Build on Ubuntu 22.04 arm64 | ||||
|     runs-on: ubuntu-22.04-arm | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - arch: arm64 | ||||
|             image: crossdesk/ubuntu20.04-arm64v8:latest | ||||
|             package_script: ./scripts/linux/pkg_arm64.sh | ||||
|     container: | ||||
|       image: ${{ matrix.image }} | ||||
|       options: --user root | ||||
|     steps: | ||||
|       - name: Extract version number | ||||
|         id: version | ||||
|         run: | | ||||
|           VERSION="${GITHUB_REF##*/}" | ||||
|           VERSION_NUM="${VERSION#v}" | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Set legal Debian version | ||||
|         shell: bash | ||||
|         id: set_deb_version | ||||
|         run: | | ||||
|           if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then | ||||
|             LEGAL_VERSION="0.0.0-${VERSION_NUM}" | ||||
|           else | ||||
|             LEGAL_VERSION="${VERSION_NUM}" | ||||
|           fi | ||||
|           echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           submodules: recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         env: | ||||
|           CUDA_PATH: /usr/local/cuda | ||||
|           XMAKE_GLOBALDIR: /data | ||||
|         run: | | ||||
|           xmake b -vy --root crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p certs | ||||
|           echo "${{ secrets.CROSSDESK_CERT_BASE64 }}" | base64 --decode > certs/crossdesk.cn_root.crt | ||||
|  | ||||
|       - name: Package | ||||
|         run: | | ||||
|           chmod +x ${{ matrix.package_script }} | ||||
|           ${{ matrix.package_script }} ${LEGAL_VERSION} | ||||
|  | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-linux-${{ matrix.arch }}-${{ env.LEGAL_VERSION }} | ||||
|           path: ${{ github.workspace }}/crossdesk-linux-${{ matrix.arch }}-${{ env.LEGAL_VERSION }}.deb | ||||
|  | ||||
|   # macOS | ||||
|   build-macos: | ||||
|     name: Build on macOS | ||||
|     runs-on: ${{ matrix.runner }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - arch: x86_64 | ||||
|             runner: macos-13 | ||||
|             cache-key: intel | ||||
|             out-dir: ./build/macosx/x86_64/release/crossdesk | ||||
|             package_script: ./scripts/macosx/pkg_x86_64.sh | ||||
|           - arch: arm64 | ||||
|             runner: macos-14 | ||||
|             cache-key: arm | ||||
|             out-dir: ./build/macosx/arm64/release/crossdesk | ||||
|             package_script: ./scripts/macosx/pkg_arm64.sh | ||||
|  | ||||
|     steps: | ||||
|       - name: Extract version number | ||||
|         id: version | ||||
|         run: | | ||||
|           VERSION="${GITHUB_REF##*/}" | ||||
|           VERSION_NUM="${VERSION#v}" | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" | ||||
|  | ||||
|       - name: Cache xmake dependencies | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: ~/.xmake/packages | ||||
|           key: ${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}-${{ hashFiles('**/xmake.lua') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}- | ||||
|  | ||||
|       - name: Install xmake | ||||
|         run: brew install xmake | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Initialize submodules | ||||
|         run: git submodule update --init --recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         run: xmake b -vy crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p certs | ||||
|           echo "${{ secrets.CROSSDESK_CERT_BASE64 }}" | base64 --decode > certs/crossdesk.cn_root.crt | ||||
|  | ||||
|       - name: Package CrossDesk app | ||||
|         run: | | ||||
|           chmod +x ${{ matrix.package_script }} | ||||
|           ${{ matrix.package_script }} ${VERSION_NUM} | ||||
|  | ||||
|       - name: Upload build artifacts | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }} | ||||
|           path: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg | ||||
|  | ||||
|       - name: Move files to release dir | ||||
|         run: | | ||||
|           mkdir -p release | ||||
|           cp crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg release/ | ||||
|  | ||||
|   # Windows | ||||
|   build-windows: | ||||
|     name: Build on Windows | ||||
|     runs-on: windows-2022 | ||||
|     env: | ||||
|       XMAKE_GLOBALDIR: D:\xmake_global | ||||
|     steps: | ||||
|       - name: Extract version number | ||||
|         shell: pwsh | ||||
|         run: | | ||||
|           $ref = $env:GITHUB_REF | ||||
|           $version = $ref -replace '^refs/(tags|heads)/', '' | ||||
|           $version = $version -replace '^v', '' | ||||
|           $version = $version -replace '/', '-' | ||||
|           echo "VERSION_NUM=$version" >> $env:GITHUB_ENV | ||||
|  | ||||
|       - name: Cache xmake dependencies | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: D:\xmake_global\.xmake\packages | ||||
|           key: ${{ runner.os }}-xmake-deps-intel-${{ hashFiles('**/xmake.lua') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-xmake-deps-intel- | ||||
|  | ||||
|       - name: Install xmake | ||||
|         run: | | ||||
|           Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1' -UseBasicParsing).Content | ||||
|           echo "C:\Users\runneradmin\xmake" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||
|           xmake create cuda | ||||
|           Set-Location cuda | ||||
|           xmake g --theme=plain | ||||
|           $cudaPath = "" | ||||
|           $packagesPath = "D:\xmake_global\.xmake\packages" | ||||
|  | ||||
|           if (Test-Path $packagesPath) { | ||||
|               Write-Host "Packages directory exists: $packagesPath" | ||||
|               try { | ||||
|                   $info = xmake require --info "cuda 12.6.3" 2>$null | ||||
|                   if ($null -ne $info -and $info -ne "") { | ||||
|                       $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | ||||
|                   } | ||||
|               } catch {} | ||||
|           } else { | ||||
|               Write-Host "Packages directory not found: $packagesPath" | ||||
|               Write-Host "Installing CUDA package..." | ||||
|               xmake require -vy "cuda 12.6.3" | ||||
|               $info = xmake require --info "cuda 12.6.3" | ||||
|               $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | ||||
|           } | ||||
|  | ||||
|           echo "CUDA_PATH=$cudaPath" >> $env:GITHUB_ENV | ||||
|           Write-Host "Resolved CUDA_PATH = $cudaPath" | ||||
|           Pop-Location | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Initialize submodules | ||||
|         run: git submodule update --init --recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         run: xmake b -vy crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: powershell | ||||
|         run: | | ||||
|           New-Item -ItemType Directory -Force -Path certs | ||||
|           [System.IO.File]::WriteAllBytes('certs\crossdesk.cn_root.crt', [Convert]::FromBase64String('${{ secrets.CROSSDESK_CERT_BASE64 }}')) | ||||
|  | ||||
|       - name: Package | ||||
|         shell: pwsh | ||||
|         run: | | ||||
|           cd "${{ github.workspace }}\scripts\windows" | ||||
|           makensis /DVERSION=$env:VERSION_NUM nsis_script.nsi | ||||
|  | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-win-x86_64-${{ env.VERSION_NUM }} | ||||
|           path: ${{ github.workspace }}/scripts/windows/crossdesk-win-x86_64-${{ env.VERSION_NUM }}.exe | ||||
|  | ||||
|   release: | ||||
|     name: Publish Release | ||||
|     if: startsWith(github.ref, 'refs/tags/v') | ||||
|     needs: [build-linux-x86_64, build-linux-arm64, build-macos, build-windows] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Download all artifacts | ||||
|         uses: actions/download-artifact@v4 | ||||
|         with: | ||||
|           path: artifacts | ||||
|  | ||||
|       - name: Extract version number | ||||
|         id: version | ||||
|         run: | | ||||
|           VERSION="${GITHUB_REF##*/}" | ||||
|           VERSION_NUM="${VERSION#v}" | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: Rename artifacts | ||||
|         run: | | ||||
|           mkdir -p release | ||||
|           cp artifacts/crossdesk-macos-x86_64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-macos-x86_64-${{ steps.version.outputs.VERSION_NUM }}.pkg | ||||
|           cp artifacts/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg | ||||
|           cp artifacts/crossdesk-linux-x86_64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-linux-x86_64-${{ steps.version.outputs.VERSION_NUM }}.deb | ||||
|           cp artifacts/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb | ||||
|           cp artifacts/crossdesk-win-x86_64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-win-x86_64-${{ steps.version.outputs.VERSION_NUM }}.exe | ||||
|  | ||||
|       - name: Upload to Versioned GitHub Release | ||||
|         uses: softprops/action-gh-release@v2 | ||||
|         with: | ||||
|           tag_name: v${{ steps.version.outputs.VERSION_NUM }} | ||||
|           name: Release v${{ steps.version.outputs.VERSION_NUM }} | ||||
|           draft: false | ||||
|           prerelease: false | ||||
|           files: release/* | ||||
|           generate_release_notes: false | ||||
|           body: | | ||||
|             Binary release only. Source code is not included. | ||||
|  | ||||
|       - name: Create or update 'latest' tag | ||||
|         run: | | ||||
|           git config user.name "github-actions[bot]" | ||||
|           git config user.email "github-actions[bot]@users.noreply.github.com" | ||||
|           git tag -f latest | ||||
|           git push origin latest --force | ||||
|  | ||||
|       - name: Upload to GitHub Release (latest) | ||||
|         uses: softprops/action-gh-release@v2 | ||||
|         with: | ||||
|           tag_name: latest | ||||
|           name: Latest Release | ||||
|           draft: false | ||||
|           prerelease: false | ||||
|           files: release/* | ||||
|           generate_release_notes: false | ||||
							
								
								
									
										186
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										186
									
								
								.github/workflows/release.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,186 +0,0 @@ | ||||
| name: Build and Release CrossDesk | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: [release] | ||||
|     tags: | ||||
|       - "v*" | ||||
|   workflow_dispatch: | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|  | ||||
| env: | ||||
|   GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|  | ||||
| jobs: | ||||
|   # Linux | ||||
|   build-linux: | ||||
|     name: Build on Ubuntu | ||||
|     runs-on: ubuntu-22.04 | ||||
|     container: | ||||
|       image: crossdesk/ubuntu22.04:latest | ||||
|       options: --user root | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           submodules: recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         env: | ||||
|           CUDA_PATH: /usr/local/cuda | ||||
|           XMAKE_GLOBALDIR: /data | ||||
|         run: | | ||||
|           ls -la $XMAKE_GLOBALDIR | ||||
|           xmake b -vy --root crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p certs | ||||
|           echo "${{ secrets.CROSSDESK_CERT_BASE64 }}" | base64 --decode > certs/crossdesk.cn_root.crt | ||||
|  | ||||
|       - name: Package | ||||
|         run: | | ||||
|           chmod +x ./scripts/linux/pkg_x86_64.sh | ||||
|           ./scripts/linux/pkg_x86_64.sh | ||||
|  | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-linux-x86_64 | ||||
|           path: ${{ github.workspace }}/CrossDesk-0.0.1.deb | ||||
|  | ||||
|   # macOS | ||||
|   build-macos: | ||||
|     name: Build on macOS | ||||
|     runs-on: ${{ matrix.runner }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         include: | ||||
|           - arch: x86_64 | ||||
|             runner: macos-13 | ||||
|             cache-key: intel | ||||
|             out-dir: ./build/macosx/x86_64/release/crossdesk | ||||
|             artifact-name: crossdesk-macos-x86_64 | ||||
|             package_script: ./scripts/macosx/pkg_x86_64.sh | ||||
|           - arch: arm64 | ||||
|             runner: macos-14 | ||||
|             cache-key: arm | ||||
|             out-dir: ./build/macosx/arm64/release/crossdesk | ||||
|             artifact-name: crossdesk-macos-arm64 | ||||
|             package_script: ./scripts/macosx/pkg_arm64.sh | ||||
|     steps: | ||||
|       - name: Cache xmake dependencies | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: ~/.xmake/packages | ||||
|           key: ${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}-${{ hashFiles('**/xmake.lua') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}- | ||||
|  | ||||
|       - name: Install xmake | ||||
|         run: brew install xmake | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Initialize submodules | ||||
|         run: git submodule update --init --recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         run: xmake b -vy crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p certs | ||||
|           echo "${{ secrets.CROSSDESK_CERT_BASE64 }}" | base64 --decode > certs/crossdesk.cn_root.crt | ||||
|  | ||||
|       - name: Package CrossDesk app | ||||
|         run: | | ||||
|           chmod +x ${{ matrix.package_script }} | ||||
|           ${{ matrix.package_script }} | ||||
|  | ||||
|       - name: Upload build artifacts | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: ${{ matrix.artifact-name }} | ||||
|           path: crossdesk-macos-${{ matrix.arch }}-v0.0.1.pkg | ||||
|  | ||||
|       - name: Move files to release dir | ||||
|         run: | | ||||
|           mkdir -p release | ||||
|           cp crossdesk-macos-${{ matrix.arch }}-v0.0.1.pkg release/ | ||||
|  | ||||
|   # Windows | ||||
|   build-windows: | ||||
|     name: Build on Windows | ||||
|     runs-on: windows-2022 | ||||
|     env: | ||||
|       XMAKE_GLOBALDIR: D:\xmake_global | ||||
|     steps: | ||||
|       - name: Cache xmake dependencies | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: D:\xmake_global\.xmake\packages | ||||
|           key: ${{ runner.os }}-xmake-deps-intel-${{ hashFiles('**/xmake.lua') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-xmake-deps-intel- | ||||
|  | ||||
|       - name: Install xmake | ||||
|         run: | | ||||
|           Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1' -UseBasicParsing).Content | ||||
|           echo "C:\Users\runneradmin\xmake" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | ||||
|           xmake create cuda | ||||
|           Set-Location cuda | ||||
|           xmake g --theme=plain | ||||
|           $cudaPath = "" | ||||
|           $packagesPath = "D:\xmake_global\.xmake\packages" | ||||
|  | ||||
|           if (Test-Path $packagesPath) { | ||||
|               Write-Host "Packages directory exists: $packagesPath" | ||||
|               try { | ||||
|                   $info = xmake require --info "cuda 12.6.3" 2>$null | ||||
|                   if ($null -ne $info -and $info -ne "") { | ||||
|                       $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | ||||
|                   } | ||||
|               } catch {} | ||||
|           } else { | ||||
|               Write-Host "Packages directory not found: $packagesPath" | ||||
|               Write-Host "Installing CUDA package..." | ||||
|               xmake require -vy "cuda 12.6.3" | ||||
|               $info = xmake require --info "cuda 12.6.3" | ||||
|               $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | ||||
|           } | ||||
|  | ||||
|           echo "CUDA_PATH=$cudaPath" >> $env:GITHUB_ENV | ||||
|           Write-Host "Resolved CUDA_PATH = $cudaPath" | ||||
|           Pop-Location | ||||
|  | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Initialize submodules | ||||
|         run: git submodule update --init --recursive | ||||
|  | ||||
|       - name: Build CrossDesk | ||||
|         run: xmake b -vy crossdesk | ||||
|  | ||||
|       - name: Decode and save certificate | ||||
|         shell: powershell | ||||
|         run: | | ||||
|           New-Item -ItemType Directory -Force -Path certs | ||||
|           [System.IO.File]::WriteAllBytes('certs\crossdesk.cn_root.crt', [Convert]::FromBase64String('${{ secrets.CROSSDESK_CERT_BASE64 }}')) | ||||
|  | ||||
|       - name: Package | ||||
|         run: | | ||||
|           cd ./scripts/windows | ||||
|           makensis nsis_script.nsi | ||||
|  | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-artifact@v4 | ||||
|         with: | ||||
|           name: crossdesk-win-x86_64 | ||||
|           path: ${{ github.workspace }}/scripts/windows/CrossDesk-0.0.1.exe | ||||
							
								
								
									
										48
									
								
								.github/workflows/update-pages.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								.github/workflows/update-pages.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| name: Update GitHub Pages Downloads | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - "v*" | ||||
|  | ||||
| jobs: | ||||
|   update-pages: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout CrossDesk repo | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Set version number | ||||
|         id: version | ||||
|         run: | | ||||
|           VERSION_NUM="${GITHUB_REF##*/}" | ||||
|           VERSION_NUM="${VERSION_NUM#v}" | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV | ||||
|           echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT | ||||
|  | ||||
|       - name: Checkout Pages repo | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           repository: kunkundi/kunkundi.github.io | ||||
|           token: ${{ secrets.GH_PAGES_PAT }} | ||||
|           path: pages | ||||
|  | ||||
|       - name: Update download links | ||||
|         run: | | ||||
|           cd pages | ||||
|           sed -E -i "s/crossdesk-win-x86_64-[0-9]+\.[0-9]+\.[0-9]+\.exe/crossdesk-win-x86_64-${VERSION_NUM}.exe/g" index.html | ||||
|           sed -E -i "s/crossdesk-macos-x86_64-[0-9]+\.[0-9]+\.[0-9]+\.pkg/crossdesk-macos-x86_64-${VERSION_NUM}.pkg/g" index.html | ||||
|           sed -E -i "s/crossdesk-macos-arm64-[0-9]+\.[0-9]+\.[0-9]+\.pkg/crossdesk-macos-arm64-${VERSION_NUM}.pkg/g" index.html | ||||
|           sed -E -i "s/crossdesk-linux-x86_64-[0-9]+\.[0-9]+\.[0-9]+\.deb/crossdesk-linux-x86_64-${VERSION_NUM}.deb/g" index.html | ||||
|           sed -E -i "s/crossdesk-linux-arm64-[0-9]+\.[0-9]+\.[0-9]+\.deb/crossdesk-linux-arm64-${VERSION_NUM}.deb/g" index.html | ||||
|  | ||||
|       - name: Commit & Push changes | ||||
|         run: | | ||||
|           cd pages | ||||
|           git config user.name "github-actions[bot]" | ||||
|           git config user.email "github-actions[bot]@users.noreply.github.com" | ||||
|           git add index.html | ||||
|           git commit -m "Update download links to v${VERSION_NUM}" || echo "No changes to commit" | ||||
|           git push origin main | ||||
|         env: | ||||
|           VERSION_NUM: ${{ env.VERSION_NUM }} | ||||
							
								
								
									
										39
									
								
								Info.plist
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								Info.plist
									
									
									
									
									
								
							| @@ -1,39 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
|     <!-- 应用的Bundle identifier,通常使用反向域名标记 --> | ||||
|     <key>CFBundleIdentifier</key> | ||||
|     <string>com.yourcompany.yourappname</string> | ||||
|  | ||||
|     <!-- 应用的显示名称 --> | ||||
|     <key>CFBundleName</key> | ||||
|     <string>Your App Name</string> | ||||
|  | ||||
|     <!-- 应用的版本号 --> | ||||
|     <key>CFBundleShortVersionString</key> | ||||
|     <string>1.0.0</string> | ||||
|  | ||||
|     <!-- 应用的构建版本号 --> | ||||
|     <key>CFBundleVersion</key> | ||||
|     <string>1</string> | ||||
|  | ||||
|     <!-- 请求麦克风访问权限 --> | ||||
|     <key>NSMicrophoneUsageDescription</key> | ||||
|     <string>App requires access to the microphone for audio recording.</string> | ||||
|  | ||||
|     <!-- 请求相机访问权限 --> | ||||
|     <key>NSCameraUsageDescription</key> | ||||
|     <string>App requires access to the camera for video recording.</string> | ||||
|  | ||||
|     <!-- 请求使用连续相机设备 --> | ||||
|     <key>NSCameraUseContinuityCameraDeviceType</key> | ||||
|     <string>Your usage description here</string> | ||||
|  | ||||
|     <!-- High DPI -->> | ||||
|     <key>NSHighResolutionCapable</key> | ||||
|     <true/> | ||||
|  | ||||
|     <!-- 其他权限和配置可以在这里添加 --> | ||||
| </dict> | ||||
| </plist> | ||||
							
								
								
									
										111
									
								
								scripts/linux/pkg_arm64.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								scripts/linux/pkg_arm64.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| APP_NAME="CrossDesk" | ||||
| APP_VERSION="$1" | ||||
| ARCHITECTURE="arm64"  # 改为 arm64 | ||||
| MAINTAINER="Junkun Di <junkun.di@hotmail.com>" | ||||
| DESCRIPTION="A simple cross-platform remote desktop client." | ||||
|  | ||||
| DEB_DIR="$APP_NAME-$APP_VERSION" | ||||
| DEBIAN_DIR="$DEB_DIR/DEBIAN" | ||||
| BIN_DIR="$DEB_DIR/usr/local/bin" | ||||
| CERT_SRC_DIR="$DEB_DIR/opt/$APP_NAME/certs" | ||||
| ICON_DIR="$DEB_DIR/usr/share/icons/hicolor/256x256/apps" | ||||
| DESKTOP_DIR="$DEB_DIR/usr/share/applications" | ||||
|  | ||||
| rm -rf "$DEB_DIR" | ||||
|  | ||||
| mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$ICON_DIR" "$DESKTOP_DIR" | ||||
|  | ||||
| cp build/linux/arm64/release/crossdesk "$BIN_DIR" | ||||
| cp certs/crossdesk.cn_root.crt "$CERT_SRC_DIR/crossdesk.cn_root.crt" | ||||
| cp icons/crossdesk.png "$ICON_DIR/crossdesk.png" | ||||
|  | ||||
| chmod +x "$BIN_DIR/crossdesk" | ||||
|  | ||||
| cat > "$DEBIAN_DIR/control" << EOF | ||||
| Package: $APP_NAME | ||||
| Version: $APP_VERSION | ||||
| Architecture: $ARCHITECTURE | ||||
| Maintainer: $MAINTAINER | ||||
| Description: $DESCRIPTION | ||||
| Depends: libc6 (>= 2.29), libstdc++6 (>= 9), libx11-6, libxcb1, | ||||
|  libxcb-randr0, libxcb-xtest0, libxcb-xinerama0, libxcb-shape0, | ||||
|  libxcb-xkb1, libxcb-xfixes0, libxv1, libxtst6, libasound2, | ||||
|  libsndio7.0, libxcb-shm0, libpulse0 | ||||
| Priority: optional | ||||
| Section: utils | ||||
| EOF | ||||
|  | ||||
| cat > "$DESKTOP_DIR/$APP_NAME.desktop" << EOF | ||||
| [Desktop Entry] | ||||
| Version=$APP_VERSION | ||||
| Name=$APP_NAME | ||||
| Comment=$DESCRIPTION | ||||
| Exec=/usr/local/bin/crossdesk | ||||
| Icon=crossdesk | ||||
| Terminal=false | ||||
| Type=Application | ||||
| Categories=Utility; | ||||
| EOF | ||||
|  | ||||
| cat > "$DEBIAN_DIR/postrm" << EOF | ||||
| #!/bin/bash | ||||
| # post-removal script for $APP_NAME | ||||
|  | ||||
| set -e | ||||
|  | ||||
| if [ "\$1" = "remove" ] || [ "\$1" = "purge" ]; then | ||||
|     rm -f /usr/local/bin/crossdesk | ||||
|     rm -f /usr/share/icons/hicolor/256x256/apps/crossdesk.png | ||||
|     rm -f /usr/share/applications/$APP_NAME.desktop | ||||
|     rm -rf /opt/$APP_NAME | ||||
| fi | ||||
|  | ||||
| exit 0 | ||||
| EOF | ||||
|  | ||||
| chmod +x "$DEBIAN_DIR/postrm" | ||||
|  | ||||
| cat > "$DEBIAN_DIR/postinst" << 'EOF' | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| CERT_SRC="/opt/CrossDesk/certs" | ||||
| CERT_FILE="crossdesk.cn_root.crt" | ||||
|  | ||||
| for user_home in /home/*; do | ||||
|     [ -d "$user_home" ] || continue | ||||
|     username=$(basename "$user_home") | ||||
|     config_dir="$user_home/.config/CrossDesk/certs" | ||||
|     target="$config_dir/$CERT_FILE" | ||||
|  | ||||
|     if [ ! -f "$target" ]; then | ||||
|         mkdir -p "$config_dir" | ||||
|         cp "$CERT_SRC/$CERT_FILE" "$target" | ||||
|         chown -R "$username:$username" "$user_home/.config/CrossDesk" | ||||
|         echo "✔ Installed cert for $username at $target" | ||||
|     fi | ||||
| done | ||||
|  | ||||
| if [ -d "/root" ]; then | ||||
|     config_dir="/root/.config/CrossDesk/certs" | ||||
|     mkdir -p "$config_dir" | ||||
|     cp "$CERT_SRC/$CERT_FILE" "$config_dir/$CERT_FILE" | ||||
|     chown -R root:root /root/.config/CrossDesk | ||||
| fi | ||||
|  | ||||
| exit 0 | ||||
| EOF | ||||
|  | ||||
| chmod +x "$DEBIAN_DIR/postinst" | ||||
|  | ||||
| dpkg-deb --build "$DEB_DIR" | ||||
|  | ||||
| OUTPUT_FILE="crossdesk-linux-arm64-$APP_VERSION.deb" | ||||
| mv "$DEB_DIR.deb" "$OUTPUT_FILE" | ||||
|  | ||||
| rm -rf "$DEB_DIR" | ||||
|  | ||||
| echo "✅ Deb package for $APP_NAME (ARM64) created successfully." | ||||
| @@ -1,14 +1,12 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| # 配置变量 | ||||
| APP_NAME="CrossDesk" | ||||
| APP_VERSION="0.0.1" | ||||
| APP_VERSION="$1" | ||||
| ARCHITECTURE="amd64" | ||||
| MAINTAINER="Junkun Di <junkun.di@hotmail.com>" | ||||
| DESCRIPTION="A simple cross-platform remote desktop client." | ||||
|  | ||||
| # 目录结构 | ||||
| DEB_DIR="$APP_NAME-$APP_VERSION" | ||||
| DEBIAN_DIR="$DEB_DIR/DEBIAN" | ||||
| BIN_DIR="$DEB_DIR/usr/local/bin" | ||||
| @@ -16,25 +14,16 @@ CERT_SRC_DIR="$DEB_DIR/opt/$APP_NAME/certs"  # 用于中转安装时分发 | ||||
| ICON_DIR="$DEB_DIR/usr/share/icons/hicolor/256x256/apps" | ||||
| DESKTOP_DIR="$DEB_DIR/usr/share/applications" | ||||
|  | ||||
| # 清理已有的打包文件夹 | ||||
| rm -rf "$DEB_DIR" | ||||
|  | ||||
| # 创建目录结构 | ||||
| mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$ICON_DIR" "$DESKTOP_DIR" | ||||
|  | ||||
| # 复制二进制文件 | ||||
| cp build/linux/x86_64/release/crossdesk "$BIN_DIR" | ||||
|  | ||||
| # 复制证书文件(将来通过 postinst 拷贝到每个用户 XDG_CONFIG_HOME) | ||||
| cp certs/crossdesk.cn_root.crt "$CERT_SRC_DIR/crossdesk.cn_root.crt" | ||||
|  | ||||
| # 复制图标文件 | ||||
| cp icons/crossdesk.png "$ICON_DIR/crossdesk.png" | ||||
|  | ||||
| # 设置可执行权限 | ||||
| chmod +x "$BIN_DIR/crossdesk" | ||||
|  | ||||
| # 创建 control 文件 | ||||
| cat > "$DEBIAN_DIR/control" << EOF | ||||
| Package: $APP_NAME | ||||
| Version: $APP_VERSION | ||||
| @@ -49,7 +38,6 @@ Priority: optional | ||||
| Section: utils | ||||
| EOF | ||||
|  | ||||
| # 创建 desktop 文件 | ||||
| cat > "$DESKTOP_DIR/$APP_NAME.desktop" << EOF | ||||
| [Desktop Entry] | ||||
| Version=$APP_VERSION | ||||
| @@ -62,7 +50,6 @@ Type=Application | ||||
| Categories=Utility; | ||||
| EOF | ||||
|  | ||||
| # 创建卸载脚本 postrm | ||||
| cat > "$DEBIAN_DIR/postrm" << EOF | ||||
| #!/bin/bash | ||||
| # post-removal script for $APP_NAME | ||||
| @@ -81,7 +68,6 @@ EOF | ||||
|  | ||||
| chmod +x "$DEBIAN_DIR/postrm" | ||||
|  | ||||
| # 创建安装后脚本 postinst(拷贝证书到每个用户 XDG_CONFIG_HOME) | ||||
| cat > "$DEBIAN_DIR/postinst" << 'EOF' | ||||
| #!/bin/bash | ||||
| set -e | ||||
| @@ -89,7 +75,6 @@ set -e | ||||
| CERT_SRC="/opt/CrossDesk/certs" | ||||
| CERT_FILE="crossdesk.cn_root.crt" | ||||
|  | ||||
| # 处理每个普通用户的配置目录 | ||||
| for user_home in /home/*; do | ||||
|     [ -d "$user_home" ] || continue | ||||
|     username=$(basename "$user_home") | ||||
| @@ -104,7 +89,6 @@ for user_home in /home/*; do | ||||
|     fi | ||||
| done | ||||
|  | ||||
| # 处理 root 用户(可选) | ||||
| if [ -d "/root" ]; then | ||||
|     config_dir="/root/.config/CrossDesk/certs" | ||||
|     mkdir -p "$config_dir" | ||||
| @@ -117,10 +101,11 @@ EOF | ||||
|  | ||||
| chmod +x "$DEBIAN_DIR/postinst" | ||||
|  | ||||
| # 构建 .deb 包 | ||||
| dpkg-deb --build "$DEB_DIR" | ||||
|  | ||||
| # 清理构建目录 | ||||
| OUTPUT_FILE="crossdesk-linux-x86_64-$APP_VERSION.deb" | ||||
| mv "$DEB_DIR.deb" "$OUTPUT_FILE" | ||||
|  | ||||
| rm -rf "$DEB_DIR" | ||||
|  | ||||
| echo "✅ Deb package for $APP_NAME created successfully." | ||||
| @@ -5,7 +5,7 @@ set -e  # 遇错退出 | ||||
| APP_NAME="crossdesk" | ||||
| APP_NAME_UPPER="CrossDesk"  # 这个变量用来指定大写的应用名 | ||||
| EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk"             # 可执行文件路径 | ||||
| APP_VERSION="0.0.1" | ||||
| APP_VERSION="$1" | ||||
| PLATFORM="macos" | ||||
| ARCH="arm64" | ||||
| IDENTIFIER="cn.crossdesk.app" | ||||
| @@ -20,8 +20,8 @@ CONTENTS_DIR="${APP_BUNDLE}/Contents" | ||||
| MACOS_DIR="${CONTENTS_DIR}/MacOS" | ||||
| RESOURCES_DIR="${CONTENTS_DIR}/Resources" | ||||
|  | ||||
| PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.pkg"  # 保持安装包名称小写 | ||||
| DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.dmg" | ||||
| PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg"  # 保持安装包名称小写 | ||||
| DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg" | ||||
| VOL_NAME="Install ${APP_NAME_UPPER}" | ||||
|  | ||||
| # === 清理旧文件 === | ||||
| @@ -135,18 +135,18 @@ productbuild \ | ||||
| echo "✅ 生成安装包完成:${PKG_NAME}" | ||||
|  | ||||
| # === 可选:打包成 DMG === | ||||
| echo "📦 可选打包成 DMG..." | ||||
| mkdir -p CrossDesk_dmg_temp | ||||
| cp "${PKG_NAME}" CrossDesk_dmg_temp/ | ||||
| ln -s /Applications CrossDesk_dmg_temp/Applications | ||||
| # echo "📦 可选打包成 DMG..." | ||||
| # mkdir -p CrossDesk_dmg_temp | ||||
| # cp "${PKG_NAME}" CrossDesk_dmg_temp/ | ||||
| # ln -s /Applications CrossDesk_dmg_temp/Applications | ||||
|  | ||||
| hdiutil create -volname "${VOL_NAME}" \ | ||||
|   -srcfolder CrossDesk_dmg_temp \ | ||||
|   -ov -format UDZO "${DMG_NAME}" | ||||
| # hdiutil create -volname "${VOL_NAME}" \ | ||||
| #   -srcfolder CrossDesk_dmg_temp \ | ||||
| #   -ov -format UDZO "${DMG_NAME}" | ||||
|  | ||||
| rm -rf CrossDesk_dmg_temp build_pkg_temp scripts ${APP_BUNDLE} ${DMG_NAME} | ||||
| rm -rf build_pkg_temp scripts ${APP_BUNDLE} | ||||
|  | ||||
| echo "🎉 所有打包完成:" | ||||
| echo "   ✔️ 应用:${APP_BUNDLE}" | ||||
| echo "   ✔️ 安装包:${PKG_NAME}" | ||||
| echo "   ✔️ 镜像包(可选):${DMG_NAME}" | ||||
| # echo "   ✔️ 镜像包(可选):${DMG_NAME}" | ||||
| @@ -5,7 +5,7 @@ set -e  # 遇错退出 | ||||
| APP_NAME="crossdesk" | ||||
| APP_NAME_UPPER="CrossDesk"  # 这个变量用来指定大写的应用名 | ||||
| EXECUTABLE_PATH="build/macosx/x86_64/release/crossdesk"             # 可执行文件路径 | ||||
| APP_VERSION="0.0.1" | ||||
| APP_VERSION="$1" | ||||
| PLATFORM="macos" | ||||
| ARCH="x86_64" | ||||
| IDENTIFIER="cn.crossdesk.app" | ||||
| @@ -20,8 +20,8 @@ CONTENTS_DIR="${APP_BUNDLE}/Contents" | ||||
| MACOS_DIR="${CONTENTS_DIR}/MacOS" | ||||
| RESOURCES_DIR="${CONTENTS_DIR}/Resources" | ||||
|  | ||||
| PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.pkg"  # 保持安装包名称小写 | ||||
| DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.dmg" | ||||
| PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg"  # 保持安装包名称小写 | ||||
| DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg" | ||||
| VOL_NAME="Install ${APP_NAME_UPPER}" | ||||
|  | ||||
| # === 清理旧文件 === | ||||
| @@ -135,18 +135,18 @@ productbuild \ | ||||
| echo "✅ 生成安装包完成:${PKG_NAME}" | ||||
|  | ||||
| # === 可选:打包成 DMG === | ||||
| echo "📦 可选打包成 DMG..." | ||||
| mkdir -p CrossDesk_dmg_temp | ||||
| cp "${PKG_NAME}" CrossDesk_dmg_temp/ | ||||
| ln -s /Applications CrossDesk_dmg_temp/Applications | ||||
| # echo "📦 可选打包成 DMG..." | ||||
| # mkdir -p CrossDesk_dmg_temp | ||||
| # cp "${PKG_NAME}" CrossDesk_dmg_temp/ | ||||
| # ln -s /Applications CrossDesk_dmg_temp/Applications | ||||
|  | ||||
| hdiutil create -volname "${VOL_NAME}" \ | ||||
|   -srcfolder CrossDesk_dmg_temp \ | ||||
|   -ov -format UDZO "${DMG_NAME}" | ||||
| # hdiutil create -volname "${VOL_NAME}" \ | ||||
| #   -srcfolder CrossDesk_dmg_temp \ | ||||
| #   -ov -format UDZO "${DMG_NAME}" | ||||
|  | ||||
| rm -rf CrossDesk_dmg_temp build_pkg_temp scripts ${APP_BUNDLE} ${DMG_NAME} | ||||
| rm -rf build_pkg_temp scripts ${APP_BUNDLE} | ||||
|  | ||||
| echo "🎉 所有打包完成:" | ||||
| echo "   ✔️ 应用:${APP_BUNDLE}" | ||||
| echo "   ✔️ 安装包:${PKG_NAME}" | ||||
| echo "   ✔️ 镜像包(可选):${DMG_NAME}" | ||||
| # echo "   ✔️ 镜像包(可选):${DMG_NAME}" | ||||
| @@ -3,7 +3,7 @@ | ||||
|  | ||||
| ; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>峣<EFBFBD><E5B3A3> | ||||
| !define PRODUCT_NAME "CrossDesk" | ||||
| !define PRODUCT_VERSION "0.0.1" | ||||
| !define PRODUCT_VERSION "${VERSION}" | ||||
| !define PRODUCT_PUBLISHER "CrossDesk" | ||||
| !define PRODUCT_WEB_SITE "https://www.crossdesk.cn/" | ||||
| !define APP_NAME "CrossDesk" | ||||
| @@ -33,7 +33,7 @@ RequestExecutionLevel admin | ||||
| ; ------ MUI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------ | ||||
|  | ||||
| Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" | ||||
| OutFile "CrossDesk-${PRODUCT_VERSION}.exe" | ||||
| OutFile "crossdesk-win-x86_64-${PRODUCT_VERSION}.exe" | ||||
| InstallDir "$PROGRAMFILES\CrossDesk" | ||||
| ShowInstDetails show | ||||
|  | ||||
|   | ||||
| @@ -3,11 +3,10 @@ | ||||
| #include "rd_log.h" | ||||
| #include "render.h" | ||||
|  | ||||
| int Render::ConnectionStatusWindow( | ||||
| bool Render::ConnectionStatusWindow( | ||||
|     std::shared_ptr<SubStreamWindowProperties> &props) { | ||||
|   if (show_connection_status_window_) { | ||||
|   const ImGuiViewport *viewport = ImGui::GetMainViewport(); | ||||
|  | ||||
|   bool ret_flag = false; | ||||
|   ImGui::SetNextWindowPos(ImVec2((viewport->WorkSize.x - viewport->WorkPos.x - | ||||
|                                   connection_status_window_width_) / | ||||
|                                      2, | ||||
| @@ -43,8 +42,7 @@ int Render::ConnectionStatusWindow( | ||||
|     ImGui::SetCursorPosX(connection_status_window_width_ * 3 / 7); | ||||
|     ImGui::SetCursorPosY(connection_status_window_height_ * 2 / 3); | ||||
|     // ok | ||||
|       if (ImGui::Button( | ||||
|               localization::ok[localization_language_index_].c_str()) || | ||||
|     if (ImGui::Button(localization::ok[localization_language_index_].c_str()) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Enter) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Escape)) { | ||||
|       show_connection_status_window_ = false; | ||||
| @@ -54,8 +52,7 @@ int Render::ConnectionStatusWindow( | ||||
|     ImGui::SetCursorPosX(connection_status_window_width_ * 3 / 7); | ||||
|     ImGui::SetCursorPosY(connection_status_window_height_ * 2 / 3); | ||||
|     // ok | ||||
|       if (ImGui::Button( | ||||
|               localization::ok[localization_language_index_].c_str()) || | ||||
|     if (ImGui::Button(localization::ok[localization_language_index_].c_str()) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Enter) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Escape)) { | ||||
|       show_connection_status_window_ = false; | ||||
| @@ -65,8 +62,7 @@ int Render::ConnectionStatusWindow( | ||||
|     ImGui::SetCursorPosX(connection_status_window_width_ * 3 / 7); | ||||
|     ImGui::SetCursorPosY(connection_status_window_height_ * 2 / 3); | ||||
|     // ok | ||||
|       if (ImGui::Button( | ||||
|               localization::ok[localization_language_index_].c_str()) || | ||||
|     if (ImGui::Button(localization::ok[localization_language_index_].c_str()) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Enter) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Escape)) { | ||||
|       show_connection_status_window_ = false; | ||||
| @@ -76,14 +72,12 @@ int Render::ConnectionStatusWindow( | ||||
|     ImGui::SetCursorPosX(connection_status_window_width_ * 3 / 7); | ||||
|     ImGui::SetCursorPosY(connection_status_window_height_ * 2 / 3); | ||||
|     // ok | ||||
|       if (ImGui::Button( | ||||
|               localization::ok[localization_language_index_].c_str()) || | ||||
|     if (ImGui::Button(localization::ok[localization_language_index_].c_str()) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Enter) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Escape)) { | ||||
|       show_connection_status_window_ = false; | ||||
|     } | ||||
|     } else if (ConnectionStatus::IncorrectPassword == | ||||
|                props->connection_status_) { | ||||
|   } else if (ConnectionStatus::IncorrectPassword == props->connection_status_) { | ||||
|     if (!password_validating_) { | ||||
|       if (password_validating_time_ == 1) { | ||||
|         text = localization::input_password[localization_language_index_]; | ||||
| @@ -115,8 +109,7 @@ int Render::ConnectionStatusWindow( | ||||
|               .c_str()); | ||||
|       ImGui::SetCursorPosX((window_width - text_size.x) * 0.5f - 13.0f); | ||||
|       ImGui::Checkbox( | ||||
|             localization::remember_password[localization_language_index_] | ||||
|                 .c_str(), | ||||
|           localization::remember_password[localization_language_index_].c_str(), | ||||
|           &(props->remember_password_)); | ||||
|       ImGui::SetWindowFontScale(0.5f); | ||||
|       ImGui::PopStyleVar(); | ||||
| @@ -154,13 +147,12 @@ int Render::ConnectionStatusWindow( | ||||
|     ImGui::SetCursorPosX(connection_status_window_width_ * 3 / 7); | ||||
|     ImGui::SetCursorPosY(connection_status_window_height_ * 2 / 3); | ||||
|     // ok | ||||
|       if (ImGui::Button( | ||||
|               localization::ok[localization_language_index_].c_str()) || | ||||
|     if (ImGui::Button(localization::ok[localization_language_index_].c_str()) || | ||||
|         ImGui::IsKeyPressed(ImGuiKey_Enter)) { | ||||
|       show_connection_status_window_ = false; | ||||
|       re_enter_remote_id_ = true; | ||||
|       DestroyPeer(&props->peer_); | ||||
|         client_properties_.erase(props->remote_id_); | ||||
|       ret_flag = true; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @@ -174,6 +166,6 @@ int Render::ConnectionStatusWindow( | ||||
|  | ||||
|   ImGui::End(); | ||||
|   ImGui::PopStyleVar(); | ||||
|   } | ||||
|   return 0; | ||||
|  | ||||
|   return ret_flag; | ||||
| } | ||||
| @@ -29,8 +29,20 @@ int Render::MainWindow() { | ||||
|   RecentConnectionsWindow(); | ||||
|   StatusBar(); | ||||
|  | ||||
|   for (auto& it : client_properties_) { | ||||
|     ConnectionStatusWindow(it.second); | ||||
|   if (show_connection_status_window_) { | ||||
|     for (auto it = client_properties_.begin(); | ||||
|          it != client_properties_.end();) { | ||||
|       auto& props = it->second; | ||||
|       if (focused_remote_id_ == props->remote_id_) { | ||||
|         if (ConnectionStatusWindow(props)) { | ||||
|           it = client_properties_.erase(it); | ||||
|         } else { | ||||
|           ++it; | ||||
|         } | ||||
|       } else { | ||||
|         ++it; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return 0; | ||||
|   | ||||
| @@ -132,6 +132,7 @@ static int InputTextCallback(ImGuiInputTextCallbackData *data) { | ||||
| int Render::ConnectTo(const std::string &remote_id, const char *password, | ||||
|                       bool remember_password) { | ||||
|   LOG_INFO("Connect to [{}]", remote_id); | ||||
|   focused_remote_id_ = remote_id; | ||||
|  | ||||
|   if (client_properties_.find(remote_id) == client_properties_.end()) { | ||||
|     client_properties_[remote_id] = | ||||
|   | ||||
| @@ -1331,7 +1331,12 @@ void Render::ProcessSdlEvent() { | ||||
|       case STREAM_FRASH: { | ||||
|         auto* props = static_cast<SubStreamWindowProperties*>(event.user.data1); | ||||
|         if (!props) { | ||||
|           LOG_ERROR("Invalid stream window properties"); | ||||
|           continue; | ||||
|         } | ||||
|         if (props->video_width_ <= 0 || props->video_height_ <= 0) { | ||||
|           continue; | ||||
|         } | ||||
|         if (!props->dst_buffer_) { | ||||
|           continue; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -151,7 +151,8 @@ class Render { | ||||
|   int ControlBar(std::shared_ptr<SubStreamWindowProperties> &props); | ||||
|   int AboutWindow(); | ||||
|   int StatusBar(); | ||||
|   int ConnectionStatusWindow(std::shared_ptr<SubStreamWindowProperties> &props); | ||||
|   bool ConnectionStatusWindow( | ||||
|       std::shared_ptr<SubStreamWindowProperties> &props); | ||||
|   int ShowRecentConnections(); | ||||
|  | ||||
|  private: | ||||
| @@ -342,6 +343,7 @@ class Render { | ||||
|   bool need_to_rejoin_ = false; | ||||
|   bool just_created_ = false; | ||||
|   std::string controlled_remote_id_ = ""; | ||||
|   std::string focused_remote_id_ = ""; | ||||
|   bool need_to_send_host_info_ = false; | ||||
|   SDL_Event last_mouse_event; | ||||
|  | ||||
|   | ||||
| @@ -114,6 +114,8 @@ int Render::StreamWindow() { | ||||
|  | ||||
|           ControlWindow(props); | ||||
|  | ||||
|           focused_remote_id_ = props->remote_id_; | ||||
|  | ||||
|           if (!props->peer_) { | ||||
|             it = client_properties_.erase(it); | ||||
|             if (client_properties_.empty()) { | ||||
|   | ||||
							
								
								
									
										2
									
								
								thirdparty/minirtc
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								thirdparty/minirtc
									
									
									
									
										vendored
									
									
								
							 Submodule thirdparty/minirtc updated: 2f4b928649...a994632740
									
								
							
		Reference in New Issue
	
	Block a user