mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-12-18 21:29:09 +08:00
Compare commits
6 Commits
v1.1.0-bet
...
v1.1.1-202
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53a41a6794 | ||
|
|
37ede5861c | ||
|
|
497454ac51 | ||
|
|
4ebb7a6a4d | ||
|
|
7d1910df71 | ||
|
|
52e70a26f3 |
76
.github/workflows/build.yml
vendored
76
.github/workflows/build.yml
vendored
@@ -35,12 +35,14 @@ jobs:
|
|||||||
id: set_deb_version
|
id: set_deb_version
|
||||||
run: |
|
run: |
|
||||||
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
||||||
|
BUILD_DATE=$(date +%Y%m%d)
|
||||||
if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then
|
if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then
|
||||||
LEGAL_VERSION="0.0.0-${VERSION_NUM}-${SHORT_SHA}"
|
LEGAL_VERSION="v0.0.0-${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
else
|
else
|
||||||
LEGAL_VERSION="${VERSION_NUM}-${SHORT_SHA}"
|
LEGAL_VERSION="v${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
fi
|
fi
|
||||||
echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV
|
echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV
|
||||||
|
echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -99,12 +101,14 @@ jobs:
|
|||||||
id: set_deb_version
|
id: set_deb_version
|
||||||
run: |
|
run: |
|
||||||
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
||||||
|
BUILD_DATE=$(date +%Y%m%d)
|
||||||
if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then
|
if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then
|
||||||
LEGAL_VERSION="0.0.0-${VERSION_NUM}-${SHORT_SHA}"
|
LEGAL_VERSION="v0.0.0-${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
else
|
else
|
||||||
LEGAL_VERSION="${VERSION_NUM}-${SHORT_SHA}"
|
LEGAL_VERSION="v${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
fi
|
fi
|
||||||
echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV
|
echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV
|
||||||
|
echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -160,9 +164,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
VERSION="${GITHUB_REF##*/}"
|
VERSION="${GITHUB_REF##*/}"
|
||||||
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
||||||
VERSION_NUM="${VERSION#v}-${SHORT_SHA}"
|
BUILD_DATE=$(date +%Y%m%d)
|
||||||
|
VERSION_NUM="v${VERSION#v}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV
|
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV
|
||||||
echo "VERSION_NUM=${VERSION_NUM}"
|
echo "VERSION_NUM=${VERSION_NUM}"
|
||||||
|
echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Cache xmake dependencies
|
- name: Cache xmake dependencies
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -223,7 +229,9 @@ jobs:
|
|||||||
$version = $version -replace '^v', ''
|
$version = $version -replace '^v', ''
|
||||||
$version = $version -replace '/', '-'
|
$version = $version -replace '/', '-'
|
||||||
$SHORT_SHA = $env:GITHUB_SHA.Substring(0,7)
|
$SHORT_SHA = $env:GITHUB_SHA.Substring(0,7)
|
||||||
echo "VERSION_NUM=$version-$SHORT_SHA" >> $env:GITHUB_ENV
|
$BUILD_DATE = Get-Date -Format "yyyyMMdd"
|
||||||
|
echo "VERSION_NUM=v$version-$BUILD_DATE-$SHORT_SHA" >> $env:GITHUB_ENV
|
||||||
|
echo "BUILD_DATE=$BUILD_DATE" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
- name: Cache xmake dependencies
|
- name: Cache xmake dependencies
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -332,17 +340,25 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
VERSION="${GITHUB_REF##*/}"
|
VERSION="${GITHUB_REF##*/}"
|
||||||
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
||||||
VERSION_NUM="${VERSION#v}-${SHORT_SHA}"
|
BUILD_DATE=$(date +%Y%m%d)
|
||||||
|
BUILD_DATE_ISO=$(date +%Y-%m-%d)
|
||||||
|
VERSION_NUM="${VERSION#v}-${BUILD_DATE}-${SHORT_SHA}"
|
||||||
|
VERSION_WITH_V="v${VERSION_NUM}"
|
||||||
|
VERSION_ONLY="${VERSION#v}"
|
||||||
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT
|
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT
|
||||||
|
echo "VERSION_WITH_V=${VERSION_WITH_V}" >> $GITHUB_OUTPUT
|
||||||
|
echo "VERSION_ONLY=${VERSION_ONLY}" >> $GITHUB_OUTPUT
|
||||||
|
echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_OUTPUT
|
||||||
|
echo "BUILD_DATE_ISO=${BUILD_DATE_ISO}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Rename artifacts
|
- name: Rename artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir -p release
|
mkdir -p release
|
||||||
cp artifacts/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}.pkg
|
cp artifacts/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-macos-x64-${{ 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-macos-arm64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg
|
||||||
cp artifacts/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}.deb
|
cp artifacts/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-linux-amd64-${{ 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-linux-arm64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb
|
||||||
cp artifacts/crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}/* release/crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe
|
cp artifacts/crossdesk-win-x64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe
|
||||||
|
|
||||||
- name: List release files
|
- name: List release files
|
||||||
run: ls -lh release/
|
run: ls -lh release/
|
||||||
@@ -350,8 +366,8 @@ jobs:
|
|||||||
- name: Upload to Versioned GitHub Release
|
- name: Upload to Versioned GitHub Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: v${{ steps.version.outputs.VERSION_NUM }}
|
tag_name: ${{ steps.version.outputs.VERSION_WITH_V }}
|
||||||
name: Release v${{ steps.version.outputs.VERSION_NUM }}
|
name: Release ${{ steps.version.outputs.VERSION_WITH_V }}
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
files: release/*
|
files: release/*
|
||||||
@@ -388,9 +404,35 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate version.json
|
- name: Generate version.json
|
||||||
run: |
|
run: |
|
||||||
echo "{" > version.json
|
cat > version.json << EOF
|
||||||
echo " \"latest_version\": \"${{ steps.version.outputs.VERSION_NUM }}\"" >> version.json
|
{
|
||||||
echo "}" >> version.json cat version.json
|
"version": "${{ steps.version.outputs.VERSION_ONLY }}",
|
||||||
|
"releaseDate": "${{ steps.version.outputs.BUILD_DATE_ISO }}",
|
||||||
|
"downloads": {
|
||||||
|
"windows-x64": {
|
||||||
|
"url": "https://downloads.crossdesk.cn/crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe",
|
||||||
|
"filename": "crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe"
|
||||||
|
},
|
||||||
|
"macos-x64": {
|
||||||
|
"url": "https://downloads.crossdesk.cn/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}.pkg",
|
||||||
|
"filename": "crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}.pkg"
|
||||||
|
},
|
||||||
|
"macos-arm64": {
|
||||||
|
"url": "https://downloads.crossdesk.cn/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg",
|
||||||
|
"filename": "crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg"
|
||||||
|
},
|
||||||
|
"linux-amd64": {
|
||||||
|
"url": "https://downloads.crossdesk.cn/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}.deb",
|
||||||
|
"filename": "crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}.deb"
|
||||||
|
},
|
||||||
|
"linux-arm64": {
|
||||||
|
"url": "https://downloads.crossdesk.cn/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb",
|
||||||
|
"filename": "crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
cat version.json
|
||||||
|
|
||||||
- name: Upload version.json to server
|
- name: Upload version.json to server
|
||||||
uses: burnett01/rsync-deployments@5.2
|
uses: burnett01/rsync-deployments@5.2
|
||||||
|
|||||||
51
.github/workflows/update-pages.yml
vendored
51
.github/workflows/update-pages.yml
vendored
@@ -1,51 +0,0 @@
|
|||||||
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: |
|
|
||||||
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7)
|
|
||||||
VERSION_NUM="${GITHUB_REF##*/}"
|
|
||||||
VERSION_NUM="${VERSION_NUM#v}-${SHORT_SHA}"
|
|
||||||
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
|
|
||||||
echo "Updating download links to ${VERSION_NUM}"
|
|
||||||
sed -E -i "s/crossdesk-win-x64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.exe/crossdesk-win-x64-${VERSION_NUM}.exe/g" index.html
|
|
||||||
sed -E -i "s/crossdesk-macos-x64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.pkg/crossdesk-macos-x64-${VERSION_NUM}.pkg/g" index.html
|
|
||||||
sed -E -i "s/crossdesk-macos-arm64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.pkg/crossdesk-macos-arm64-${VERSION_NUM}.pkg/g" index.html
|
|
||||||
sed -E -i "s/crossdesk-linux-amd64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.deb/crossdesk-linux-amd64-${VERSION_NUM}.deb/g" index.html
|
|
||||||
sed -E -i "s/crossdesk-linux-arm64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.deb/crossdesk-linux-arm64-${VERSION_NUM}.deb/g" index.html
|
|
||||||
git diff index.html || true
|
|
||||||
|
|
||||||
- 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 }}
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[]()
|
[]()
|
||||||
[](https://www.gnu.org/licenses/lgpl-3.0)
|
[](https://www.gnu.org/licenses/lgpl-3.0)
|
||||||
[](https://github.com/kunkundi/crossdesk/commits/self-hosted-server)
|
[](https://github.com/kunkundi/crossdesk/commits/web-client)
|
||||||
[](https://github.com/kunkundi/crossdesk/actions)
|
[](https://github.com/kunkundi/crossdesk/actions)
|
||||||
[](https://hub.docker.com/r/crossdesk/crossdesk-server/tags)
|
[](https://hub.docker.com/r/crossdesk/crossdesk-server/tags)
|
||||||
[]()
|
[]()
|
||||||
@@ -42,7 +42,9 @@ CrossDesk 是 [MiniRTC](https://github.com/kunkundi/minirtc.git) 实时音视频
|
|||||||
|
|
||||||
### Web 客户端
|
### Web 客户端
|
||||||
浏览器访问 [CrossDesk Web Client](https://web.crossdesk.cn/)。
|
浏览器访问 [CrossDesk Web Client](https://web.crossdesk.cn/)。
|
||||||
输入 **远程设备 ID** 与 **密码**,点击连接即可接入远程设备。
|
输入 **远程设备 ID** 与 **密码**,点击连接即可接入远程设备。如图,**iOS Safari 远程控制 Win11**:
|
||||||
|
|
||||||
|
<img width="645" height="300" alt="_cgi-bin_mmwebwx-bin_webwxgetmsgimg__ MsgID=932911462648581698 skey=@crypt_1f5153b1_b550ca7462b5009ce03c991cca2a92a7 mmweb_appid=wx_webfilehelper" src="https://github.com/user-attachments/assets/a5109e6f-752c-4654-9f4e-7e161bddf43e" />
|
||||||
|
|
||||||
## 如何编译
|
## 如何编译
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[]()
|
[]()
|
||||||
[](https://www.gnu.org/licenses/lgpl-3.0)
|
[](https://www.gnu.org/licenses/lgpl-3.0)
|
||||||
[](https://github.com/kunkundi/crossdesk/commits/self-hosted-server)
|
[](https://github.com/kunkundi/crossdesk/commits/web-client)
|
||||||
[](https://github.com/kunkundi/crossdesk/actions)
|
[](https://github.com/kunkundi/crossdesk/actions)
|
||||||
[](https://hub.docker.com/r/crossdesk/crossdesk-server/tags)
|
[](https://hub.docker.com/r/crossdesk/crossdesk-server/tags)
|
||||||
[]()
|
[]()
|
||||||
@@ -45,7 +45,9 @@ Before connecting, you can customize configuration options in the settings, such
|
|||||||
### Web Client
|
### Web Client
|
||||||
|
|
||||||
Visit [CrossDesk Web Client](https://web.crossdesk.cn/).
|
Visit [CrossDesk Web Client](https://web.crossdesk.cn/).
|
||||||
Enter the **Remote Device ID** and **Password**, then click Connect to access the remote device.
|
Enter the **Remote Device ID** and **Password**, then click Connect to access the remote device. As shown, **iOS Safari remotely controlling Windows 11**:
|
||||||
|
|
||||||
|
<img width="645" height="300" alt="_cgi-bin_mmwebwx-bin_webwxgetmsgimg__ MsgID=932911462648581698 skey=@crypt_1f5153b1_b550ca7462b5009ce03c991cca2a92a7 mmweb_appid=wx_webfilehelper" src="https://github.com/user-attachments/assets/a5109e6f-752c-4654-9f4e-7e161bddf43e" />
|
||||||
|
|
||||||
## How to build
|
## How to build
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ ARCHITECTURE="amd64"
|
|||||||
MAINTAINER="Junkun Di <junkun.di@hotmail.com>"
|
MAINTAINER="Junkun Di <junkun.di@hotmail.com>"
|
||||||
DESCRIPTION="A simple cross-platform remote desktop client."
|
DESCRIPTION="A simple cross-platform remote desktop client."
|
||||||
|
|
||||||
DEB_DIR="${PKG_NAME}-${APP_VERSION}"
|
# Remove 'v' prefix from version for Debian package (Debian version must start with digit)
|
||||||
|
DEB_VERSION="${APP_VERSION#v}"
|
||||||
|
|
||||||
|
DEB_DIR="${PKG_NAME}-${DEB_VERSION}"
|
||||||
DEBIAN_DIR="$DEB_DIR/DEBIAN"
|
DEBIAN_DIR="$DEB_DIR/DEBIAN"
|
||||||
BIN_DIR="$DEB_DIR/usr/bin"
|
BIN_DIR="$DEB_DIR/usr/bin"
|
||||||
CERT_SRC_DIR="$DEB_DIR/opt/$PKG_NAME/certs"
|
CERT_SRC_DIR="$DEB_DIR/opt/$PKG_NAME/certs"
|
||||||
@@ -35,7 +38,7 @@ done
|
|||||||
|
|
||||||
cat > "$DEBIAN_DIR/control" << EOF
|
cat > "$DEBIAN_DIR/control" << EOF
|
||||||
Package: $PKG_NAME
|
Package: $PKG_NAME
|
||||||
Version: $APP_VERSION
|
Version: $DEB_VERSION
|
||||||
Architecture: $ARCHITECTURE
|
Architecture: $ARCHITECTURE
|
||||||
Maintainer: $MAINTAINER
|
Maintainer: $MAINTAINER
|
||||||
Description: $DESCRIPTION
|
Description: $DESCRIPTION
|
||||||
@@ -50,7 +53,7 @@ EOF
|
|||||||
|
|
||||||
cat > "$DESKTOP_DIR/$PKG_NAME.desktop" << EOF
|
cat > "$DESKTOP_DIR/$PKG_NAME.desktop" << EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=$APP_VERSION
|
Version=$DEB_VERSION
|
||||||
Name=$APP_NAME
|
Name=$APP_NAME
|
||||||
Comment=$DESCRIPTION
|
Comment=$DESCRIPTION
|
||||||
Exec=/usr/bin/$PKG_NAME
|
Exec=/usr/bin/$PKG_NAME
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ ARCHITECTURE="arm64"
|
|||||||
MAINTAINER="Junkun Di <junkun.di@hotmail.com>"
|
MAINTAINER="Junkun Di <junkun.di@hotmail.com>"
|
||||||
DESCRIPTION="A simple cross-platform remote desktop client."
|
DESCRIPTION="A simple cross-platform remote desktop client."
|
||||||
|
|
||||||
DEB_DIR="${PKG_NAME}-${APP_VERSION}"
|
# Remove 'v' prefix from version for Debian package (Debian version must start with digit)
|
||||||
|
DEB_VERSION="${APP_VERSION#v}"
|
||||||
|
|
||||||
|
DEB_DIR="${PKG_NAME}-${DEB_VERSION}"
|
||||||
DEBIAN_DIR="$DEB_DIR/DEBIAN"
|
DEBIAN_DIR="$DEB_DIR/DEBIAN"
|
||||||
BIN_DIR="$DEB_DIR/usr/bin"
|
BIN_DIR="$DEB_DIR/usr/bin"
|
||||||
CERT_SRC_DIR="$DEB_DIR/opt/$PKG_NAME/certs"
|
CERT_SRC_DIR="$DEB_DIR/opt/$PKG_NAME/certs"
|
||||||
@@ -35,7 +38,7 @@ done
|
|||||||
|
|
||||||
cat > "$DEBIAN_DIR/control" << EOF
|
cat > "$DEBIAN_DIR/control" << EOF
|
||||||
Package: $PKG_NAME
|
Package: $PKG_NAME
|
||||||
Version: $APP_VERSION
|
Version: $DEB_VERSION
|
||||||
Architecture: $ARCHITECTURE
|
Architecture: $ARCHITECTURE
|
||||||
Maintainer: $MAINTAINER
|
Maintainer: $MAINTAINER
|
||||||
Description: $DESCRIPTION
|
Description: $DESCRIPTION
|
||||||
@@ -49,7 +52,7 @@ EOF
|
|||||||
|
|
||||||
cat > "$DESKTOP_DIR/$PKG_NAME.desktop" << EOF
|
cat > "$DESKTOP_DIR/$PKG_NAME.desktop" << EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=$APP_VERSION
|
Version=$DEB_VERSION
|
||||||
Name=$APP_NAME
|
Name=$APP_NAME
|
||||||
Comment=$DESCRIPTION
|
Comment=$DESCRIPTION
|
||||||
Exec=/usr/bin/$PKG_NAME
|
Exec=/usr/bin/$PKG_NAME
|
||||||
|
|||||||
@@ -12,11 +12,15 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
using json = nlohmann::json;
|
using json = nlohmann::json;
|
||||||
|
|
||||||
namespace crossdesk {
|
namespace crossdesk {
|
||||||
|
|
||||||
|
static std::string latest_release_date_ = "";
|
||||||
|
|
||||||
std::string ExtractNumericPart(const std::string& ver) {
|
std::string ExtractNumericPart(const std::string& ver) {
|
||||||
size_t start = 0;
|
size_t start = 0;
|
||||||
while (start < ver.size() && !std::isdigit(ver[start])) start++;
|
while (start < ver.size() && !std::isdigit(ver[start])) start++;
|
||||||
@@ -39,6 +43,39 @@ std::vector<int> SplitVersion(const std::string& ver) {
|
|||||||
return nums;
|
return nums;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// extract date from version string (format: v1.2.3-20251113-abc
|
||||||
|
// or 1.2.3-20251113-abc)
|
||||||
|
std::string ExtractDateFromVersion(const std::string& version) {
|
||||||
|
size_t dash1 = version.find('-');
|
||||||
|
if (dash1 != std::string::npos) {
|
||||||
|
size_t dash2 = version.find('-', dash1 + 1);
|
||||||
|
if (dash2 != std::string::npos) {
|
||||||
|
std::string date_part = version.substr(dash1 + 1, dash2 - dash1 - 1);
|
||||||
|
|
||||||
|
bool is_date = true;
|
||||||
|
for (char c : date_part) {
|
||||||
|
if (!std::isdigit(c)) {
|
||||||
|
is_date = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (is_date) {
|
||||||
|
// convert YYYYMMDD to YYYY-MM-DD
|
||||||
|
return date_part.substr(0, 4) + "-" + date_part.substr(4, 2) + "-" +
|
||||||
|
date_part.substr(6, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare two dates in YYYY-MM-DD format
|
||||||
|
bool IsNewerDate(const std::string& date1, const std::string& date2) {
|
||||||
|
if (date1.empty() || date2.empty()) return false;
|
||||||
|
// simple string comparison works for ISO date format (YYYY-MM-DD)
|
||||||
|
return date2 > date1;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsNewerVersion(const std::string& current, const std::string& latest) {
|
bool IsNewerVersion(const std::string& current, const std::string& latest) {
|
||||||
auto v1 = SplitVersion(ExtractNumericPart(current));
|
auto v1 = SplitVersion(ExtractNumericPart(current));
|
||||||
auto v2 = SplitVersion(ExtractNumericPart(latest));
|
auto v2 = SplitVersion(ExtractNumericPart(latest));
|
||||||
@@ -51,6 +88,44 @@ bool IsNewerVersion(const std::string& current, const std::string& latest) {
|
|||||||
if (v2[i] > v1[i]) return true;
|
if (v2[i] > v1[i]) return true;
|
||||||
if (v2[i] < v1[i]) return false;
|
if (v2[i] < v1[i]) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if versions are equal, compare by release date
|
||||||
|
if (!latest_release_date_.empty()) {
|
||||||
|
// try to extract date from current version string
|
||||||
|
std::string current_date = ExtractDateFromVersion(current);
|
||||||
|
if (!current_date.empty()) {
|
||||||
|
return IsNewerDate(current_date, latest_release_date_);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsNewerVersionWithDate(const std::string& current_version,
|
||||||
|
const std::string& current_date,
|
||||||
|
const std::string& latest_version,
|
||||||
|
const std::string& latest_date) {
|
||||||
|
// compare versions
|
||||||
|
auto v1 = SplitVersion(ExtractNumericPart(current_version));
|
||||||
|
auto v2 = SplitVersion(ExtractNumericPart(latest_version));
|
||||||
|
|
||||||
|
size_t len = std::max(v1.size(), v2.size());
|
||||||
|
v1.resize(len, 0);
|
||||||
|
v2.resize(len, 0);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < len; ++i) {
|
||||||
|
if (v2[i] > v1[i]) return true;
|
||||||
|
if (v2[i] < v1[i]) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if versions are equal, compare by release date
|
||||||
|
if (!current_date.empty() && !latest_date.empty()) {
|
||||||
|
return IsNewerDate(current_date, latest_date);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if dates are not available, versions are equal
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,17 +139,27 @@ std::string CheckUpdate() {
|
|||||||
if (res->status == 200) {
|
if (res->status == 200) {
|
||||||
try {
|
try {
|
||||||
auto j = json::parse(res->body);
|
auto j = json::parse(res->body);
|
||||||
std::string latest = j["latest_version"];
|
std::string latest = j["version"];
|
||||||
|
if (j.contains("releaseDate") && j["releaseDate"].is_string()) {
|
||||||
|
latest_release_date_ = j["releaseDate"];
|
||||||
|
} else {
|
||||||
|
latest_release_date_ = "";
|
||||||
|
}
|
||||||
return latest;
|
return latest;
|
||||||
} catch (std::exception&) {
|
} catch (std::exception&) {
|
||||||
|
latest_release_date_ = "";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
latest_release_date_ = "";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
latest_release_date_ = "";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string GetLatestReleaseDate() { return latest_release_date_; }
|
||||||
} // namespace crossdesk
|
} // namespace crossdesk
|
||||||
#endif
|
#endif
|
||||||
Submodule submodules/minirtc updated: 2f8b0c1ff4...29ae03237f
Reference in New Issue
Block a user