Added export and import of plugin archives (#885)
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions

Co-authored-by: Thorsten Sommer <SommerEngineering@users.noreply.github.com>
This commit is contained in:
nilskruthoffandThorsten Sommer authored and GitHub committed 2026-08-06 10:42:20 +02:00
1 parent e7407ce60a
commit 8a9e6aeb87
43 files changed
+2041 -256

No files matched your search

@@ -1,10 +1,12 @@
# Enterprise Configuration ZIP Backslashes
# Plugin Archive ZIP Backslashes
- Status: Active
- Introduced: 2026-07-09
- Remove after: when Microsoft fixes dotnet/runtime#27620 and dotnet/runtime#41914
- Code references:
- `app/MindWork AI Studio/Tools/PluginSystem/PluginArchive.cs`
- `app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Download.cs`
- `app/MindWork AI Studio/Tools/Services/AssistantPluginInstallService.cs`
## User Impact
@@ -12,9 +14,11 @@ Some enterprise administrators create configuration plugin ZIP files on Windows.
Without this shim, Unix systems extract those entries as files whose names contain literal backslash characters. The plugin loader then cannot find `plugin.lua`, so the enterprise configuration plugin is not activated.
The same applies to plugin archives that users import from their disk. Archives created by AI Studio itself always use forward slashes. However, users may import archives that were packaged by hand or with another tool on Windows, so the import path needs the same tolerance. Otherwise, importing such an archive fails because `plugin.lua` cannot be found.
## Compatibility Behavior
AI Studio manually extracts downloaded enterprise configuration plugin ZIP files. During extraction, entry names are normalized so both `/` and `\` are treated as archive path separators.
AI Studio manually extracts enterprise configuration plugin archives and plugin archives imported by users. During extraction, entry names are normalized so both `/` and `\` are treated as archive path separators.
The extraction still preserves the archive structure and validates each entry before writing it to disk. Rooted paths, drive-qualified paths, and parent-directory traversal paths are rejected.
@@ -23,6 +27,5 @@ This works around the behavior described in dotnet/runtime#27620. A related upst
## Removal Checklist
- Confirm supported .NET runtimes and administrator packaging guidance no longer require accepting backslashes in enterprise ZIP entry names.
- Replace the manual enterprise configuration plugin ZIP extraction with `ZipFile.ExtractToDirectory(...)`.
- Remove `ExtractConfigPluginArchive(...)`, `NormalizeConfigPluginZipEntryName(...)`, and `GetConfigPluginZipEntryDestinationPath(...)`.
- Replace `PluginArchive.Extract(...)` with `ZipFile.ExtractToDirectory(...)`.
- Update this document's status to `Removed`.
+1 -1
View File
@@ -23,7 +23,7 @@ Every compatibility shim must have:
- Status: Active
- Introduced: YYYY-MM-DD
- Remove after: YYYY-MM-DD
- Remove after: YYYY-MM-DD or a condition e.g., someone is solving an issue on a dependency
- Code references:
- path/to/file.cs