diff --git a/AppCard.cs b/AppCard.cs index 12c96a2..5ddbb60 100644 --- a/AppCard.cs +++ b/AppCard.cs @@ -15,6 +15,7 @@ namespace AppStore private Label nameLabel; private Panel namePanel; private Button downloadBtn; + private ToolTip? toolTip; private Color borderColor = SystemColors.ControlDark; private static readonly ConcurrentDictionary PathCache = new ConcurrentDictionary(); @@ -22,6 +23,7 @@ namespace AppStore public string AppName { get; set; } = string.Empty; public Image AppIcon { get; set; } = SystemIcons.Application.ToBitmap(); public string DownloadUrl { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; public bool ShowDownloadButton { get; set; } = true; public AppCard() @@ -126,6 +128,13 @@ namespace AppStore this.Controls.Add(namePanel); } + // 初始化ToolTip控件 + toolTip = new ToolTip(); + toolTip.AutoPopDelay = 5000; + toolTip.InitialDelay = 500; + toolTip.ReshowDelay = 500; + toolTip.ShowAlways = true; + // 下载按钮 - 添加null检查 if (downloadBtn != null) { @@ -144,6 +153,10 @@ namespace AppStore if (downloadBtn != null) { downloadBtn.BackColor = Color.FromArgb(0, 150, 255); + if (!string.IsNullOrEmpty(Description)) + { + toolTip.SetToolTip(downloadBtn, Description); + } } }; @@ -373,7 +386,7 @@ namespace AppStore try { var safePath = path ?? CalculatePathFallback(Width, Height, 10); - // 更严格的null检查,包括路径和控件状态 + // 更严格的null检查,包括路径和控件状态 if (safePath != null && safePath.PointCount > 0 && this.IsHandleCreated && @@ -450,7 +463,7 @@ namespace AppStore try { // 更严格的null检查 - // 更严格的null检查,包括DownloadManager.Instance和其方法 + // 更严格的null检查,包括DownloadManager.Instance和其方法 // 全面的null和状态检查 var downloadManager = DownloadManager.Instance; if (sender == null || e == null || diff --git a/DownloadManager.cs b/DownloadManager.cs index 0c39fa4..beaf41f 100644 --- a/DownloadManager.cs +++ b/DownloadManager.cs @@ -59,7 +59,7 @@ namespace AppStore } catch { - // 忽略所有异常,使用默认值 + // 忽略所有异常,使用默认值 } return result; @@ -115,7 +115,7 @@ namespace AppStore Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads"); - Logger.LogError($"下载路径{downloadsDir}不可用,将使用默认路径: {defaultPath}", ex); + Logger.LogError($"下载路径{downloadsDir}不可用,将使用默认路径: {defaultPath}", ex); downloadsDir = defaultPath; Directory.CreateDirectory(downloadsDir); } diff --git a/README.md b/README.md index 622d448..70d456f 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,114 @@ -# Kortapp-z - Windows应用商店 --主张软件开源、免费,拒绝广告 - -小立一个flag:从不接受广告,不停更新 - -## 项目开源行为 - -1. 项目代码开源,允许任何人使用、修改、分发、商用,但必须注明原作者。 -2. 项目图标、截图等资源开源,允许任何人使用、修改、分发、商用,但必须注明原作者。 -3. 项目的任何衍生品(包括但不限于网站、APP、插件等)必须遵循以上开源协议。 -4. 项目不接受任何形式的广告,不得在任何地方投放广告。 -5. 项目不接受任何形式的捐赠、赞助 -6. 项目可以进行PR,欢迎任何形式的PR,不提交issue也可以 -7. 本项目可以PR一些你自己的项目,如果star数量不到1k,都会被删除 - -## 项目简介 - -一个简单的Windows应用商店应用,提供软件下载和管理功能。 -提供软件管理、下载管理、内置工具使用等功能 - -## 功能特点 - -- 简洁的软件下载界面 -- 下载进度管理 -- 支持后台下载 -- 美观的应用卡片展示 -- 功能化、结构化的代码处理 - -## 构建与打包 - -### 系统要求 -- .NET 8.0 SDK -- Windows 10/11 - -### 打包指令 - - -#### 32位版本 -```bash -dotnet publish AppStore.csproj -c Release -r win-x86 --self-contained false /p:Optimize=true /p:DebugType=None -``` - -#### 64位版本 -```bash -dotnet publish AppStore.csproj -c Release -r win-x64 --self-contained false /p:Optimize=true /p:DebugType=None -``` - -打包后的可执行文件将包含指定的应用程序图标,输出路径为: -``` -bin\Release\net8.0-windows\[platform]\publish -``` - -### 高级选项 -- 使用`--self-contained false`生成框架依赖包(默认) -- 使用`/p:Optimize=true`启用代码优化(默认) -- 使用`/p:DebugType=None`禁用调试符号生成(默认) -- 添加`-p:PublishTrimmed=true`可减小包体积(实验性) - -## 项目结构 - -``` -kortapp-z/ -├── MainForm.cs # 主窗体逻辑 -├── DownloadManager.cs # 下载管理 -├── AppCard.cs # 应用卡片控件 -├── DownloadItem.cs # 下载项控件 -├── img/ # 图片资源 -│ ├── ico/ # 图标文件 -│ └── png/ # 应用截图 -└── resource/ # 资源文件 - └── aria2c.exe # 下载工具 -``` - -## 运行要求 - -- .NET 8.0运行时(如果使用框架依赖发布) -- Windows 10或更高版本 - -## 许可证 - -MIT License - -Copyright (c) 2025 zsyg - -## 其他网站 - -gitee镜像仓库:https://gitee.com/chr_super/kortapp-z (目前已经停止维护) -sourceforge镜像仓库:https://sourceforge.net/projects/kortapp-z/(仅镜像releases) - - -## 维护 - -由于gitee我没怎么用,而且操作麻烦,gitee镜像将不会继续同步,有懂得人可以帮我搞下镜像吗,qq: 3872006562,也可以b站直接私信,我会在readme中鸣谢的,谢谢各位 -由于和Daye发生了矛盾,所以windowscleaner将永远不上架,我要自己努力 -提示:由于github上传文件的限制,img/png/NET.png,请改名为.NET.png,否则程序可能出现无法预料的问题 - -每一个人都可以通过PR添加属于自己的合法软件 - -作者邮箱: -``` -3872006562@qq.com -``` - -作者qq号: -``` -3872006562 -``` - -qq群: -``` -1043867176 -``` - -b站账号: -``` -Zayisynth -``` +# Kortapp-z - Windows应用商店 --主张软件开源、免费,拒绝广告 + +小立一个flag:从不接受广告,不停更新 + +## 项目开源行为 + +1. 项目代码开源,允许任何人使用、修改、分发、商用,但必须注明原作者。 +2. 项目图标、截图等资源开源,允许任何人使用、修改、分发、商用,但必须注明原作者。 +3. 项目的任何衍生品(包括但不限于网站、APP、插件等)必须遵循以上开源协议。 +4. 项目不接受任何形式的广告,不得在任何地方投放广告。 +5. 项目不接受任何形式的捐赠、赞助 +6. 项目可以进行PR,欢迎任何形式的PR,不提交issue也可以 +7. 本项目可以PR一些你自己的项目,如果star数量不到1k,都会被删除 + +## 项目简介 + +一个简单的Windows应用商店应用,提供软件下载和管理功能。 +提供软件管理、下载管理、内置工具使用等功能 + +## 功能特点 + +- 简洁的软件下载界面 +- 下载进度管理 +- 支持后台下载 +- 美观的应用卡片展示 +- 功能化、结构化的代码处理 + +## 构建与打包 + +### 系统要求 +- .NET 8.0 SDK +- Windows 10/11 + +### 打包指令 + + +#### 32位版本 +```bash +dotnet publish AppStore.csproj -c Release -r win-x86 --self-contained false /p:Optimize=true /p:DebugType=None +``` + +#### 64位版本 +```bash +dotnet publish AppStore.csproj -c Release -r win-x64 --self-contained false /p:Optimize=true /p:DebugType=None +``` + +打包后的可执行文件将包含指定的应用程序图标,输出路径为: +``` +bin\Release\net8.0-windows\[platform]\publish +``` + +### 高级选项 +- 使用`--self-contained false`生成框架依赖包(默认) +- 使用`/p:Optimize=true`启用代码优化(默认) +- 使用`/p:DebugType=None`禁用调试符号生成(默认) +- 添加`-p:PublishTrimmed=true`可减小包体积(实验性) + +## 项目结构 + +``` +kortapp-z/ +├── MainForm.cs # 主窗体逻辑 +├── DownloadManager.cs # 下载管理 +├── AppCard.cs # 应用卡片控件 +├── DownloadItem.cs # 下载项控件 +├── img/ # 图片资源 +│ ├── ico/ # 图标文件 +│ └── png/ # 应用截图 +└── resource/ # 资源文件 + └── aria2c.exe # 下载工具 +``` + +## 运行要求 + +- .NET 8.0运行时(如果使用框架依赖发布) +- Windows 10或更高版本 + +## 许可证 + +MIT License + +Copyright (c) 2025 zsyg + +## 其他网站 + +gitee镜像仓库:https://gitee.com/chr_super/kortapp-z (目前已经停止维护) + +## 维护 + +由于gitee我没怎么用,而且操作麻烦,gitee镜像将不会继续同步,有懂得人可以帮我搞下镜像吗,qq: 3872006562,也可以b站直接私信,我会在readme中鸣谢的,谢谢各位 +由于和Daye发生了矛盾,所以windowscleaner将永远不上架,我要自己努力 +提示:由于github上传文件的限制,img/png/NET.png,请改名为.NET.png,否则程序可能出现无法预料的问题 + +每一个人都可以通过PR添加属于自己的合法软件 + +作者邮箱: +``` +3872006562@qq.com +``` + +作者qq号: +``` +3872006562 +``` + +qq群: +``` +1043867176 +``` + +b站账号: +``` +Zayisynth +``` diff --git a/SettingsForm.cs b/SettingsForm.cs index afa8bd5..0542e57 100644 --- a/SettingsForm.cs +++ b/SettingsForm.cs @@ -205,7 +205,7 @@ namespace AppStore var jsonData = JsonSerializer.Deserialize(jsonString); string customPath = jsonData.GetProperty("DownloadPath").GetString() ?? ""; - // 如果自定义路径有效则显示,否则显示默认路径 + // 如果自定义路径有效则显示,否则显示默认路径 txtBox.Text = !string.IsNullOrWhiteSpace(customPath) ? customPath : defaultPath; } else diff --git a/TXT/Build.txt b/TXT/Build.txt index d699f3e..739723e 100644 --- a/TXT/Build.txt +++ b/TXT/Build.txt @@ -1,4 +1,4 @@ -首先,如果希望编译程序,那么必须安装.NET8.0 SDK +首先,如果希望编译程序,那么必须安装.NET8.0 SDK 下载链接:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-8.0.411-windows-x64-installer 使用一下指令编译 diff --git a/TXT/Run.txt b/TXT/Run.txt index 4f533bd..b70e4a9 100644 --- a/TXT/Run.txt +++ b/TXT/Run.txt @@ -1,4 +1,4 @@ -如果希望运行,那么必须安装.NET8.0 SDK +如果希望运行,那么必须安装.NET8.0 SDK 下载链接:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-8.0.411-windows-x64-installer diff --git a/ThemeManager.cs b/ThemeManager.cs index 00464b9..1fd5ce1 100644 --- a/ThemeManager.cs +++ b/ThemeManager.cs @@ -32,7 +32,7 @@ namespace AppStore } catch { - // 忽略错误,使用默认主题 + // 忽略错误,使用默认主题 } return ThemeMode.Light; } diff --git a/log_cleaner.cpp b/log_cleaner.cpp index 1e36ebd..4eb9f3f 100644 --- a/log_cleaner.cpp +++ b/log_cleaner.cpp @@ -44,7 +44,7 @@ int main() { } } } else { - std::cout << "日志目录不存在,无需清理" << std::endl; + std::cout << "日志目录不存在,无需清理" << std::endl; return 0; }