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.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.AutoSize = false;
|
||||
infoLabel.Width = 300;
|
||||
|
||||
17
MainForm.cs
17
MainForm.cs
@@ -484,6 +484,23 @@ namespace AppStore
|
||||
};
|
||||
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)
|
||||
{
|
||||
|
||||
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