qianshipoi.FlowLauncher.Plugin.S3 1.0.4

dotnet add package qianshipoi.FlowLauncher.Plugin.S3 --version 1.0.4
                    
NuGet\Install-Package qianshipoi.FlowLauncher.Plugin.S3 -Version 1.0.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="qianshipoi.FlowLauncher.Plugin.S3" Version="1.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="qianshipoi.FlowLauncher.Plugin.S3" Version="1.0.4" />
                    
Directory.Packages.props
<PackageReference Include="qianshipoi.FlowLauncher.Plugin.S3" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add qianshipoi.FlowLauncher.Plugin.S3 --version 1.0.4
                    
#r "nuget: qianshipoi.FlowLauncher.Plugin.S3, 1.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package qianshipoi.FlowLauncher.Plugin.S3@1.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=qianshipoi.FlowLauncher.Plugin.S3&version=1.0.4
                    
Install as a Cake Addin
#tool nuget:?package=qianshipoi.FlowLauncher.Plugin.S3&version=1.0.4
                    
Install as a Cake Tool

FlowLauncher.Plugins

一套自用的 Flow Launcher 插件集合。

每个插件都是自包含的独立工程:查询分发(Flow 薄壳)、业务实现与其依赖同处一个项目,不再有跨插件共享层。

插件总览

关键字 插件 说明
tool Toolbox 工具合集:GUID、JSON 编辑器、文件哈希、时间戳、编码转换、密码生成、进制转换、JWT、Cron
kp PortKiller 查询端口占用进程并结束进程,带历史记录
vn VarName 中文翻译为变量名,生成 5 种命名规范,SQLite 缓存
pwd PasswordManager 本地密码管理:SQLCipher 整库加密 + DPAPI 字段级加密
oss AliyunOss 阿里云 OSS 文件上传 / 下载(ossd 下载、ossu 上传)
s3 S3 S3 兼容对象存储多配置浏览 / 传输 / 元数据编辑(s3d、s3u、s3b、s3p)
dir OpenDirectory 解析文件 / 文件夹路径并打开所在目录
asr SpeechToText 语音转文字,基于 ASR 模型实时识别并粘贴结果

环境要求

项目结构

FlowLauncher.Plugins/
├── src/
│   └── FlowLauncher.Plugin.*/        # Flow Launcher 插件(8 个,各自自包含)
│       ├── Main.cs                   # 查询分发 / FL API 适配
│       ├── Services/ ViewModels/ Views/  # 业务实现(服务、VM、WPF 窗口与页面)
│       ├── plugin.json               # 插件元数据(版本唯一来源)
│       └── favicon.ico
├── tests/                            # xUnit 单元测试与 Docker 集成测试
├── scripts/                          # 构建 / 发布 / 联调脚本(PowerShell)
├── Directory.Build.targets           # 发布目录版本后缀约定(对所有插件生效)
└── FlowLauncher.Plugins.slnx         # 解决方案

构建与测试

# 还原 + 构建整个解决方案
dotnet build FlowLauncher.Plugins.slnx

# 构建单个插件
dotnet build src/FlowLauncher.Plugin.Toolbox/FlowLauncher.Plugin.Toolbox.csproj

# 运行全部单元测试
dotnet test FlowLauncher.Plugins.slnx

# 运行单个测试项目
dotnet test tests/Toolbox.UnitTest/Toolbox.UnitTest.csproj

# 运行 S3 的 RustFS Docker 集成测试(需要 Docker Desktop)
$env:S3_RUN_DOCKER_TESTS = '1'
dotnet test tests/S3.IntegrationTest/S3.IntegrationTest.csproj

单元测试基于 xUnit(Microsoft.NET.Test.Sdk + xunit),每个测试项目直接引用对应插件工程:

测试项目 覆盖模块
tests/Toolbox.UnitTest 工具箱各纯函数服务(GUID、哈希、时间戳、编解码、进制、JWT、Cron)
tests/VarName.UnitTest 命名规范转换与缓存
tests/PasswordManager.UnitTest 加密存储与查询
tests/AliyunOss.UnitTest OSS 配置与结果构建
tests/SpeechToText.UnitTest ASR 调用与文本处理
tests/S3.UnitTest S3 多配置、预设、密钥与元数据 Key
tests/S3.IntegrationTest Testcontainers + RustFS 的 S3 传输与元数据集成验证

打包与发布

每个插件的发布由 scripts/publish-<plugin>.ps1 驱动,本质是一行:

dotnet publish "$PSScriptRoot/../src/FlowLauncher.Plugin.Toolbox/FlowLauncher.Plugin.Toolbox.csproj" -p:PublishProfile=FolderProfile

发布目录命名由根目录 Directory.Build.targets 统一约定:

  • 读取 plugin.json 中的 Version(版本只需维护这一处);
  • 在 FolderProfile 指定的 PublishDir 后拼接 -<Version>,例如 ...\Plugins\FlowLauncher.Plugin.Toolbox-1.0.0\;
  • 复制前清空目标目录,避免旧依赖 DLL 残留。

注意:.pubxml 发布配置按 .gitignore 约定不入库,需要在本地把 FolderProfile 的 PublishDir 指向 Flow Launcher 的 Plugins 目录。

Flow Launcher 运行时会锁定插件 DLL 导致发布失败,可先重启宿主:

.\scripts\restart-flowlauncher.ps1                  # 重启
.\scripts\restart-flowlauncher.ps1 -Action Stop      # 仅停止
.\scripts\restart-flowlauncher.ps1 -Action Start     # 仅启动

脚本清单

脚本 用途
publish-<plugin>.ps1 发布指定插件(varname / toolbox / portkiller / passwordmanager / aliyunoss / s3 / speechtotext / opendirectory)
restart-flowlauncher.ps1 停止 / 启动 Flow Launcher,解除插件 DLL 文件锁
generate-icons.ps1 基于文字(emoji)批量生成各插件的 .ico 图标
play-to-virtual-audio.ps1 把音频播放到 VB-Audio Virtual Cable 虚拟声卡,用于 ASR 联调
PlayAudio/ 上述脚本使用的 NAudio 播放器控制台程序

关键第三方依赖

包 用途
Flow.Launcher.Plugin 5.1.0 Flow Launcher 插件 SDK
CommunityToolkit.Mvvm 8.4.0 插件设置面板 MVVM
iNKORE.UI.WPF.Modern 0.10.2.1 Fluent 风格 UI 组件
Microsoft.Data.Sqlite + SQLitePCLRaw.bundle_e_sqlcipher VarName 缓存 / PasswordManager 加密库
AlibabaCloud.OSS.V2 阿里云 OSS SDK
AWSSDK.S3 4.0.104.4 通用 S3 兼容存储 SDK
Testcontainers 4.16.0 RustFS Docker 集成测试
OpenAI 2.8.0 VarName 候选词生成
Microsoft.Windows.CsWin32 PortKiller 进程信息 P/Invoke
Cronos Cron 表达式解析

许可证

MIT

Product Compatible and additional computed target framework versions.
.NET net9.0-windows7.0 is compatible.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.4 106 10/16/2026