mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-07 00:20:43 +08:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d54bd4c353 | ||
|
|
24198b2e09 | ||
|
|
0a0ef24497 | ||
|
|
96ab4bc726 | ||
|
|
be87aaa0e6 | ||
|
|
e8bef7e396 | ||
|
|
7f06c9b6b1 |
@@ -50,7 +50,7 @@ namespace AppStore
|
|||||||
|
|
||||||
// 初始化并添加应用信息
|
// 初始化并添加应用信息
|
||||||
infoLabel = new Label();
|
infoLabel = new Label();
|
||||||
infoLabel.Text = "kortapp-z\n版本: 1.0.7\n作者: zs-yg\n一个简单、开源的应用商店\nkortapp-z是完全免费\n基于.NET8和C/C++的软件";
|
infoLabel.Text = "kortapp-z\n版本: 1.0.8\n作者: zs-yg\n一个简单、开源的应用商店\nkortapp-z是完全免费\n基于.NET8和C/C++的软件";
|
||||||
infoLabel.Font = new Font("Microsoft YaHei", 12);
|
infoLabel.Font = new Font("Microsoft YaHei", 12);
|
||||||
infoLabel.AutoSize = false;
|
infoLabel.AutoSize = false;
|
||||||
infoLabel.Width = 300;
|
infoLabel.Width = 300;
|
||||||
|
|||||||
17
MainForm.cs
17
MainForm.cs
@@ -484,6 +484,23 @@ namespace AppStore
|
|||||||
};
|
};
|
||||||
flowPanel.Controls.Add(videoCompressorCard);
|
flowPanel.Controls.Add(videoCompressorCard);
|
||||||
|
|
||||||
|
// 计算器工具卡片
|
||||||
|
var calculatorCard = new CalculatorToolCard();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string iconPath = Path.Combine(Application.StartupPath, "img", "resource", "png", "Calculator.png");
|
||||||
|
if (File.Exists(iconPath))
|
||||||
|
{
|
||||||
|
calculatorCard.ToolIcon = Image.FromFile(iconPath);
|
||||||
|
}
|
||||||
|
calculatorCard.UpdateDisplay();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.LogError("加载计算器图标失败", ex);
|
||||||
|
}
|
||||||
|
flowPanel.Controls.Add(calculatorCard);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
BIN
img/resource/png/Calculator.png
Normal file
BIN
img/resource/png/Calculator.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 604 KiB |
64
inno/innosetup_x64.iss
Normal file
64
inno/innosetup_x64.iss
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
; 脚本由 Inno Setup 脚本向导生成。
|
||||||
|
; 有关创建 Inno Setup 脚本文件的详细信息,请参阅帮助文档!
|
||||||
|
|
||||||
|
#define MyAppName "kortapp-z"
|
||||||
|
#define MyAppVersion "1.0.8"
|
||||||
|
#define MyAppPublisher "zsyg"
|
||||||
|
#define MyAppURL "https://github.com/zs-yg/kortapp-z"
|
||||||
|
#define MyAppExeName "kortapp.exe"
|
||||||
|
#define MyAppAssocName MyAppName + ""
|
||||||
|
#define MyAppAssocExt ".exe"
|
||||||
|
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
; 注意:AppId 的值唯一标识此应用程序。不要在其他应用程序的安装程序中使用相同的 AppId 值。
|
||||||
|
; (若要生成新的 GUID,请在 IDE 中单击 "工具|生成 GUID"。)
|
||||||
|
AppId={{8020EC01-6133-40BB-8B8B-0EB71E49696C}
|
||||||
|
AppName={#MyAppName}
|
||||||
|
AppVersion={#MyAppVersion}
|
||||||
|
;AppVerName={#MyAppName} {#MyAppVersion}
|
||||||
|
AppPublisher={#MyAppPublisher}
|
||||||
|
AppPublisherURL={#MyAppURL}
|
||||||
|
AppSupportURL={#MyAppURL}
|
||||||
|
AppUpdatesURL={#MyAppURL}
|
||||||
|
DefaultDirName={autopf}\{#MyAppName}
|
||||||
|
UninstallDisplayIcon={app}\{#MyAppExeName}
|
||||||
|
; "ArchitecturesAllowed=x64compatible" 指定安装程序无法运行
|
||||||
|
; 除 Arm 上的 x64 和 Windows 11 之外的任何平台上。
|
||||||
|
ArchitecturesAllowed=x64compatible
|
||||||
|
; "ArchitecturesInstallIn64BitMode=x64compatible" 要求
|
||||||
|
; 安装可以在 x64 或 Arm 上的 Windows 11 上以“64 位模式”完成,
|
||||||
|
; 这意味着它应该使用本机 64 位 Program Files 目录和
|
||||||
|
; 注册表的 64 位视图。
|
||||||
|
ArchitecturesInstallIn64BitMode=x64compatible
|
||||||
|
ChangesAssociations=yes
|
||||||
|
DisableProgramGroupPage=yes
|
||||||
|
LicenseFile=C:\Users\Administrator\Downloads\LICENSE.txt
|
||||||
|
; 取消注释以下行以在非管理安装模式下运行 (仅为当前用户安装)。
|
||||||
|
;PrivilegesRequired=lowest
|
||||||
|
OutputDir=D:\C#\kortapp-z_Release\setup
|
||||||
|
OutputBaseFilename=kortapp-z_setup_x64
|
||||||
|
SolidCompression=yes
|
||||||
|
WizardStyle=modern
|
||||||
|
|
||||||
|
[Tasks]
|
||||||
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
Source: "D:\C#\kortapp-z_Release\x64_inno\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Source: "D:\C#\kortapp-z_Release\x64_inno\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||||
|
; 注意:不要在任何共享系统文件上使用 "Flags: ignoreversion"
|
||||||
|
|
||||||
|
[Registry]
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||||
|
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||||
|
|
||||||
|
[Run]
|
||||||
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||||
|
|
||||||
56
inno/innosetup_x86.iss
Normal file
56
inno/innosetup_x86.iss
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
; 脚本由 Inno Setup 脚本向导生成。
|
||||||
|
; 有关创建 Inno Setup 脚本文件的详细信息,请参阅帮助文档!
|
||||||
|
|
||||||
|
#define MyAppName "kortapp-z"
|
||||||
|
#define MyAppVersion "1.0.8"
|
||||||
|
#define MyAppPublisher "zsyg"
|
||||||
|
#define MyAppURL "https://github.com/zs-yg/kortapp-z"
|
||||||
|
#define MyAppExeName "kortapp.exe"
|
||||||
|
#define MyAppAssocName MyAppName + ""
|
||||||
|
#define MyAppAssocExt ".exe"
|
||||||
|
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
; 注意:AppId 的值唯一标识此应用程序。不要在其他应用程序的安装程序中使用相同的 AppId 值。
|
||||||
|
; (若要生成新的 GUID,请在 IDE 中单击 "工具|生成 GUID"。)
|
||||||
|
AppId={{BF1944C3-CD0C-4119-A340-49C54961D48B}
|
||||||
|
AppName={#MyAppName}
|
||||||
|
AppVersion={#MyAppVersion}
|
||||||
|
;AppVerName={#MyAppName} {#MyAppVersion}
|
||||||
|
AppPublisher={#MyAppPublisher}
|
||||||
|
AppPublisherURL={#MyAppURL}
|
||||||
|
AppSupportURL={#MyAppURL}
|
||||||
|
AppUpdatesURL={#MyAppURL}
|
||||||
|
DefaultDirName={autopf}\{#MyAppName}
|
||||||
|
UninstallDisplayIcon={app}\{#MyAppExeName}
|
||||||
|
ChangesAssociations=yes
|
||||||
|
DisableProgramGroupPage=yes
|
||||||
|
LicenseFile=C:\Users\Administrator\Downloads\LICENSE.txt
|
||||||
|
; 取消注释以下行以在非管理安装模式下运行 (仅为当前用户安装)。
|
||||||
|
;PrivilegesRequired=lowest
|
||||||
|
OutputDir=D:\C#\kortapp-z_Release\setup
|
||||||
|
OutputBaseFilename=kortapp-z_setup_x86
|
||||||
|
SolidCompression=yes
|
||||||
|
WizardStyle=modern
|
||||||
|
|
||||||
|
[Tasks]
|
||||||
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
Source: "D:\C#\kortapp-z_Release\x86_inno\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Source: "D:\C#\kortapp-z_Release\x86_inno\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||||
|
; 注意:不要在任何共享系统文件上使用 "Flags: ignoreversion"
|
||||||
|
|
||||||
|
[Registry]
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||||
|
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||||
|
|
||||||
|
[Run]
|
||||||
|
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||||
|
|
||||||
34
tools/Calculator.cs
Normal file
34
tools/Calculator.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace AppStore
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 提供基本数学运算功能的工具类
|
||||||
|
/// </summary>
|
||||||
|
public static class Calculator
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 加法运算
|
||||||
|
/// </summary>
|
||||||
|
public static double Add(double a, double b) => a + b;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 减法运算
|
||||||
|
/// </summary>
|
||||||
|
public static double Subtract(double a, double b) => a - b;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 乘法运算
|
||||||
|
/// </summary>
|
||||||
|
public static double Multiply(double a, double b) => a * b;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 除法运算
|
||||||
|
/// </summary>
|
||||||
|
public static double Divide(double a, double b)
|
||||||
|
{
|
||||||
|
if (b == 0) throw new DivideByZeroException("除数不能为零");
|
||||||
|
return a / b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
118
tools/CalculatorForm.cs
Normal file
118
tools/CalculatorForm.cs
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using AppStore;
|
||||||
|
|
||||||
|
namespace AppStore
|
||||||
|
{
|
||||||
|
public class CalculatorForm : Form
|
||||||
|
{
|
||||||
|
private TextBox display = new TextBox();
|
||||||
|
private double firstNumber = 0;
|
||||||
|
private string operation = "";
|
||||||
|
|
||||||
|
public CalculatorForm()
|
||||||
|
{
|
||||||
|
this.Text = "计算器";
|
||||||
|
this.Size = new Size(300, 400);
|
||||||
|
this.StartPosition = FormStartPosition.CenterScreen;
|
||||||
|
CreateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateControls()
|
||||||
|
{
|
||||||
|
// 显示框
|
||||||
|
display = new TextBox();
|
||||||
|
display.ReadOnly = true;
|
||||||
|
display.TextAlign = HorizontalAlignment.Right;
|
||||||
|
display.Font = new Font("Microsoft YaHei", 14);
|
||||||
|
display.Size = new Size(260, 40);
|
||||||
|
display.Location = new Point(20, 20);
|
||||||
|
this.Controls.Add(display);
|
||||||
|
|
||||||
|
// 按钮布局
|
||||||
|
string[] buttonLabels = {
|
||||||
|
"7", "8", "9", "/",
|
||||||
|
"4", "5", "6", "*",
|
||||||
|
"1", "2", "3", "-",
|
||||||
|
"0", ".", "=", "+"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < buttonLabels.Length; i++)
|
||||||
|
{
|
||||||
|
var btn = new Button();
|
||||||
|
btn.Text = buttonLabels[i];
|
||||||
|
btn.Size = new Size(60, 50);
|
||||||
|
btn.Location = new Point(20 + (i % 4) * 65, 70 + (i / 4) * 55);
|
||||||
|
btn.Font = new Font("Microsoft YaHei", 12);
|
||||||
|
btn.Click += ButtonClickHandler;
|
||||||
|
this.Controls.Add(btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清除按钮
|
||||||
|
var clearBtn = new Button();
|
||||||
|
clearBtn.Text = "C";
|
||||||
|
clearBtn.Size = new Size(260, 40);
|
||||||
|
clearBtn.Location = new Point(20, 300);
|
||||||
|
clearBtn.Font = new Font("Microsoft YaHei", 12);
|
||||||
|
clearBtn.Click += (s, e) => {
|
||||||
|
display.Text = "";
|
||||||
|
firstNumber = 0;
|
||||||
|
operation = "";
|
||||||
|
};
|
||||||
|
this.Controls.Add(clearBtn);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonClickHandler(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var button = sender as Button;
|
||||||
|
if (button == null) return;
|
||||||
|
|
||||||
|
switch (button.Text)
|
||||||
|
{
|
||||||
|
case "+":
|
||||||
|
case "-":
|
||||||
|
case "*":
|
||||||
|
case "/":
|
||||||
|
if (!string.IsNullOrEmpty(display.Text))
|
||||||
|
{
|
||||||
|
firstNumber = double.Parse(display.Text);
|
||||||
|
operation = button.Text;
|
||||||
|
display.Text = "";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "=":
|
||||||
|
if (!string.IsNullOrEmpty(operation) && !string.IsNullOrEmpty(display.Text))
|
||||||
|
{
|
||||||
|
double secondNumber = double.Parse(display.Text);
|
||||||
|
double result = 0;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
result = operation switch
|
||||||
|
{
|
||||||
|
"+" => AppStore.Calculator.Add(firstNumber, secondNumber),
|
||||||
|
"-" => AppStore.Calculator.Subtract(firstNumber, secondNumber),
|
||||||
|
"*" => AppStore.Calculator.Multiply(firstNumber, secondNumber),
|
||||||
|
"/" => AppStore.Calculator.Divide(firstNumber, secondNumber),
|
||||||
|
_ => 0
|
||||||
|
};
|
||||||
|
|
||||||
|
display.Text = result.ToString();
|
||||||
|
}
|
||||||
|
catch (DivideByZeroException)
|
||||||
|
{
|
||||||
|
MessageBox.Show("除数不能为零", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
operation = "";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
display.Text += button.Text;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
tools/CalculatorToolCard.cs
Normal file
38
tools/CalculatorToolCard.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AppStore
|
||||||
|
{
|
||||||
|
public class CalculatorToolCard : ToolCard
|
||||||
|
{
|
||||||
|
public CalculatorToolCard()
|
||||||
|
{
|
||||||
|
ToolName = "计算器";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string iconPath = Path.Combine(Application.StartupPath, "img", "resource", "png", "Calculator.png");
|
||||||
|
if (File.Exists(iconPath))
|
||||||
|
{
|
||||||
|
ToolIcon = Image.FromFile(iconPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ToolIcon = SystemIcons.Application.ToBitmap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
ToolIcon = SystemIcons.Application.ToBitmap();
|
||||||
|
}
|
||||||
|
this.ToolCardClicked += OnCalculatorCardClicked;
|
||||||
|
UpdateDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCalculatorCardClicked(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var calculatorForm = new CalculatorForm();
|
||||||
|
calculatorForm.ShowDialog();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user