diff --git a/icons/app.rc b/icons/app.rc deleted file mode 100644 index 430cc63..0000000 --- a/icons/app.rc +++ /dev/null @@ -1 +0,0 @@ -IDI_ICON1 ICON "app_icon.ico" \ No newline at end of file diff --git a/icons/app_icon.ico b/icons/app_icon.ico deleted file mode 100644 index e51034c..0000000 Binary files a/icons/app_icon.ico and /dev/null differ diff --git a/icons/crossdesk.icns b/icons/crossdesk.icns deleted file mode 100644 index 99245bf..0000000 Binary files a/icons/crossdesk.icns and /dev/null differ diff --git a/icons/crossdesk.ico b/icons/crossdesk.ico deleted file mode 100644 index e51034c..0000000 Binary files a/icons/crossdesk.ico and /dev/null differ diff --git a/icons/crossdesk.png b/icons/crossdesk.png deleted file mode 100644 index 982ac91..0000000 Binary files a/icons/crossdesk.png and /dev/null differ diff --git a/icons/linux/crossdesk_16x16.png b/icons/linux/crossdesk_16x16.png new file mode 100644 index 0000000..f7321ea Binary files /dev/null and b/icons/linux/crossdesk_16x16.png differ diff --git a/icons/linux/crossdesk_24x24.png b/icons/linux/crossdesk_24x24.png new file mode 100644 index 0000000..2439938 Binary files /dev/null and b/icons/linux/crossdesk_24x24.png differ diff --git a/icons/linux/crossdesk_256x256.png b/icons/linux/crossdesk_256x256.png new file mode 100644 index 0000000..3f24b3f Binary files /dev/null and b/icons/linux/crossdesk_256x256.png differ diff --git a/icons/linux/crossdesk_32x32.png b/icons/linux/crossdesk_32x32.png new file mode 100644 index 0000000..d544f13 Binary files /dev/null and b/icons/linux/crossdesk_32x32.png differ diff --git a/icons/linux/crossdesk_48x48.png b/icons/linux/crossdesk_48x48.png new file mode 100644 index 0000000..e77b1eb Binary files /dev/null and b/icons/linux/crossdesk_48x48.png differ diff --git a/icons/macos/crossdesk.icns b/icons/macos/crossdesk.icns new file mode 100644 index 0000000..e4c3808 Binary files /dev/null and b/icons/macos/crossdesk.icns differ diff --git a/icons/windows/crossdesk.ico b/icons/windows/crossdesk.ico new file mode 100644 index 0000000..5b1f083 Binary files /dev/null and b/icons/windows/crossdesk.ico differ diff --git a/scripts/linux/pkg_arm64.sh b/scripts/linux/pkg_arm64.sh index 7242456..5bb90cb 100644 --- a/scripts/linux/pkg_arm64.sh +++ b/scripts/linux/pkg_arm64.sh @@ -3,7 +3,7 @@ set -e APP_NAME="CrossDesk" APP_VERSION="$1" -ARCHITECTURE="arm64" # 改为 arm64 +ARCHITECTURE="arm64" MAINTAINER="Junkun Di " DESCRIPTION="A simple cross-platform remote desktop client." @@ -11,16 +11,21 @@ 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" +ICON_BASE_DIR="$DEB_DIR/usr/share/icons/hicolor" DESKTOP_DIR="$DEB_DIR/usr/share/applications" rm -rf "$DEB_DIR" -mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$ICON_DIR" "$DESKTOP_DIR" +mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_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" + +for size in 16 24 48 128 256; do + mkdir -p "$ICON_BASE_DIR/${size}x${size}/apps" + cp "icons/linux/crossdesk_${size}x${size}.png" \ + "$ICON_BASE_DIR/${size}x${size}/apps/crossdesk.png" +done chmod +x "$BIN_DIR/crossdesk" @@ -58,13 +63,16 @@ 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 + for size in 16 24 48 128 256; do + rm -f /usr/share/icons/hicolor/\${size}x\${size}/apps/crossdesk.png + done fi exit 0 EOF +EOF chmod +x "$DEBIAN_DIR/postrm" diff --git a/scripts/linux/pkg_x86_64.sh b/scripts/linux/pkg_x86_64.sh index b47d546..0328d60 100644 --- a/scripts/linux/pkg_x86_64.sh +++ b/scripts/linux/pkg_x86_64.sh @@ -10,17 +10,22 @@ 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" +CERT_SRC_DIR="$DEB_DIR/opt/$APP_NAME/certs" +ICON_BASE_DIR="$DEB_DIR/usr/share/icons/hicolor" DESKTOP_DIR="$DEB_DIR/usr/share/applications" rm -rf "$DEB_DIR" -mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$ICON_DIR" "$DESKTOP_DIR" +mkdir -p "$DEBIAN_DIR" "$BIN_DIR" "$CERT_SRC_DIR" "$DESKTOP_DIR" cp build/linux/x86_64/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" + +for size in 16 24 48 128 256; do + mkdir -p "$ICON_BASE_DIR/${size}x${size}/apps" + cp "icons/linux/crossdesk_${size}x${size}.png" \ + "$ICON_BASE_DIR/${size}x${size}/apps/crossdesk.png" +done chmod +x "$BIN_DIR/crossdesk" @@ -58,9 +63,11 @@ 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 + for size in 16 24 48 128 256; do + rm -f /usr/share/icons/hicolor/\${size}x\${size}/apps/crossdesk.png + done fi exit 0 diff --git a/scripts/macosx/pkg_arm64.sh b/scripts/macosx/pkg_arm64.sh index 6075cff..379ee35 100644 --- a/scripts/macosx/pkg_arm64.sh +++ b/scripts/macosx/pkg_arm64.sh @@ -1,64 +1,54 @@ #!/bin/bash -set -e # 遇错退出 +set -e -# === 配置变量 === APP_NAME="crossdesk" -APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名 -EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk" # 可执行文件路径 +APP_NAME_UPPER="CrossDesk" +EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk" APP_VERSION="$1" PLATFORM="macos" ARCH="arm64" IDENTIFIER="cn.crossdesk.app" -ICON_PATH="./icons/crossdesk.icns" # .icns 图标路径 +ICON_PATH="icons/macos/crossdesk.icns" MACOS_MIN_VERSION="10.12" -CERTS_SOURCE="./certs" # 你的证书文件目录,里面放所有需要安装的文件 +CERTS_SOURCE="certs" CERT_NAME="crossdesk.cn_root.crt" -APP_BUNDLE="${APP_NAME_UPPER}.app" # 使用大写的应用名称 +APP_BUNDLE="${APP_NAME_UPPER}.app" CONTENTS_DIR="${APP_BUNDLE}/Contents" MACOS_DIR="${CONTENTS_DIR}/MacOS" RESOURCES_DIR="${CONTENTS_DIR}/Resources" -PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" # 保持安装包名称小写 +PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg" VOL_NAME="Install ${APP_NAME_UPPER}" -# === 清理旧文件 === -echo "🧹 清理旧文件..." +echo "delete old files" rm -rf "${APP_BUNDLE}" "${PKG_NAME}" "${DMG_NAME}" build_pkg_temp CrossDesk_dmg_temp mkdir -p build_pkg_temp - -# === 创建 .app 结构 === -echo "📦 创建 ${APP_BUNDLE}..." mkdir -p "${MACOS_DIR}" "${RESOURCES_DIR}" -echo "🚚 拷贝可执行文件..." -cp "${EXECUTABLE_PATH}" "${MACOS_DIR}/${APP_NAME_UPPER}" # 拷贝时使用大写的应用名称 +cp "${EXECUTABLE_PATH}" "${MACOS_DIR}/${APP_NAME_UPPER}" chmod +x "${MACOS_DIR}/${APP_NAME_UPPER}" -# === 图标 === if [ -f "${ICON_PATH}" ]; then cp "${ICON_PATH}" "${RESOURCES_DIR}/crossedesk.icns" ICON_KEY="CFBundleIconFilecrossedesk.icns" - echo "🎨 图标添加完成" else ICON_KEY="" - echo "⚠️ 未找到图标文件,跳过图标设置" fi -# === 生成 Info.plist === -echo "📝 生成 Info.plist..." +echo "generate Info.plist" cat > "${CONTENTS_DIR}/Info.plist" < CFBundleName - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundleDisplayName - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundleIdentifier ${IDENTIFIER} CFBundleVersion @@ -66,7 +56,7 @@ cat > "${CONTENTS_DIR}/Info.plist" <CFBundleShortVersionString ${APP_VERSION} CFBundleExecutable - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundlePackageType APPL ${ICON_KEY} @@ -86,10 +76,9 @@ cat > "${CONTENTS_DIR}/Info.plist" < EOF -echo "✅ .app 创建完成" +echo ".app created successfully." -# === 构建应用组件包 === -echo "📦 构建应用组件包..." +echo "building pkg..." pkgbuild \ --identifier "${IDENTIFIER}" \ --version "${APP_VERSION}" \ @@ -97,8 +86,6 @@ pkgbuild \ --component "${APP_BUNDLE}" \ build_pkg_temp/${APP_NAME}-component.pkg -# === 构建 certs 组件包 === -# 先创建脚本目录和脚本文件 mkdir -p scripts cat > scripts/postinstall <<'EOF' @@ -116,7 +103,6 @@ EOF chmod +x scripts/postinstall -# 构建 certs 组件包,增加 --scripts 参数指定 postinstall pkgbuild \ --root "${CERTS_SOURCE}" \ --identifier "${IDENTIFIER}.certs" \ @@ -125,28 +111,15 @@ pkgbuild \ --scripts scripts \ build_pkg_temp/${APP_NAME}-certs.pkg -# === 组合产品包 === -echo "🏗️ 组合最终安装包..." productbuild \ --package build_pkg_temp/${APP_NAME}-component.pkg \ --package build_pkg_temp/${APP_NAME}-certs.pkg \ "${PKG_NAME}" -echo "✅ 生成安装包完成:${PKG_NAME}" - -# === 可选:打包成 DMG === -# 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}" +echo "PKG package created: ${PKG_NAME}" rm -rf build_pkg_temp scripts ${APP_BUNDLE} -echo "🎉 所有打包完成:" -echo " ✔️ 应用:${APP_BUNDLE}" -echo " ✔️ 安装包:${PKG_NAME}" -# echo " ✔️ 镜像包(可选):${DMG_NAME}" \ No newline at end of file +echo "PKG package created successfully." +echo "package ${APP_BUNDLE}" +echo "installer ${PKG_NAME}" \ No newline at end of file diff --git a/scripts/macosx/pkg_x86_64.sh b/scripts/macosx/pkg_x86_64.sh index 49762c1..eead5ce 100644 --- a/scripts/macosx/pkg_x86_64.sh +++ b/scripts/macosx/pkg_x86_64.sh @@ -1,64 +1,54 @@ #!/bin/bash -set -e # 遇错退出 +set -e -# === 配置变量 === APP_NAME="crossdesk" -APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名 -EXECUTABLE_PATH="build/macosx/x86_64/release/crossdesk" # 可执行文件路径 +APP_NAME_UPPER="CrossDesk" +EXECUTABLE_PATH="build/macosx/x86_64/release/crossdesk" APP_VERSION="$1" PLATFORM="macos" ARCH="x86_64" IDENTIFIER="cn.crossdesk.app" -ICON_PATH="icons/crossdesk.icns" # .icns 图标路径 +ICON_PATH="icons/macos/crossdesk.icns" MACOS_MIN_VERSION="10.12" -CERTS_SOURCE="certs" # 你的证书文件目录,里面放所有需要安装的文件 +CERTS_SOURCE="certs" CERT_NAME="crossdesk.cn_root.crt" -APP_BUNDLE="${APP_NAME_UPPER}.app" # 使用大写的应用名称 +APP_BUNDLE="${APP_NAME_UPPER}.app" CONTENTS_DIR="${APP_BUNDLE}/Contents" MACOS_DIR="${CONTENTS_DIR}/MacOS" RESOURCES_DIR="${CONTENTS_DIR}/Resources" -PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" # 保持安装包名称小写 +PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg" VOL_NAME="Install ${APP_NAME_UPPER}" -# === 清理旧文件 === -echo "🧹 清理旧文件..." +echo "delete old files" rm -rf "${APP_BUNDLE}" "${PKG_NAME}" "${DMG_NAME}" build_pkg_temp CrossDesk_dmg_temp mkdir -p build_pkg_temp - -# === 创建 .app 结构 === -echo "📦 创建 ${APP_BUNDLE}..." mkdir -p "${MACOS_DIR}" "${RESOURCES_DIR}" -echo "🚚 拷贝可执行文件..." cp "${EXECUTABLE_PATH}" "${MACOS_DIR}/${APP_NAME_UPPER}" # 拷贝时使用大写的应用名称 chmod +x "${MACOS_DIR}/${APP_NAME_UPPER}" -# === 图标 === if [ -f "${ICON_PATH}" ]; then cp "${ICON_PATH}" "${RESOURCES_DIR}/crossedesk.icns" ICON_KEY="CFBundleIconFilecrossedesk.icns" - echo "🎨 图标添加完成" else ICON_KEY="" - echo "⚠️ 未找到图标文件,跳过图标设置" fi -# === 生成 Info.plist === -echo "📝 生成 Info.plist..." +echo "generate Info.plist" cat > "${CONTENTS_DIR}/Info.plist" < CFBundleName - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundleDisplayName - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundleIdentifier ${IDENTIFIER} CFBundleVersion @@ -66,7 +56,7 @@ cat > "${CONTENTS_DIR}/Info.plist" <CFBundleShortVersionString ${APP_VERSION} CFBundleExecutable - ${APP_NAME_UPPER} + ${APP_NAME_UPPER} CFBundlePackageType APPL ${ICON_KEY} @@ -86,10 +76,9 @@ cat > "${CONTENTS_DIR}/Info.plist" < EOF -echo "✅ .app 创建完成" +echo ".app created successfully." -# === 构建应用组件包 === -echo "📦 构建应用组件包..." +echo "building pkg..." pkgbuild \ --identifier "${IDENTIFIER}" \ --version "${APP_VERSION}" \ @@ -97,8 +86,6 @@ pkgbuild \ --component "${APP_BUNDLE}" \ build_pkg_temp/${APP_NAME}-component.pkg -# === 构建 certs 组件包 === -# 先创建脚本目录和脚本文件 mkdir -p scripts cat > scripts/postinstall <<'EOF' @@ -116,7 +103,6 @@ EOF chmod +x scripts/postinstall -# 构建 certs 组件包,增加 --scripts 参数指定 postinstall pkgbuild \ --root "${CERTS_SOURCE}" \ --identifier "${IDENTIFIER}.certs" \ @@ -125,28 +111,15 @@ pkgbuild \ --scripts scripts \ build_pkg_temp/${APP_NAME}-certs.pkg -# === 组合产品包 === -echo "🏗️ 组合最终安装包..." productbuild \ --package build_pkg_temp/${APP_NAME}-component.pkg \ --package build_pkg_temp/${APP_NAME}-certs.pkg \ "${PKG_NAME}" -echo "✅ 生成安装包完成:${PKG_NAME}" - -# === 可选:打包成 DMG === -# 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}" +echo "PKG package created: ${PKG_NAME}" rm -rf build_pkg_temp scripts ${APP_BUNDLE} -echo "🎉 所有打包完成:" -echo " ✔️ 应用:${APP_BUNDLE}" -echo " ✔️ 安装包:${PKG_NAME}" -# echo " ✔️ 镜像包(可选):${DMG_NAME}" \ No newline at end of file +echo "PKG package created successfully." +echo "package ${APP_BUNDLE}" +echo "installer ${PKG_NAME}" \ No newline at end of file diff --git a/scripts/windows/nsis_script.nsi b/scripts/windows/nsis_script.nsi index ce7be8a..5b7b0ac 100644 --- a/scripts/windows/nsis_script.nsi +++ b/scripts/windows/nsis_script.nsi @@ -10,7 +10,7 @@ !define UNINSTALL_REG_KEY "CrossDesk" ; ðװͼ· -!define MUI_ICON "${__FILEDIR__}\..\..\icons\crossdesk.ico" +!define MUI_ICON "${__FILEDIR__}\..\..\icons\windows\crossdesk.ico" ; ֤· !define CERT_FILE "${__FILEDIR__}\..\..\certs\crossdesk.cn_root.crt" diff --git a/xmake.lua b/xmake.lua index ded7e91..0a39321 100644 --- a/xmake.lua +++ b/xmake.lua @@ -141,11 +141,4 @@ target("single_window") target("crossdesk") set_kind("binary") add_deps("rd_log", "common", "single_window") - if is_os("windows") then - add_files("icons/app.rc") - elseif is_os("macosx") then - -- add_rules("xcode.application") - -- add_files("Info.plist") - elseif is_os("linux") then - end add_files("src/gui/main.cpp") \ No newline at end of file